python int () -Funktion

7

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?

%Vor%

Wenn ich nicht int() oder float() verwende und einfach:

%Vor%

dann bewegt es sich zu "else", auch wenn ich die Eingabe als 49.8 gebe.

    
Shubham Agrawal 18.08.2012, 17:41
quelle

5 Antworten

12

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:

%Vor%

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:

%Vor%     
jdi 18.08.2012, 17:57
quelle
4

int() only funktioniert für Strings, die wie Ganzzahlen aussehen; Es wird für Strings fehlschlagen, die wie Floats aussehen. Verwenden Sie stattdessen float() .

    
Ignacio Vazquez-Abrams 18.08.2012 17:43
quelle
2

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.

    
Doug T. 18.08.2012 17:49
quelle
2
%Vor%

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.

    
user3317399 17.02.2014 01:47
quelle
1

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

    
Levon 18.08.2012 17:46
quelle

Tags und Links