2013-06-18 162 views
-1

我在@J DawG的幫助下創建了一個循環猜數字遊戲,但我無法弄清楚如何讓用戶告訴它終止。這裏是我的代碼:你如何結束蟒猜猜數字遊戲?

import random 

inplay = 0 
x = "" 
def in_play(): 
    global inplay, guessesTaken 
    guessesTaken = 0 
    if inplay == True: 
     play() 
    else: 
     inplay = True 
     play() 

def play(): 
    global guessesTaken 
    print('Hello! What is your name?') 
    myName = input() 

    number = random.randint(1, 20) 
    print('Well, ' + myName + ', I am thinking of a number between 1 and 20.') 

    while guessesTaken < 5: 
     print('Take a guess.') 
     guess = input() 
     guess = int(guess) or str(guess) 
     guessesTaken = guessesTaken + 1 

     if guess < number: 
      print('Your guess is too low.') 

     elif guess > number: 
      print('Your guess is too high.') 

     elif guess == number: 
      break 

    if guess == number: 
     guessesTaken = str(guessesTaken) 
     print('Good job, ' + myName + '! You guessed my number in ' + guessesTaken + ' guesses!') 
     in_play() 

    elif guess != number: 
     number = str(number) 
     print('Nope. The number I was thinking of was ' + number) 
     in_play() 


in_play() 

所以,如果你可以請回答這個相對較快,這將是偉大的。

回答

-2

你可以結束與腳本:

import sys # put this at the top of the script 
sys.exit() # when you want to end the script 

可以,例如,讓人們在輸入鍵入「退出」,檢查是否存在,並調用exit當它發生。

1

變更while guessesTaken < 5:變爲while guessesTaken < 5 and not finishedPlaying:。在開始時製作finishedPlaying = False,並在您提示用戶詢問他是否完成並且他表示他已經完成時將其設置爲True

順便說,不這樣做:

guess = int(guess) or str(guess)

如果int(guess)無法工作,那麼1),它會拋出一個異常,不返回一個錯誤樣值,2)你可以」不管做什麼 - 如果它不是一個數字,它不是一個有效的猜測3)它始終是一個字符串。

Python中or的語義是:評估我的第一個操作數。如果它是一個布爾上下文中的真實值(如果你對其執行bool(operand),則不會變爲False),請將其返回。否則,評估我的第二個操作數並將其返回。