2017-10-16 11 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) 

メイン()

私のロジックは、その後、合計を生成するために、ループ内の数字を追加し、リストに数列を破るためにあります。残念ながら、これが唯一の元の文字列を返すので、私は置くことにしました:

を私のために数字で:

i= eval(i) 
total= total + i 

私のために数字で:

i= int(i) 
total= total + i 

これが返されます私は文字列にする必要があることを示すエラーが、これは別の連結につながるだけです。

誰でも私が探しているものを生産する方法を知っていますか?つまり、 "1234" = 10です。

+0

'total = 0'を出発点にしてみてください。 intの場合、 '+'演算は加算です。文字列の場合、 '+'演算は連結であり、これは2つの文字列を新しい文字列に結合することを意味します。だからちょうど分割した文字列に再び参加することになります。既存の合計に追加するには、 '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

既にiterableなので、文字列をリストにする必要はありません。代わりに、次のようなことをしてください:

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

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

print(total) 

これは、文字列内の各文字を通過し、整数に変換して合計に加算します。

+0

ありがとうございました! –

0

もう一度答えを追加してください。あなたが受け入れているあなたの文字列はカンマ区切りであれば、それは、Python 2.7のpython3のための他の

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

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

私はそれが既に答えを与えるために何かを追加願っている場合は、ここでは1つのライナーです。

+0

他の例ではsplit関数を使用していますが、セパレータがないため複雑なものになりますので、入力していただきありがとうございます! –

+0

しかし、使用している方法では、1桁の数字と複数の桁の数字を区別することはできません。あなたのコードはすべて同じです。 – gautamaggarwal

関連する問題