【问题标题】:Wrong output for function that computes the sum of the digits in an integer计算整数中数字之和的函数的错误输出
【发布时间】:2013-03-07 22:02:29
【问题描述】:

我需要编写一个函数来计算并返回整数中数字的总和。

这是我的代码:

def main():
    number1=input("Enter a number: ")
    number=list(number1)
    i=0
    while len(number)!=i:
        numbers=[]
        x=int(number[i])
        numbers.append(x)
        number.remove(number[i])

print(numbers)
x=float(sum(numbers))
print(x)

main()

输出如下:

Enter a number: 123
[3]
3.0

我不确定为什么 1 和 2 不在列表中,也不用于计算总和...有什么建议吗?

【问题讨论】:

  • 已回答,但有一个小问题:将while len(number)!=i 更改为for i in len(number),然后去掉number.remove 部分。

标签: python function python-3.x


【解决方案1】:

你在循环中重新初始化numbers 。不要那样做,把它移到循环之外:

numbers=[]
while len(number)!=i:
    # ...

否则,您最终会重置每个数字的列表。

【讨论】:

  • 天哪,非常感谢!哈哈,多么愚蠢的错误。感谢您的关注。
【解决方案2】:

在尝试高级内容之前先学习基础知识对您有好处,但只是为了好玩,这里是有经验的 Python 编码人员解决此问题的方法:

def main():
    number1=input("Enter a number: ")  # for Python 2.x, need to use raw_input()
    return float(sum(int(ch) for ch in number1))

x = main()
print(x)

我们可以使用内置函数sum() 对数字进行求和,并在调用int() 时通过直接循环字符串的“生成器表达式”获得数字。

这只是您将很快在 Python 中学习的有趣内容的一种体验。 :-)

【讨论】:

  • @stevaha +1 但您应该使用 raw_input 而不是 input,这会导致 TypeError 'int object is not iterable' 异常。
  • 由于问题被标记为“python-3.x”,我没有使用raw_input(),这在 Python 3.x 中不可用。
【解决方案3】:

如果你对这种编程感兴趣,你也可以用更实用的方式来做。然后它看起来像这样:

def main():
    number1=input("Enter a number: ")  # for Python 2.x, need to use raw_input()
    return float(sum(map(int, number1))

x = main()
print(x)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-19
    • 2018-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多