python int ( ) - Funktion
Den code unten zeigt Fehler an, wenn eine Dezimalzahl (zB. 49.9) geschickt next
variable. Können Sie mir bitte sagen, warum? Warum int()
konvertiert es in eine Ganzzahl?
next=raw_input("> ")
how_much = int(next)
if how_much < 50:
print"Nice, you're not greedy, you win"
exit(0)
else:
dead("You greedy bastard!")
Wenn ich das nicht mit int()
oder float()
und verwenden nur:
how_much=next
dann bewegt es sich auf die "else" selbst wenn ich den Eingang als 49.8
.
- Sie wollen wahrscheinlich sagen
how_much = int(float(...))
oderhow_much = int(round(float(...)))
. - kleine Randbemerkung:
next
ist nicht eine gute Wahl für eine var name, da es eine build in Funktionnext()
da in python 2.6 - Sie sind hier, weil dieser. learnpythonthehardway.org/book/ex35.html
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als die anderen Antworten erwähnt haben, die
int
Betrieb zum Absturz bringen, wenn die string-Eingang ist nicht umwandelbar in ein int (wie float oder Zeichen). Was man tun kann, ist eine kleine Helfer-Methode, um zu versuchen und zu interpretieren, die string für Sie:So dauert es eine Zeichenfolge und versuchen, es zu konvertieren in int, dann schwimmen, und sonst return string. Dies ist nur ein Allgemeines Beispiel der Blick auf die Cabrio-Typen. Es wäre ein Fehler, wenn Ihr Wert wieder zu kommen aus, dass die Funktion noch in eine Zeichenfolge, die würden Sie wollen dann melden an den Benutzer, und Fragen, für neuen input.
Vielleicht eine Variante, die gibt
None
wenn Ihr weder float noch int:"49.8" < 50
None
in das zweite. Nur Feste.except ValueError
wäre wahrscheinlich eine bessere Idee.float()
erhöhen könnte. Entweder ich konvertieren kann der Wert, oder nicht.KeyboardInterrupt
. Der Benutzer kann mit Strg+C jederzeit.KeyboardInterrupt
in der Spanne der Zeit, die es dauert, bis callfloat(s)
, dann kann ich aktualisieren Sie das Beispiel 🙂int()
nur Werke für Streicher, die Aussehen wie ganze zahlen; es wird nicht für strings, die so Aussehen wie Schwimmer. Verwendenfloat()
statt.Ganzzahlen (
int
für short) sind die zahlen, die Sie zählen mit 0, 1, 2, 3 ... und Ihre negativen Pendants ... -3, -2, -1, diejenigen, ohne die Nachkommastellen.Also, wenn Sie die Einführung einer dezimal-Punkt, nicht wirklich den Umgang mit zahlen. Sie sind den Umgang mit rationalen zahlen. Die Python-float oder dezimal Typen sind, was Sie darstellen wollen oder annähernd diese zahlen.
Können Sie verwendet werden, um eine Sprache, die automatisch erledigt das für Sie(Php). Python, obwohl, hat eine explizite Präferenz für das code explizite statt implizite.
how_much
wird dann zu einem string. Ich würde nicht erwarten, dass diese auch funktionieren.in diesem, ich das erste Zeichenfolge die Anzahl
str()
, die es wandelt in einem inoperablen Anzahl. Dann, ichint()
integerize es, um es in einen betriebsbereiten Anzahl. Ich habe gerade getestet, Ihr problem auf meine IDLE-GUI, und er sagte, dass 49.8 < 50.Verwenden float() statt int(), so dass Ihr Programm kann mit Nachkommastellen. Auch, verwenden Sie nicht
next
da es eine eingebaute Python-Funktion, die next () -.Auch Sie den code wie geschrieben fehlt
import sys
und die definition fürdead
float()
wäre das nicht eine akzeptable Lösung?