2017-06-03 14 views
-1

Ich habe ein Programm geschrieben, das eine Zufallszahl generiert, die der Benutzer erraten kann. Ich arbeite daran, alle möglichen Fehler zu finden. Der einzige, den ich nicht zu verstehen vermag, ist dies. Zu Beginn bitte ich den Benutzer, Enter zu drücken, um mit dem Spiel fortzufahren. Das Programm fängt ab, wenn es eine Zeichenfolge oder sogar Sonderzeichen und Interpunktionszeichen eingibt. Das einzige, was ich nicht verhindern kann, ist, wenn sie eine Nummer eingeben, endet das Programm. Das habe ich. Das Problem tritt in der ersten while-Schleife im try-Block auf. Irgendwelche Vorschläge oder Hilfe würden geschätzt. Vielen Dank im Voraus.Python catch int oder str

from random import randint #imports randint from random class 

cont = input('Press enter to continue') 

while True: 
    if cont != '': 
     try: 
      int(cont) 
      str(cont) 
      break 
     except ValueError: 
      print('Just hit enter') 
      cont = input() 
      continue 
    elif cont == '': 
     while True: 

      randNum = randint(1, 100) 
      print('Try guesssing a number between 1 and 100') 
      num = input() 

      while True: 
       try: 
        int(num) 
        break 
       except ValueError: 
        print('Please enter a number') 
        num = input() 

       int(num) 
      if num == randNum: 
       print('Good job, ' + str(num) + ' is correct.') 
      else: 
      print('Sorry, the number was ' + str(randNum) + '.') 

     print('Would you like to try again?') 
     answer = input().lower() 
     if answer == 'yes': 
      continue 
     elif answer == 'no': 
      print('Thanks for playing') 
      exit() 
     else: 
      while True: 
       print('Please type yes or no') 
       answer = input() 
       if answer == 'yes': 
        break 
       elif answer == 'no': 
        print('Thanks for playing.') 
        exit() 

Antwort

1

Was passiert, wenn Sie eine Zahl ist, dass das Programm eingeben versucht die Nummer zu einem int (das funktioniert), und dann auf ein str (die auch funktioniert) zu konvertieren, danach bricht es. Stattdessen versuchen Sie Folgendes:

from random import randint #imports randint from random class 

cont = input('Press enter to continue') 

while cont != '': 
    cont = input('Press enter to continue') 

while True: 

    randNum = randint(1, 100) 
    print('Try guesssing a number between 1 and 100') 
    num = input() 

    while True: 
     try: 
      int(num) 
      break 
     except ValueError: 
      print('Please enter a number') 
      num = input() 

     num = int(num) 
    if num == randNum: 
     print('Good job, ' + str(num) + ' is correct.') 
    else: 
    print('Sorry, the number was ' + str(randNum) + '.') 

print('Would you like to try again?') 
answer = input().lower() 
if answer == 'yes': 
    continue 
elif answer == 'no': 
    print('Thanks for playing') 
    exit() 
else: 
    while True: 
     print('Please type yes or no') 
     answer = input() 
     if answer == 'yes': 
      break 
     elif answer == 'no': 
      print('Thanks for playing.') 
      exit() 
+0

Ich habe versucht, auf verschiedene Arten zu arbeiten, um Fehler zu fangen, aber das funktioniert. Vielen Dank. – kfreeman04208

+0

@ kfreeman04208 kein Problem :) –

+0

Ist es möglich für Sie zu erklären, warum mein Weg für den Fang alles außer einer Nummer funktionierte? – kfreeman04208

-1
while True: 
    if cont != '': 
     try: 
      int(cont) 
      str(cont) 
      break 

Was sie tut, ist hier versuchen und wandeln cont in einen int, wenn sie es in eine Zeichenfolge zu konvertieren erfolgreich versucht (was praktisch immer möglich ist). Wenn das gelingt, bricht es die while-Schleife und beendet das Programm. In jedem anderen Szenario außer einem int, wenn es versucht, es zu analysieren int(cont) es einen Fehler auslöst und Sie zu Ihrem Programm fortfahren.

Sobald er Enter gedrückt hat beginnt cont. es gibt keinen Grund für Sie zu überprüfen, dass er vor dem Eingeben des Textes nichts geschrieben hat.

Verwandte Themen