我目前正在尝试在字符串输入中获取一系列数字,然后将这些数字转换为总数以进行打印。在概念上这应该很简单,但我无法搞清楚。我搜索过Stack但找不到适合我当前问题的解决方案。
这是我目前的进展:
def main():
numbers= input("Enter a sequence of numbers with no spaces:")
numbers= list(numbers)
total= ""
for i in numbers:
total= total + i
print(total)
main()的
我的逻辑是将数字序列分解为一个列表,然后在循环中添加数字,然后生成总数。不幸的是,这只返回原始字符串,所以我决定把:
对于我的数字:
i= eval(i)
total= total + i
和
对于我的数字:
i= int(i)
total= total + i
这会返回一个错误,指出我需要是一个字符串,但这只会导致另一个连接。
有谁知道如何制作我正在寻找的东西?即“1234”= 10。
答案 0 :(得分:1)
字符串本身是可迭代的,因此您可以迭代它并将每个字符转换为int,然后使用sum来添加它们。
>>> numbers= input("Enter a sequence of numbers with no spaces:")
Enter a sequence of numbers with no spaces:1234567
>>> sum([int(i) for i in numbers])
28
或丢失外部[]
以使其成为生成器表达式。它可以以任何一种方式工作,但是对于像这样的小输入,可以说发生器开销可能超过其在内存使用方面的好处。
答案 1 :(得分:0)
没有必要将字符串转换为列表,因为它已经是可迭代的。相反,只需做这样的事情:
numbers = input(‘Enter numbers: ‘)
total = 0
for char in numbers:
total += int(char)
print(total)
这将遍历字符串中的每个字符,将其转换为整数,并将其添加到总数中。
答案 2 :(得分:0)
在这里再补充一个答案。如果您接受的字符串是逗号分隔的,那么如果它是python 2.7,这里是一个单行程序
sequence = map(int, input().split(','))
其他为python3,
sequence = list(map(int, input().split(',')))
我希望它能为已经给出的答案增加一些东西。