2016-10-26 20 views
-1

我正在創建一個程序,使用戶輸入一個數字許多次,直到所述數字在100到200之間。如果用戶輸入字符串或非整數,則會創建錯誤消息並系統會提示用戶再次嘗試。目前,我有線路問題:輸入必須在100到200之間python

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

我想我必須把它做成一個while循環,使下面的錯誤:不定義guessesTakenInt。

## 
## 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

錯誤實際上是「gue *** sss *** esTakenInt」未定義。數一數s。 – JJJ

回答

0

正如JJJ所述,您在那裏有一個錯字。但是,這還不是全部,你也有兩種不同的while

  1. 是用來檢查用戶是否在多個類型或不
  2. 是用來檢查,如果數字是在100和200之間

這裏就是你需要做的:

  1. 兩個while應該合併合爲一體。
  2. 使用str.isnumeric()在將字符串解析爲int(str)之前測試該字符串是否爲NaN
  3. 變化guesssesTakenIntguessesTakenInt
  4. 變化guessesTakenInt += 1edguessesTakenInt += 1
  5. 解決您的壓痕

我冒昧地改變你的代碼。

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()