2013-03-22 80 views
2

所以我正在寫一個輸入3#數字並將其分開的程序。我無法弄清楚如何添加單獨的數字?加上三位數字的總和

例如:用戶輸入345

我的計劃將打散的#'s到3,4,5但我怎麼再添加這些數字加在一起?

這是我的代碼迄今,

#set variable 
val = raw_input("Type your three digit number please: ") 


print 'The first digit is {}'.format(val[0]) 
print 'The second digit is {}'.format(val[1]) 
print 'The third digit is {}'.format(val[2]) 


#set variable 
total = [val[0] +val [1] + val[2]] 
total_value = total 

print 'The sum of the three digits is' total_value 
+1

閱讀[我的回答(http://stackoverflow.com/a/15566019/939986)到您的[前一個問題(http://stackoverflow.com/q/15565656/939986)仔細。 – 2013-03-22 09:59:28

+0

@SantoshKumar確實!爲什麼相同的問題兩次?聽起來像絕望,做一些功課。 :D – ecline6 2013-03-22 15:17:01

回答

1

你只需要做到這一點:

total = int(val[0]) + int(val[1]) + int(val[2]) 

由於val數字是人物,他們必須首先轉換爲整數。 請注意,沒有[ ]影響到total的值,因爲在您的代碼中(您不需要列表,只需要一個值)。

2

一個優雅的解決方案是使用Python的內置函數mapsum

val = raw_input("Type your three digit number please: ") 
total = sum(map(int, val)) 
print 'The sum of the three digits is', total 
1

試試這個:

res = raw_input("Enter value: ") 
print sum(map(int, res)) 
6

短的方式添加的所有號碼的數字一起是:

In [3]: sum(map(int, val)) 
Out[3]: 12 

這裏,map(int, val)遍歷charact並且將它們中的每一個轉換爲int,並且sum(...)將所有這些加在一起ints。

這種方法的好處是它適用於任意數量的數字。

你的原始代碼不起作用的原因是val[0]等都是,所以使用+只是串接這些字符串重新走到一起。要添加數值,你就必須將字符轉換爲int第一:

In [5]: int(val[0]) + int(val[1]) + int(val[2]) 
Out[5]: 12 
3

您必須將各個組件轉換爲數字,以便能夠將它們添加:

total = int(val[0]) + int(val[1]) + int(val[2]) 

,或者更簡潔:

total = sum(int(x) for x in val) 
+2

沒有必要在這裏創建一個'list' ...只要保留它爲'int(x)...' – 2013-03-22 09:49:58

+1

好點,我總是忘記了生成器表達式。 – omz 2013-03-22 09:52:05