给定一个三位数,求它的各位数字之和。 Python

Given a three-digit number, find the sum of its digits. Python

这是一个简单的 python 练习,代码已经可以运行,但我想知道,如果余数 10 % 10 为零,我怎样才能将给定数字除以零并从中得到一些东西它不是一个错误?这可能是微不足道的,但我只是无法意识到发生了什么。

number = int(input())
a = number // 100
b = number // 10 % 10
c = number % 10
print(a + b + c)

好吧,在该示例中,您实际上并没有在任何地方除以零。如果您指的是 b = number // 10 % 10 行,那么真正发生的是该数字除以 10,并将其结果输入模数,即“除以 10 后的余数”。我认为您理解了该行错误的操作顺序,这使您相信可能会被 0 除。不能。

使用混合运算符时使用括号很重要,因为运算符优先级会导致意外结果。在 Python 中,% 和 // 具有相同的优先级,因此表达式从左到右求值。有关语言特定优先级的更多详细信息,请参阅 6.17 in the Python Documentation

在您上面的代码中,由于它是从左到右求值的,所以底除法将始终发生在模运算之前,因此不会发生 ZeroDivsionError。但是要回答您的问题,您始终可以使用 try and catch 块 来捕获 ZeroDivisionError 并自行处理。

number = int(input())
try:
  a = number // 100
  b = number // (10 % 10)
  c = number % 10
  print(a + b + c)
except ZeroDivisionError:
    print("Please enter another number that's not a multiple of 10.")
    number = int(input())