这是我第一次使用stackoverflow进行访问-我是编程新手,并且正在学习Python入门课程。激动起来!

我们的第二个任务要求我们创建著名的Guess the Number Game。对于那些已经了解此游戏的人,我希望在添加的游戏中有所帮助:我们必须按顺序列出每个猜测。示例输出应如下所示:


我正在考虑一个整数,您有三个猜测。
猜测1:请输入1到10之间的整数:4
你的猜测太小了。
猜想2:请输入1到10之间的整数:8
你的猜测太大了。
猜想3:请输入1到10之间的整数:7
太糟糕了。该号码是:5


我已经将编码压缩到出现Guess 1和Guess 3的位置,但是我无法使Guess 2出现。我一直在努力工作并替换每个“ while”,“ if”,“ elif”和“ else”命令来解决此问题,但似乎无法提出解决方案!到目前为止,这是我的代码:

def guess():
print ("I'm thinking of an integer, you have three guesses.")
attempts = 0
from random import randint
number = randint(0,10)
guess = eval(input("Guess 1: Please enter an integer between 1 and 10: "))
while guess != number and attempts == 0:
    if guess < number:
        print("Your guess is too small.")
        break
    if guess > number:
        print("Your guess is too big.")
        break
    elif guess == number:
        print("You got it!")
        attempts = attempts + 1
if number != guess and attempts == 1:
    guess = eval(input("Guess 2: Please enter an integer between 1 and 10: "))
    if guess < number:
        print("Your guess is too small.")
    elif guess > number:
        print("Your guess is too big.")
    while guess == number:
        print("You got it!")
        attempts = attempts + 1
elif number != guess and attempts == 2:
    guess = eval(input("Guess 3: Please enter an integer between 1 and 10: "))
    if guess < number:
        print("Too bad. The number is: ", number)
    elif guess > number:
        print("Too bad. The number is: ", number)
    while guess == number:
        print("You got it!")


此代码输出Guess 1,然后退出。谁能帮我弄清楚如何使Guess 2和3出现?欢迎所有想法-谢谢!

最佳答案

您可以大大缩短代码的长度,只需在循环中移动输入,并使用range或用户正确猜出的三个尝试继续循环:

def guess():
    print ("I'm thinking of an integer, you have three guesses.")
    from random import randint
    number = randint(0,10)
    # loop three times to give at most three attempts
    for attempt in range(3):
        # cast to int, don't use eval
        guess = int(input("Guess 1: Please enter an integer between 1 and 10: "))
        if guess < number:
            print("Your guess is too small.")
        elif guess > number:
            print("Your guess is too big.")
        else: # not higher or lower so must be the number
            print("You got it!")
            break


最好与try/except一起使用一段时间来验证用户输入数字,然后循环播放直到用户正确使用了3次尝试或猜测:

def guess():
    print ("I'm thinking of an integer, you have three guesses.")
    attempts = 0
    from random import randint
    number = randint(0,10)

    while attempts < 3:
        try:
            guess =int(input("Guess 1: Please enter an integer between 1 and 10: "))
        except ValueError:
            print("That is not a number")
            continue
        if guess < number:
            print("Your guess is too small.")
            attempts += 1
        elif guess > number:
            print("Your guess is too big.")
            attempts += 1
        else: # if it is a number and not too high or low it must be correct
            print("You got it!")
            break # break the loop


如果您确实想向用户提供有关他们的猜测是太低还是太高的反馈,则不能仅使用if/else

也如所评论不要使用eval。概述here的一些充分理由

关于python - 猜猜具有不同猜名字的数字游戏,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28149775/

10-11 21:36