如何在没有空格的数字字符串中添加每个数字

时间:2017-10-16 02:42:11

标签: python python-3.x

我目前正在尝试在字符串输入中获取一系列数字,然后将这些数字转换为总数以进行打印。在概念上这应该很简单,但我无法搞清楚。我搜索过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。

3 个答案:

答案 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(',')))

我希望它能为已经给出的答案增加一些东西。