2017-10-16 40 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

相關問題