Wie kann ich Lesen Sie die Eingänge als zahlen?
Warum sind x
und y
Zeichenfolgen anstelle von int-Werten im code unten?
(Achtung: in Python 2.x verwenden Sie raw_input()
. In Python 3.x verwenden Sie input()
. raw_input()
wurde umbenannt, um input()
in Python 3.x)
play = True
while play:
x = input("Enter a number: ")
y = input("Enter a number: ")
print(x + y)
print(x - y)
print(x * y)
print(x / y)
print(x % y)
if input("Play again? ") == "no":
play = False
Du musst angemeldet sein, um einen Kommentar abzugeben.
TLDR
input
Funktion, aber Python 2input
Funktion hat (Lesen Sie den nächsten Abschnitt zu verstehen, die Implikation).input
ist dieraw_input
Funktion.Python-2.x
Gab es zwei Funktionen, um Benutzereingaben, genannt
input
undraw_input
. Der Unterschied zwischen Ihnen ist,raw_input
nicht Werten die Daten aus und gibt, wie es ist, in string-form. Aberinput
bewerten, was Sie eingegeben und das Ergebnis der Evaluierung zurückgegeben. Zum Beispiel,Daten
5 + 17
ausgewertet und das Ergebnis ist22
. Wenn der Ausdruck ausgewertet wird5 + 17
es erkennt, dass Sie das hinzufügen von zwei zahlen und das Ergebnis wird auch von der gleichenint
geben. Also, die Typ-Konvertierung erfolgt kostenlos und22
als Ergebnis zurückgegeben voninput
gespeichert und indata
variable. Sie können denkeninput
alsraw_input
komponiert mit einemeval
nennen.Hinweis:, sollten Sie vorsichtig sein, wenn Sie mit
input
in Python 2.x. Ich habe erklärt, warum man vorsichtig sein sollte, wenn Sie es, in diese Antwort.Aber
raw_input
nicht bewerten, die Eingabe und kehrt, wie es ist, als string.Python 3.x
Python 3.x
input
und Python 2.xraw_input
ähnlich sind undraw_input
ist nicht verfügbar in Python 3.x.Lösung
Ihre Frage zu beantworten, da Python 3.x nicht bewerten und den Datentyp konvertieren, müssen Sie explizit konvertieren, um
int
s, mitint
, wie dieseKönnen Sie akzeptieren zahlen einer beliebigen Basis und konvertieren Sie Sie direkt zur Basis 10 mit der
int
Funktion, wie diesDer zweite parameter sagt, was der Basis der eingegebenen zahlen und dann intern versteht und konvertiert. Wenn die eingegebenen Daten falsch ist, wird es werfen eine
ValueError
.Für Werte haben können, dass eine gebrochene Komponente, der Typ wäre
float
eher alsint
:Abgesehen davon, Ihr Programm ein wenig umgestellt, wie dies
Können Sie loszuwerden, die
play
- variable mitbreak
undwhile True
.ast.literal_eval
für, die. Es muss nicht die Sicherheitsbedenkeneval
.int(input()
... an der Spitze? Python 2 ist kurz vor dem Ende, es ist das Leben und die python-3 info zu begraben IMOIn Python 3.x,
raw_input
wurde umbenannt, uminput
und den Python-2.xinput
entfernt wurde.Dies bedeutet, dass, genau wie
raw_input
,input
in Python 3.x gibt immer ein string-Objekt.Um das problem zu beheben, müssen Sie explizit machen, diese Angaben in ganzen zahlen, indem Sie Sie in
int
:Für mehrere integer in einer einzigen Zeile,
map
besser sein könnte.Wenn die Nummer schon bekannt ist, (wie 2 ganze zahlen), die Sie verwenden können,
input()
(Python 3) undraw_input()
(Python 2) immer strings zurückgegeben werden. Konvertieren Sie das Ergebnis auf ganze Zahl explizit mitint()
.Mehrere Fragen, die eine Eingabe erfordern mehrere Integer auf single line. Der beste Weg ist die Eingabe der gesamten Zeichenfolge von zahlen einer Zeile und dann teilen Sie Sie auf ganze zahlen. Hier ist ein Python-3-version:
Konvertieren Ganzzahlen:
Ähnlich wie bei floating-point-zahlen:
Stieß ich auf ein problem zu nehmen integer-Eingabe bei der Lösung eines Problems auf CodeChef, wo zwei ganze zahlen - getrennt durch Leerzeichen - sollte gelesen werden, von einer Zeile.
Während
int(input())
ist ausreichend für eine ganze Zahl, ich habe nicht gefunden, eine direkte Möglichkeit zur Eingabe von zwei zahlen. Ich versuchte dies:Nun benutze ich num1 und num2 als ganze zahlen. Hoffe, das hilft.
i
zerstört, wenn diefor
- Schleife beendet wird?@hosch250
Wenn eine Schleife verlassen wird, wird der Wert der index-variable (hieri
) bleibt. Ich habe versucht, dieses Stück aus, und es funktioniert einwandfrei.num1, num2 = map(int, input().split())
wenn Sie wissen, wie viel Ganzzahlen, die Sie antreffen odernums = list(map(int, input().split()))
wenn Sie nicht.Während in deinem Beispiel
int(input(...))
funktioniert der trick in jedem Fallpython-future
'sgelieferten.input
ist eine überlegung Wert, da macht Sie sicher, dass Ihr code funktioniert sowohl für Python 2 und 3 und deaktiviert Python2 Standard-Verhalten voninput
versucht "clever" zu den Eingabe-Daten-Typ (builtins.input
im Grunde genauso verhält wieraw_input
).die for-Schleife wird ausgeführt 'n' Anzahl von Zeiten . das zweite 'n' ist die Länge des Arrays.
die Letzte Anweisung ordnet die zahlen in eine Liste und nimmt die Eingabe in Leerzeichen getrennte form .
Sie können sich auch wieder das array am Ende der for-Schleife.