2017-10-16 175 views
-1

我目前正在尝试在字符串输入中采取一系列数字,然后将这些数字转换为打印总数。在概念上这应该很容易,但我很难搞清楚。我搜索了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

试着让'total = 0'作为你的出发点。对于int而言,'+'操作是加法操作。对于字符串,“+”操作是串联,意味着将两个字符串连接成一个新字符串。所以你只是重新加入你刚刚分割的字符串。您还需要将'i'转换为int以添加到现有总数。 –

回答

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 

或失去外部[]使它成为一个生成器表达式。它可以以任何方式工作,但是对于像这样的小输入来说,发生器开销可能会超过内存使用方面的好处。

+0

谢谢你的作品非常漂亮,我绝对过分复杂。再次感谢,一旦它让我承认这是正确的答案。 –

0

没有必要将字符串转换为列表,因为它已经是一个可迭代的了。相反,只是做这样的事情:

numbers = input(‘Enter numbers: ‘) 
total = 0 

for char in numbers: 
    total += int(char) 

print(total) 

此经过的每个字符字符串中,它变成一个整数,并将其添加到总。

+0

谢谢您的输入! –

0

只是在这里添加一个答案。如果字符串是否接受是逗号分隔,那么这里是一个衬垫,如果它是Python 2.7版

sequence = map(int, input().split(',')) 

其他的python3,

sequence = list(map(int, input().split(','))) 

我希望它增加了一些已经给出答案。

+0

谢谢你,我已经在其他例子中使用了split函数,但是因为这没有分隔符,所以它使事情变得复杂,谢谢你的反馈! –

+0

但是,您使用的方式,您将无法区分一个数字号码和多个数字号码。所有的代码都是一样的。 – gautamaggarwal

相关问题