/ / Pythonが初めての場合、sumを誤って使用していると思いますか? - python、配列、リスト、合計

Pythonを初めて使うと、私は合計を間違って使用していると思いますか? - Python、配列、リスト、合計

input1 = raw_input("Hello enter a list of numbers to add up!")
lon = 0
while input1:
input1 = raw_input("Enter numbers to add")
lon = lon + input1
print lon

このプログラムは与えられたすべての数を加えることになっています。うまくいかないのでリストを作成してみました。

input1 = raw_input("Hello enter a list of numbers to add up!")
lon = []
while input1:
input1 = raw_input("Enter numbers to add")
lon.append(input1)
print sum(lon)

それでもまだうまくいきませんか?何か解決策は?私はPythonの初心者で、約1ヶ月間だけそれをやっています。ありがとう!

回答:

回答№1は2
input1= int(raw_input("Enter numbers to add"))

入力するのは文字列なので、キャストする必要があります。これで問題は解決するはずです。

あるいはKeith Randallが指摘したように、 input("Enter numbers to add") 代わりに。


回答№2の場合は0

まず第一に、私はあなたのインデントが正しいと仮定しています(whileループの中のステートメントのためのタブ/スペース) - そうでなければ、あなたはそれを直すべきです。

さらに、raw_inputは文字列を返します。最初の例では、それを "input"に置き換えることができ、そしてそれはうまくいくでしょう。

2番目の例では、文字列を数字に分割して合計を適用することができます。

input1 = raw_input("Enter numbers to add")
lon.extend(map(int, input1.split()))

私は "extend"を使って追加しないことに注意してください - さもなければ、私はそれを新しい番号で拡張するのではなく、リストの中のリスト要素として番号のリストを追加するでしょう。


回答№3の場合は0

空の入力で終了したいかもしれないので、intに変換する前にそれをチェックする必要があります。

print "Hello enter a list of numbers to add up!"
lon = 0
while True:
input1 = raw_input("Enter numbers to add")
if not input1:
# empty string was entered
break
lon = lon + int(input1)
print lon

ユーザーがintに変換できないものを入力した場合、このプログラムはクラッシュするので、このような例外ハンドラを追加することができます

print "Hello enter a list of numbers to add up!"
lon = 0
while True:
input1 = raw_input("Enter numbers to add")
if not input1:
# empty string was entered
break
try:
lon = lon + int(input1)
except ValueError:
print "I could not convert that to an int"
print lon

あなたのプログラムの2番目のバージョンでも同様に、あなたはこれを行う必要があるでしょう

lon.append(int(input1))

上記のような例外ハンドラを追加できます。