我在手机上输入这个,所以我将使用“y”而不是“yearString”。
if len(y) == 4:
x = int(y[3]) + int([2]) + int(y[1]) + int([0])
y = str(x)
if len(y) == 3:
x = int([2]) + int(y[1]) + int([0])
y = str(x)
if len(y) == 2:
x = int(y[1]) + int([0])
y = str(x)
answer = int(y)
看看如果总和有多个数字,稍后的 if 语句将如何处理它。现在让我们使用纯数学编写类似的代码:
x = int(yearString)
d3 = x // 1000
x %= 1000
d2 = x // 100
x %= 100
d1 = x // 10
d0 = x % 10
answer = d3 + d2 + d1 + d0
编辑:现在我已经考虑过了,我想我看到了你这样做的最佳方式。我不会为此编写完整的代码。
如果您使用模数运算符 10,您会拉出底部数字。然后,如果您使用整数除以 10,则删除底部数字。在 while 循环中执行此操作并继续执行此操作,直到所有数字都输出为止;在最后一次除以 10 后,该数字将为零。创建一个执行此操作的函数,并从 while 循环中调用它,直到总和小于 10(是单个数字)。
编辑:好的,我想我不妨写完整的代码:
y = int(yearString)
x = 0 # we will accumulate the sum in x
while y != 0:
x += y % 10 # add one digit
y //= 10 # discard one digit
if y == 0 and x > 10:
# We have pulled out all the digits from y, but x has
# multiple digits. Start over so we can sum the digits
# from x.
y = x
x = 0
answer = x