【发布时间】:2021-06-18 00:54:11
【问题描述】:
有人可以为我的 sum1 变量指出正确的方向吗?
我正在尝试存储双倍变量中双倍数字的值。 在我看来,我执行的操作与我用来获取双变量的操作相同,但是当我尝试打印以进行调试时,这显然行不通。这是我第一次涉足python。 对于我一直在输入的卡:1234567890987 我理解错误,但我不知道如何修复它。我将不胜感激任何反馈或指示 感谢您的时间和精力
from cs50 import get_int, get_string
def main():
# get an integer from the user to ensure only int imputs
card = get_int("Card: ")
# convert the card into a string so it may be indexed to manipulate individual digits
card = str(card)
# check len to make sure its the correct amount of numbers that would be in a major credit card.
if len(card) < 13 or len(card) > 16:
print("invalid len")
exit(1)
# iterate over every other number in the card starting with the second to last digit
for i in range(len(card)-2, 0, -2):
doubled = (int(card[i]) *2)
#add the string values together
sum1 = sum(int(doubled))
print(sum1)
main()
终端显示:
Traceback (most recent call last):
File "/home/ubuntu/pset6/credit/credit.py", line 22, in <module>
main()
File "/home/ubuntu/pset6/credit/credit.py", line 20, in main
sum1 = sum(int(doubled))
TypeError: 'int' object is not iterable
【问题讨论】:
-
您收到错误是因为
int(doubled)是一个整数,并且 sum 需要一个可迭代对象。 -
也许像
sum1 = sum(int(card[i])*2 for i in range(len(card)-2, 0, -2))这样的东西会给你所追求的价值? -
谢谢@fuzzydrawings。你帮我防止更多的头发脱落:)
标签: python string integer cs50