Als Tom Karzes gesagt hat, input()
ist etwas anderes als eine Zahl zurück. Wenn ich mir die Fehlermeldung ansehe, die von Python erzeugt wird, nehme ich an, dass Sie Python 3 verwenden, aber ich werde auch Python 2 behandeln.
Python 2
input()
prüft, ob die gegebene Eingabe von stdin etwas kann es ist eval
Uate zu. Es entspricht eval(raw_input())
. (Pydoc)
>>> a = input()
123
>>> a
123
>>> abc = 3
>>> a = input()
abc
>>> a
3
Es erzeugt einen anderen Fehler, wenn Sie input()
etwas kann es nicht 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
Da es eval
auf der gegebenen Eingabe durchführt, wird es davon aus, dass abc
ein Variablenname sein kann. Es sucht danach, gibt aber einen Fehler aus, weil es nicht gefunden werden konnte.
Python 3
input()
ist die neue raw_input()
in Python 2. input()
liefert einen String, auch wenn die gegebene Eingabe eine Zahl ist. (Pydoc)
>>> a = input()
123
>>> a
'123'
Dies ist der wahrscheinlichste Grund, warum Sie es zu einem int()
umwandeln würde, nachdem Sie eine input()
bekommen.
Ich kann Ihre Fehlermeldung replizieren wie so (in 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'
Abschließend der wahrscheinlichste Grund, warum es solch einen Fehler zurückgibt, weil man es etwas geben es nicht konvertieren kann ein int
.
Sie verwenden 'int (input())' an mehreren Stellen. Offensichtlich gibt 'input() 'etwas anderes als eine Zahlenfolge in einem dieser Aufrufe zurück. Finden Sie heraus, welche Zeichenfolge Sie an 'int()' übergeben und beheben Sie sie. Sie könnten Ihre eigene 'input_int'-Funktion schreiben, die fehlerhafte Werte abfängt und ausdruckt. Jedenfalls glaube ich nicht, dass das Problem etwas mit der Verkettung zu tun hat. –
Python3 oder Python2? – rrauenza
Sie haben wahrscheinlich eine leere Zeile oder der Benutzer drückt einfach. Sie sollten die Antwort von 'input()' testen, bevor Sie in ein 'int' konvertieren oder die Ausnahmebehandlung verwenden. –
cdarke