我哪里做错了?随机数字猜测游戏
首先,感谢你们提供的任何答案。
我刚开始学习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!")
- 你在猜测太高的时候循环,这时候如果猜得太低就会打断这个循环。
- 你在猜测太低的时候循环,这时候如果猜得太高也会打断这个循环。
所以,如果我们先猜一个低的,再猜一个高的,但还是不对,那就会跳出这两个循环,无法再尝试了。
相反,试试这个单一的循环结构:
while guess != number:
然后在里面用 if
来处理 <=
、==
和 >=
的情况。加油!