Warum gibt dieser Code keine Ganzzahlen ein? Alles, was im Internet steht, bedeutet zu gebrauchen raw_input()
, aber ich habe bei Stack Overflow (bei einem Thread, der sich nicht mit Integer-Eingaben befasste) gelesen, dass raw_input()
wurde umbenannt in 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
Antworten:
202 für die Antwort № 1Python 2.x
Es gab zwei Funktionen, um Benutzereingaben zu erhalten input
und raw_input
. Der Unterschied zwischen ihnen ist raw_input
wertet die Daten nicht aus und gibt sie als String zurück. input
bewertet, was Sie eingegeben haben, und das Ergebnis der Bewertung wird zurückgegeben. Zum Beispiel,
>>> import sys
>>> sys.version
"2.7.6 (default, Mar 22 2014, 22:59:56) n[GCC 4.8.2]"
>>> data = input("Enter a number: ")
Enter a number: 5 + 17
>>> data, type(data)
(22, <type "int">)
Die Daten 5 + 17
wird ausgewertet und das Ergebnis ist 22
. Wenn es den Ausdruck auswertet 5 + 17
erkennt es, dass Sie zwei Zahlen addieren, und dass das Ergebnis auch das gleiche ist int
Art. Die Typumwandlung erfolgt also kostenlos und 22
wird als Ergebnis von zurückgegeben input
und gespeichert in data
Variable. Sie können sich vorstellen input
als die raw_input
komponiert mit einem eval
Anruf.
>>> data = eval(raw_input("Enter a number: "))
Enter a number: 5 + 17
>>> data, type(data)
(22, <type "int">)
Hinweis: Sie sollten vorsichtig sein, wenn Sie verwenden input
in Python 2.x. Ich erklärte, warum man bei der Verwendung vorsichtig sein sollte diese Antwort.
Aber, raw_input
Die Eingabe wird nicht ausgewertet und als String zurückgegeben.
>>> import sys
>>> sys.version
"2.7.6 (default, Mar 22 2014, 22:59:56) n[GCC 4.8.2]"
>>> data = raw_input("Enter a number: ")
Enter a number: 5 + 17
>>> data, type(data)
("5 + 17", <type "str">)
Python 3.x
Python 3.x "s input
und Python 2.x "s raw_input
sind ähnlich und raw_input
ist in Python 3.x nicht verfügbar.
>>> import sys
>>> sys.version
"3.4.0 (default, Apr 11 2014, 13:05:11) n[GCC 4.8.2]"
>>> data = input("Enter a number: ")
Enter a number: 5 + 17
>>> data, type(data)
("5 + 17", <class "str">)
Lösung
Um Ihre Frage zu beantworten, da Python 3.x den Datentyp nicht auswertet und konvertiert, müssen Sie explizit in konvertieren int
s, mit int
, so was
x = int(input("Enter a number: "))
y = int(input("Enter a number: "))
Sie können Nummern jeder Basis akzeptieren und diese mit der direkt in Basis-10 umwandeln int
Funktion wie diese
>>> data = int(input("Enter a number: "), 8)
Enter a number: 777
>>> data
511
>>> data = int(input("Enter a number: "), 16)
Enter a number: FFFF
>>> data
65535
>>> data = int(input("Enter a number: "), 2)
Enter a number: 10101010101
>>> data
1365
Der zweite Parameter gibt an, auf welcher Basis die eingegebenen Zahlen basieren, und kann sie intern umwandeln. Wenn die eingegebenen Daten falsch sind, wird ein Fehler ausgegeben ValueError
.
>>> data = int(input("Enter a number: "), 2)
Enter a number: 1234
Traceback (most recent call last):
File "<input>", line 1, in <module>
ValueError: invalid literal for int() with base 2: "1234"
Abgesehen davon kann Ihr Programm so verändert werden
while True:
...
...
if input("Play again? ") == "no":
break
Sie können die loswerden play
Variable mit break
und while True
.
PS: Python erwartet nicht ;
am Ende der Zeile :)
28 für die Antwort № 2
In Python 3.x raw_input
wurde umbenannt in input
und der Python 2.x input
wurde entfernt.
Das bedeutet, genau wie raw_input
, input
In Python 3.x gibt immer ein String-Objekt zurück.
Um das Problem zu beheben, müssen Sie diese Eingaben explizit in Ganzzahlen eingeben, indem Sie sie einfügen int
:
x = int(input("Enter a number: "))
y = int(input("Enter a number: "))
Außerdem benötigt / verwendet Python keine Semikola zum Beenden von Zeilen. Sie haben also nichts Positives.
18 für die Antwort № 3
Für mehrere Integer in einer einzelnen Zeile Karte könnte besser sein.
arr = map(int, raw_input().split())
Wenn die Zahl bereits bekannt ist (z. B. 2 Ganzzahlen), können Sie verwenden
num1, num2 = map(int, raw_input().split())
13 für die Antwort № 4
input()
(Python 3) und raw_input()
(Python 2) immer Strings zurückgeben. Konvertieren Sie das Ergebnis explizit mit Integer int()
.
x = int(input("Enter a number: "))
y = int(input("Enter a number: "))
Pro-Tipp: In Python werden keine Semikolons benötigt.
8 für die Antwort № 5
Mehrere Fragen erfordern die Eingabe mehrerer Ganzzahlen in einer Zeile. Am besten geben Sie die gesamte Zahlenfolge eine Zeile ein und teilen Sie sie in Ganzzahlen auf.
p=raw_input()
p=p.split()
for i in p:
a.append(int(i))
4 für die Antwort № 6
In ganze Zahlen konvertieren:
my_number = int(input("enter the number"))
Ähnlich für Fließkommazahlen:
my_decimalnumber = float(input("enter the number"))
4 für die Antwort № 7
Int als Eingabe in Python nehmen: Wir nehmen eine einfache Zeichenfolgeingabe mit:
input()
nun wollen wir int als input.so schreiben wir diese Zeichenfolge in int. einfach mit:
int(input())
3 für die Antwort № 8
Python 3.x hat input()
Funktion, die immer String zurückgibt. So müssen Sie in konvertieren int
Python 3.x
x = int(input("Enter a number: "))
y = int(input("Enter a number: "))
Python 2.x
In Python 2.x raw_input()
und input()
Funktionen geben immer einen String zurück, daher müssen Sie sie auch in int konvertieren.
x = int(raw_input("Enter a number: "))
y = int(input("Enter a number: "))
3 für die Antwort № 9
In Python 3.x. Standardmäßig nimmt die Eingabefunktion die Eingabe im String-Format vor. Um es in eine Ganzzahl zu konvertieren, müssen Sie int (input ()) einschließen.
x=int(input("Enter the number"))
2 für die Antwort № 10
Ich habe ein Problem mit der Eingabe einer Ganzzahl während der Lösung eines Problems festgestellt CodeChef, wo zwei durch Leerzeichen getrennte Ganzzahlen aus einer Zeile gelesen werden sollen.
Während int(input())
ist für eine einzelne ganze Zahl ausreichend, ich habe keinen direkten Weg gefunden, zwei ganze Zahlen einzugeben. Ich habe das versucht:
num = input()
num1 = 0
num2 = 0
for i in range(len(num)):
if num[i] == " ":
break
num1 = int(num[:i])
num2 = int(num[i+1:])
Jetzt benutze ich num1 und num2 als ganze Zahlen. Hoffe das hilft.
2 für die Antwort № 11
def dbz():
try:
r = raw_input("Enter number:")
if r.isdigit():
i = int(raw_input("Enter divident:"))
d = int(r)/i
print "O/p is -:",d
else:
print "Not a number"
except Exception ,e:
print "Program halted incorrect data entered",type(e)
dbz()
Or
num = input("Enter Number:")#"input" will accept only numbers
2 für die Antwort № 12
Während in Ihrem Beispiel int(input(...))
macht den Trick auf jeden Fall python-future
"s builtins.input
Es ist eine Überlegung wert, da dadurch sichergestellt wird, dass Ihr Code für Python 2 und 3 funktioniert und Deaktiviert Python2s Standardverhalten von input
versuchen, über den Eingabedatentyp "klug" zu sein (builtins.input
verhält sich im Grunde nur wie raw_input
).
1 für die Antwort № 13
Standardmäßig nimmt die Eingabefunktion die Eingabe als Zeichenfolgenformat an
Für andere Datentypen müssen Sie die Benutzereingabe umsetzen
In Python 2 verwenden wir raw_input () Funktion. Es wartet, bis der Benutzer etwas eingibt und die Eingabetaste drückt, und wir müssen den Wert in einer Variablen speichern, indem wir ihn als gewünschten Datentyp verwenden. Seien Sie vorsichtig bei der Verwendung von Typguss
x = raw_input("Enter a number: ") #String input
x = int(raw_input("Enter a number: ")) #integer input
x = float(raw_input("Enter a float number: ")) #float input
x = eval(raw_input("Enter a float number: ")) #eval input
In Python 3 verwenden wir Eingang() Funktion, die einen Benutzereingabewert zurückgibt
x = input("Enter a number: ") #String input
Wenn Sie eine Zeichenfolge (int, float, eval) eingeben, wird sie als Zeichenfolgeingabe verwendet
x = int(input("Enter a number: ")) #integer input
Wenn Sie einen String für int cast eingeben ValueError: ungültiges Literal für int () mit Basis 10:
x = float(input("Enter a float number: ")) #float input
Wenn Sie einen String für Float-Umwandlung eingeben, kann ValueError: String nicht in Float konvertieren
x = eval(input("Enter a float number: ")) #eval input
wenn Sie eine Zeichenfolge für den Eval Cast eingeben
NameError: Name "" ist nicht definiert
Dieser Fehler gilt auch für Python 2
0 für die Antwort № 14
Ja, in Python 3.x raw_input
wird durch ersetzt input
. Um auf das alte Verhalten von zurückzugreifen input
benutzen:
eval(input("Enter a number: "))
Dies lässt Python wissen, dass die eingegebene Eingabe eine Ganzzahl ist
0 für die Antwort № 15
n=int(input())
for i in range(n):
n=input()
n=int(n)
arr1=list(map(int,input().split()))
Die for-Schleife soll "n" oft ausgeführt werden. das zweite "n" ist die Länge des Arrays. Die letzte Anweisung ordnet die Ganzzahlen einer Liste zu und nimmt die Eingabe in durch Leerzeichen getrennte Form vor. Sie können das Array auch am Ende der for-Schleife zurückgeben.