【问题标题】:CS50 credit.py attempting to add the sum of an string by converting to integerCS50 credit.py 尝试通过转换为整数来添加字符串的总和
【发布时间】: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


【解决方案1】:

sum() 函数需要一个迭代器,而您却给它一个 integer。也许你正在尝试使用sum1 += int(doubled)。

【讨论】:

  • 谢谢!这么简单的事情花了我几个小时哈哈!我应该早点寻求帮助。你成就了我的一天
猜你喜欢
  • 2021-03-09
  • 2020-03-16
  • 1970-01-01
  • 2017-02-25
  • 1970-01-01
  • 2017-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多