【发布时间】:2012-10-04 05:47:24
【问题描述】:
我正在尝试采用两位整数表示月份,通过将一位数中的每个字符拆分为一位数并将它们加在一起形成一个新数字。
例如如果 day 的值是整数 29,那么程序会将其转换为字符串并将它们拆分为“2”和“9”。然后程序会将 2 和 9 转换为整数并将它们加在一起等于 11。由于这仍然是一个两位数,因此程序将循环并将 1 和 1 相加,最终将打印的值为 2。根据下面的代码(主要是最后约 5 行),如果我输入 day=29,那么我不断得到的最终答案是 4,这是不正确的。有人可以帮我解决这个问题吗:
请注意,有人提到我没有重新输入 dayStringSum,我不小心删除了他们的帖子,完全不知道这意味着什么。
dayString = str(int(day))
# Turns value day into int
dayStringA = int(str(dayString[0]))
# If day=29 then this variable represents the 2...
dayStringB = int(str(dayString[1]))
# ...and this represents the 9
dayStringSum = (dayStringA + dayStringA)
while(dayStringSum >=10):
dayStringA = int(str(dayStringSum[0]))
# Since daystringsum is now 11, this code changes the value of daystringA into a new value of 1, likewise for below.
dayStringB = int(str(dayStringSum[1]))
print(dayStringSum)
【问题讨论】:
-
要获取两位数的组成位数,只需
for digit in str(day)即可。这都不是dayStringA, dayStringB -
然后你可以将数字与
day = sum(int(digit) for digit in str(day))相加。只需将其包装在一个循环中while day >= 10:重复求和,直到你得到一个数字。这是一条两条线。
标签: python string integer digits dayofmonth