在 Python 中对数字的数字求和
Sum the digits of a number in Python
对数字的数字求和:
- 使用
str()
该类将数字转换为字符串。 - 使用生成器表达式迭代字符串。
- 在每次迭代中,将数字转换为带有
int()
类的数字。 - 将生成器对象传递给
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
循环。
对数字的数字求和:
- 为总和初始化一个变量并将其设置为
0
。 - 当数字变量为真时,使用
while
循环进行迭代。 - 获取数字最右边的数字
num % 10
并将其添加到 sum 变量。 - 通过除以 删除最右边的数字
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
返回0
,while
循环停止迭代。
主程序
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