では動作しません。 Pythonによって生成されるエラーメッセージを見て、私はあなたがPython 3を使用していると仮定しますが、Python 2もカバーします。
のPython 2
input()
チェック標準入力から与えられた入力は、それができるものeval
uateにある場合。これはeval(raw_input())
に相当します。 (Pydoc)
>>> a = input()
123
>>> a
123
>>> abc = 3
>>> a = input()
abc
>>> a
3
あなたはそれができるinput()
ものではありませんeval
ときには、別のエラーを生成します。
>>> a = input()
abc
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 1, in <module>
NameError: name 'abc' is not defined
それは与えられた入力にeval
を実行するので、それはabc
は変数名であり得ることを前提とします。それはそれを検索しますが、それを見つけることができなかったのでエラーをスローします。
パイソン3
input()
は、Python 2 input()
に新しいraw_input()
ある与えられた入力が数字であっても、文字列を返します。 (Pydoc)
>>> a = input()
123
>>> a
'123'
これは、あなたがinput()
を取得した後、あなたがint()
に変換しまう可能性が高い理由です。
私は(Pythonの3)ように、あなたのエラーメッセージを複製することができます:あなたはそれを、それはに変換することができない何かを与えているので、結論として
>>> a = int(input())
abc
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: 'abc'
>>> a = int(input())
123 123
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '123 123'
を、それがこのようなエラーを返している原因で最も可能性の高い理由は、 int
。
あなたはいくつかの場所で 'int(input())'を使っています。明らかに、 'input()'はそれらの呼び出しのうちの一つで数値文字列以外を返しています。 'int()'に渡す文字列を見つけて修正してください。あなたは不正な値をキャッチし、それらを出力する独自の 'input_int'関数を書くことができます。いずれにせよ、私は問題が連結とは関係がないとは思わない。 –
Python3またはPython2? – rrauenza
おそらく空白行があるか、ユーザーはを押すだけです。 'int'に変換する前に、' input() 'からの応答をテストするか、例外処理を使うべきです。 –
cdarke