2016-10-26 3 views
-1

Ich erstelle ein Programm, das den Benutzer eine Zahl mehrmals eingeben lässt, bis diese Zahl zwischen 100 und 200 liegt. Wenn der Benutzer eine Zeichenfolge oder eine ganze Zahl eingibt, wird eine Fehlermeldung erstellt und Der Benutzer wird aufgefordert, es erneut zu versuchen. Aktuelle Probleme Ich habe mit der Zeile:Eingabe muss zwischen 100 und 200 Python sein

print("You tried " + guesssesTakenInt + "numbers and " + guessesTakenStr + 
    "non-number to get it right.") 

Ich nehme ich es in eine zu machen, während Schleife, so dass der folgende Fehler: guessesTakenInt ist nicht definiert.

## 
## a6p2.py 
## 


def main(): 
    # this is the code that runs when your program is executed 
    guessesTakenInt = 0 
    guessesTakenStr = 0 
    while True: 

     guessesTakenStr += 1 
     try: 
      userNumber = int(input("Please enter a number between 100 and 200: ")) 
     except ValueError: 
      print("Sorry that is not a number. ") 
      continue 
     else: 
      break 

    while userNumber > 0: 

     guessesTakenInt += 1ed 

     if userNumber > 200: 
      userNumber = int(input("This number is too big. Try again: ")) 
     elif userNumber < 100: 
      userNumber = int(input("This number is too low. Try again: ")) 
     else: 
      guessesTakenInt = str(guessesTakenInt) 
      guessesTakenStr = str(guessesTakenStr) 

       print("That number is just right!") 
       print("You tried " + guesssesTakenInt + "numbers and " + guessesTakenStr + " non-number to get it right.") 
       break 




    return 
    print (main()) 






############################################################### 
## DO NOT CHANGE THIS! LEAVE IT AT THE BOTTOM OF YOUR FILE 
## calls the main function when this file is run with Python 
## 
## python stats.py 
## 
############################################################### 
if __name__ == "__main__": 
    main() 
+2

Der Fehler ist eigentlich "gue *** sss *** esTakenInt" ist nicht definiert. Zählen Sie die s. – JJJ

Antwort

0

Wie JJJ erwähnt, haben Sie einen dort Tippfehler. Aber das ist noch nicht alles, auch Sie haben zwei verschiedene while:

  1. verwendet wird, um zu überprüfen, ob der Benutzer in einer Reihe eingegeben oder nicht
  2. wird verwendet, um zu überprüfen, ob die Zahl zwischen 100 und 200

Hier ist, was Sie tun müssen:

  1. Beide while verschmolzen werden soll in eins.
  2. Verwenden Sie str.isnumeric(), um zu testen, ob die Zeichenfolge NaN vor dem Parsing zu int(str) ist.
  3. ändern guesssesTakenInt-guessesTakenInt
  4. ändern guessesTakenInt += 1ed-guessesTakenInt += 1
  5. Fix Ihre Vertiefung

nahm ich mir die Freiheit, Ihren Code zu ändern.

def main(): 
    # this is the code that runs when your program is executed 
    guessesTakenInt = 0 
    guessesTakenStr = 0 

    user_input = input("Please enter a number between 100 and 200: ") 

    while True: 
     if user_input.isnumeric(): 
      user_input = int(user_input) 
      guessesTakenInt += 1 
      if user_input > 200: 
       user_input = input("This number is too big. Try again: ") 
      elif user_input < 100: 
       user_input = input("This number is too low. Try again: ") 
      else: 
       guessesTakenInt = str(guessesTakenInt) 
       guessesTakenStr = str(guessesTakenStr) 
       print("That number is just right!") 
       print("You tried {} numbers and {} non-numbers to get it right.".format(guessesTakenInt, guessesTakenStr)) 
       break 
     else: 
      guessesTakenStr += 1 
      print("Sorry that is not a number. ") 
      user_input = input("Please enter a number between 100 and 200: ") 

main() 
Verwandte Themen