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

所以,是的,如果您能相对较早地回答这个问题,那就太好了。

4

2 回答 2

1

更改while guessesTaken < 5:while guessesTaken < 5 and not finishedPlaying:. 在finishedPlaying = False开始时将其设置为True当您提示用户询问他是否已完成并且他表示他已完成时。

顺便说一句,不要这样做:

guess = int(guess) or str(guess)

如果int(guess)无法正常工作,那么 1)它会抛出一个异常,而不是返回类似 false 的值,2)你无论如何都不能做任何事情 - 如果它不是一个数字,它就不是一个有效的猜测 3)它是一个开始的字符串无论如何。

orPython 中的语义是:评估我的第一个操作数。如果它在布尔上下文中是一个类似于 true 的值(False如果你这样做不会变成bool(operand)),则返回它。否则,评估我的第二个操作数并返回它。

于 2013-06-18T23:56:37.637 回答
-2

您可以使用以下命令结束脚本:

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

例如,您可以让人们在输入中输入“exit”,检查它,并在它发生时调用 exit。

于 2013-06-18T23:52:16.587 回答