2017-08-24 4 views
1

Ich habe versucht, eine für/mit Ausnahme aber ich es nichtAusgangsverhalten, wenn die Eingabe enthält keine Zahlen in Python

Hier ist der Code zu arbeiten könnte:

#This is a guess the number game. 
import random 
secretNumber = random.randint(1, 20) 
print('I am thinking of a number between 1 and 20.') 
# Ask the player to guess 6 times. 
for guessesTaken in range(1, 7): 
    print('Take a guess.') 
    guess = int(input()) 
    if guess < secretNumber: 
     print('Your guess is too low.') 
    elif guess > secretNumber: 
     print('Your guess is too high.') 
    else: 
     break # This condition is the correct guess! 
if guess == secretNumber: 
    print('Good job! You guessed my number in ' + str(guessesTaken) + ' guesses!') 
else: 
    print('Nope. The number I was thinking of was ' + str(secretNumber)) 

~~~~ offensichtlich, wenn ich eine Zeichenfolge eingeben, wird es keines der Kriterien erfüllen und es wird nur mit einem Fehler brechen. Ich möchte nicht, dass es mit einem Fehler bricht. was mache ich? die Fehler (in Verbindung mit dem Wort „Test“ statt einer Nummer zu reagieren):

Traceback (most recent call last): 
line 8, in <module> 
    guess = int(input()) 
ValueError: invalid literal for int() with base 10: 'test' 
+1

Fangen Sie die 'ValueError' Ausnahme, z. - 'außer ValueError:' und handle es (z. B. 'pass', um zu ignorieren). – AChampion

Antwort

0

Sie try/except können ValueError und fügen Sie eine Schleife fangen für die ohne guessTaken, bis eine Anzahl raubend für die Eingabe zu fragen zu halten wird eingegeben. Zum Beispiel:

for guessesTaken in range(1, 7): 
    print('Take a guess.') 
    guess = None 
    while guess is None: 
     try: 
      guess = int(input()) 
     except ValueError: 
      print('Please enter a number.') 
    if guess < secretNumber: 
     print('Your guess is too low.') 
    elif guess > secretNumber: 
     print('Your guess is too high.') 
    else: 
     break # This condition is the correct guess! 
Verwandte Themen