在 Python 中对数字的数字求和

在 Python 中对数字的数字求和

Sum the digits of a number in Python

对数字的数字求和:

  1. 使用str()该类将数字转换为字符串。
  2. 使用生成器表达式迭代字符串。
  3. 在每次迭代中,将数字转换为带有int()类的数字。
  4. 将生成器对象传递给sum()函数。
主程序
num = 135 result_1 = sum(int(digit) for digit in str(num)) print(result_1) # 👉️ 9 # -------------------------------------------------- result_2 = sum(map(int, str(num))) print(result_2) # 👉️ 9 # --------------------------------------------------- # ✅ sum the digits of a number without converting to string result_3 = 0 while num: result_3 += num % 10 print(result_3) num = num // 10 print(result_3) # 👉️ 9

第一个示例使用str()类和生成器表达式对数字中的数字求和。

主程序
num = 135 result_1 = sum(int(digit) for digit in str(num)) print(result_1) # 👉️ 9

字符串是可迭代的而整数不是,所以我们必须将整数转换为字符串。

生成器表达式用于对每个元素执行一些操作,或者选择满足条件的元素子集。

在每次迭代中,我们将包裹在字符串中的数字转换为整数并返回结果。

最后一步是将生成器对象传递给sum()函数。

sum函数接受一个可迭代对象,从左到右对其项目求和并返回总数。

第二个示例使用map()函数而不是生成器表达式进行转换。

主程序
num = 135 result_2 = sum(map(int, str(num))) print(result_2) # 👉️ 9

map()函数将一个函数和一个可迭代对象作为参数,并使用可迭代对象的每个项目调用该函数。

map函数使用字符串中的每个数字调用int()该类,并返回一个map我们可以直接传递给该sum()函数的对象。

或者,您可以使用while循环。

对数字的数字求和:

  1. 为总和初始化一个变量并将其设置为0
  2. 当数字变量为真时,使用while循环进行迭代。
  3. 获取数字最右边的数字num % 10并将其添加到 sum 变量。
  4. 通过除以 删除最右边的数字10
主程序
num = 135 result = 0 while num: result += num % 10 num = num // 10 print(result) # 👉️ 9

当变量存储真值时,我们使用while循环进行迭代。num

0是一个假值,所以一旦num变量设置为0,就不再满足条件。

我们使用模%运算符来获取数字的最右边的数字。


模 (%)
运算符返回第一个值除以第二个值的余数。

主程序
print(135 % 10) # 👉️ 5 print(13 % 10) # 👉️ 3

一旦我们将result变量重新分配给它的当前值加上数字最右边的数字,我们就必须删除最右边的数字。

//我们可以使用带有
的底除法来删除数字的最右边的数字
10

主程序
print(135 // 10) # 👉️ 13 print(13 // 10) # 👉️ 1

整数除法/产生一个浮点数,而//整数除法产生一个整数。

floor()使用 floor 除法运算符的结果是对结果应用函数的数学除法。

最终1被 floor-divided by10返回0while
循环停止迭代。

主程序
num = 135 result = 0 while num: result += num % 10 num = num // 10 print(result) # 👉️ 9 print(num) # 👉️ 0
上面的代码片段num在每次迭代中重新分配变量的值,并最终将其设置为0.

如果您需要保留变量,请确保复制一份。

主程序
num = 135 # 👇️ make copy of num num_copy = num result = 0 while num_copy: result += num_copy % 10 num_copy = num_copy // 10 print(result) # 👉️ 9 print(num_copy) # 👉️ 0 print(num) # 👉️ 135

发表评论