Der folgende Code zeigt einen Fehler, wenn eine dezimale (zB 49.9) an next
Variable gesendet wird. Kannst du mir bitte sagen warum? Warum konvertiert int()
es in eine ganze Zahl?
Wenn ich nicht int()
oder float()
verwende und einfach:
dann bewegt es sich zu "else", auch wenn ich die Eingabe als 49.8
gebe.
Wie die anderen Antworten erwähnt haben, wird die int
-Operation abstürzen, wenn die String-Eingabe nicht in ein int konvertiert werden kann (wie ein Float oder Zeichen). Sie können eine kleine Hilfsmethode verwenden, um die Zeichenfolge für Sie zu interpretieren:
Es wird also eine Zeichenkette nehmen und versuchen, sie in int zu konvertieren, dann zu floaten und andernfalls die Zeichenkette zurückzugeben. Dies ist eher ein allgemeines Beispiel für die Betrachtung der Cabrio-Typen. Es wäre ein Fehler, wenn Ihr Wert wieder aus dieser Funktion herauskommt und eine Zeichenfolge ist, die Sie dann dem Benutzer melden und nach neuen Eingaben fragen möchten.
Vielleicht eine Variation, die None
zurückgibt, wenn weder float noch int:
int()
only funktioniert für Strings, die wie Ganzzahlen aussehen; Es wird für Strings fehlschlagen, die wie Floats aussehen. Verwenden Sie stattdessen float()
.
Ganzzahlen ( int
für kurz) sind die Zahlen, die Sie mit 0, 1, 2, 3 ... und ihre negativen Gegenstücke ... -3, -2, -1 die ohne den Dezimalteil zählen.
Wenn Sie also einen Dezimalpunkt eingeführt haben, befassen Sie sich nicht wirklich mit ganzen Zahlen. Du hast es mit rationalen Zahlen zu tun. Die Python-Float- oder Dezimal- -Typen sind das, was Sie darstellen oder annähern möchten.
Sie sind vielleicht an eine Sprache gewöhnt, die das automatisch für Sie tut (Php). Python hat jedoch eine explizite Präferenz dafür, dass Code explizit statt implizit wird.
in diesem, zeichne ich zuerst die Zahl str()
, die es in eine inoperable Zahl umwandelt. Dann binde ich int()
, um es zu einer funktionsfähigen Zahl zu machen. Ich habe gerade dein Problem auf meiner IDLE GUI getestet und es heißt, dass 49.8 & lt; 50.
Verwenden Sie float () anstelle von int () , damit Ihr Programm Dezimalstellen verarbeiten kann. Verwenden Sie nicht next
, da es sich um eine integrierte Python-Funktion next () handelt.
Auch Sie Code wie gepostet fehlt import sys
und die Definition für dead