2016-07-27 7 views
-2

Kann mir jemand helfen?Verschachtelt Try in While-Schleife

Ich habe ein Problem mit einer verschachtelten try-Anweisung innerhalb einer while-Anweisung. Der Code sieht so aus:

number = raw_input("what is the number? ") 

if number < 11: 
    Print "that is good!" 

else: 
    print "your number had to be lower then 11" 

    raw_input("kies een getal: ") 

while number < 11: 

    try: 
    number == int(number) 

    except ValueError: 
    raw_input(" try again: ") 

Wenn ich den Code ausführen wird es die ganze Schleife überspringen!

Kann mir jemand das erklären und mir helfen?

Antwort

3

raw_input gibt eine Zeichenfolge zurück. Das willst du nicht.

Die meisten Ihrer Code macht keinen Sinn. Hier ist, was ich nehmen Sie tun möchten:

  • Nehmen Eingabe von einem Benutzer.

  • Wenn die Eingabe in eine Zahl konvertiert werden kann, konvertieren Sie sie und fahren Sie fort. Andernfalls fragen Sie nach Eingabe.

  • Wenn der Eingang als Nummer weniger als 11 ist, ist es in Ordnung. Andernfalls fragen Sie nach Eingabe.

Hier ist ein Weg, dies in Python zu tun:

def get_number(): 
    while True: 
     try: 
      number = int(raw_input("what is the number? ")) 
      return number 
     except ValueError: 
      print("Enter a number, you fool!") 

num = get_number() 

while num >= 11: 
    print("Number should be less than 11...") 
    number = get_number() 
+1

Der lustige Teil ist, als ich dich sah, Narr! : P –

+0

@sameerasy Ich benutze gerne negative Verstärkung auf Benutzer zu entfernen, um schlechte Eingaben zu geben. :) – erip

0

Was ist der Zweck des Skripts? Zwei der raw_input-Befehle werden nicht in einer Variablen gespeichert und der Wert von 'number' ändert sich nicht innerhalb der Schleife. Daher würde es für immer laufen, bis Sie es mit Strg + C stoppen.

Wenn die Schleife nicht ausgeführt wird, liegt das daran, dass die Bedingungsnummer < 11 an erster Stelle nicht erfüllt ist.

+0

Es ist Teil eines Skripts, und es ist mein allererstes Skript ohne jede Hilfe –