我哪里做错了?随机数字猜测游戏

2 投票
3 回答
1146 浏览
提问于 2025-04-17 18:13

首先,感谢你们提供的任何答案。

我刚开始学习Python,也刚开始接触编程。我尝试制作一个随机数字猜谜游戏,电脑会随机选择一个1到15之间的数字,等等。

我遇到的问题是,当我想告诉用户他们的猜测是太低还是太高时,程序要么直接结束了,没有告诉用户他们是否猜对了,要么就一直在循环。

太低了,请再猜一次:14

正确!你猜对我的数字了!

太低了,请再猜一次:12

太低了,请再猜一次:1

太低了,请再猜一次:

这是我这个程序的完整代码:

import random
from time import sleep

number = random.randint(1,15)
play = input("Hello! Would you like to play (Y/N) ")

if play in('y', 'Y'):
    sleep(.75)

    print("I've chosen a number between 1 and 15.") 
    sleep(.5)

    guess = int(input("What is my number? "))

    while guess >= number:
        guess = int(input("Too High, please guess again: "))
        if guess == number:
            print("Correct! You've guessed my number!")

    while guess <= number:
        guess = int(input("Too Low, please guess again: "))
    
        if guess == number:
            print("Correct! You've guessed my number!")
        
else:
    exit

再次感谢你们的任何答案!

3 个回答

2

把你的while循环改成下面这样:

while guess != number:
    if (guess > number):
        print("Too High!")
    else:
        print("Too Low!")
    guess = int(input("Please guess again: "))

print("Correct! You guessed my number!")
3

如果我猜的数字太小,程序就会让我一直在“猜的数字太低”的循环里。如果我猜的数字超过了目标数字,循环就会结束,直接把我推出程序。

你需要做的是把循环设置成“只要猜的数字不等于目标数字就继续”,然后在这个循环里同时检查猜的数字是高于、低于还是等于目标数字。

4

你的循环逻辑有点复杂。

while guess >= number:
    guess = int(input("Too High, please guess again: "))
    if guess == number:
        print("Correct! You've guessed my number!")

while guess <= number:
    guess = int(input("Too Low, please guess again: "))

    if guess == number:
        print("Correct! You've guessed my number!")
  1. 你在猜测太高的时候循环,这时候如果猜得太低就会打断这个循环。
  2. 你在猜测太低的时候循环,这时候如果猜得太高也会打断这个循环。

所以,如果我们先猜一个低的,再猜一个高的,但还是不对,那就会跳出这两个循环,无法再尝试了。

相反,试试这个单一的循环结构:

while guess != number:

然后在里面用 if 来处理 <===>= 的情况。加油!

撰写回答