[Python] Wie kann ich Eingaben als Ganzzahlen lesen?


Answers

In Python 3.x wurde raw_input in input umbenannt und die input Python 2.x wurde entfernt.

Dies bedeutet, dass die input in Python 3.x wie raw_input immer ein Zeichenfolgenobjekt zurückgibt.

Um das Problem zu beheben, müssen Sie diese Eingaben explizit in Ganzzahlen setzen, indem Sie sie in int :

x = int(input("Enter a number: "))
y = int(input("Enter a number: "))

Außerdem benötigt / benutzt Python keine Semikolons zum Beenden von Zeilen. Also, sie zu haben macht nichts Positives.

Question

Warum gibt dieser Code keine ganzen Zahlen ein? Alles im Web sagt raw_input() , aber ich lese auf (in einem Thread, der sich nicht mit Integer-Input beschäftigt), dass raw_input() in input() in Python 3.x umbenannt wurde.

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



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



Standardmäßig verwendet die Eingabefunktion Eingaben als Zeichenfolgenformat

Für andere Datentypen müssen Sie die Benutzereingabe umwandeln

In Python 2 verwenden wir die Funktion raw_input () . Es wartet darauf, dass der Benutzer eine Eingabe eingibt, und drücken Sie die Eingabetaste, und wir müssen den Wert in einer Variablen speichern, indem Sie den gewünschten Datentyp übergeben. Seien Sie vorsichtig beim Typ Gießen

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 die Funktion input () , die einen Benutzereingabewert zurückgibt

x = input("Enter a number: ") #String input

Wenn Sie einen String eingeben, int, float, eval, wird dies als String-Eingabe 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 der Basis 10:

x = float(input("Enter a float number: ")) #float input

Wenn Sie eine Zeichenfolge für float cast eingeben ValueError: konnte die Zeichenfolge nicht in float konvertieren

x = eval(input("Enter a float number: ")) #eval input

wenn Sie eine Zeichenfolge für die Eval-Besetzung eingeben

NameError: Name '' ist nicht definiert

Dieser Fehler gilt auch für Python 2




In ganze Zahlen konvertieren:

my_number = int(input("enter the number"))

Ähnlich für Gleitkommazahlen:

my_decimalnumber = float(input("enter the number"))



Während in Ihrem Beispiel int(input(...)) in jedem Fall den Trick macht, ist python-future builtins.input ' builtins.input eine Überlegung wert, da dies sicherstellt, dass Ihr Code sowohl für Python 2 als auch 3 funktioniert und das Standardverhalten von Python2 deaktiviert der input versucht, "schlau" über den Eingabedatentyp zu sein ( builtins.input verhält sich im Grunde nur wie raw_input ).




input() (Python 3) und raw_input() (Python 2) geben immer Strings zurück. Konvertiere das Ergebnis mit int() explizit in int() .

x = int(input("Enter a number: "))
y = int(input("Enter a number: "))

Profi-Tipp: Semikolons werden in Python nicht benötigt.




Ich habe ein Problem mit der Integer-Eingabe beim Lösen eines Problems in CodeChef , wo zwei ganze Zahlen - getrennt durch Leerzeichen - aus einer Zeile gelesen werden sollten.

Während int(input()) für eine einzelne ganze Zahl ausreicht, habe ich keinen direkten Weg gefunden, zwei ganze Zahlen einzugeben. Ich habe es 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.