猜数字游戏
猜数字游戏,随机产生一个1~100的整数,玩家从键盘输入一个数字,如果与随机产生的数字相同则胜利。程序要求.
1.猜错后要提示玩家,猜的数字比实际数字大或小,并提示输入数字以及最新的范围。(例如:随机数是10,玩家猜的是20,则提示比20小,
请输入1~20之间的数字;然后又输入5,则提示比5大,请输入5~20之间的数字,如果用户再次输入1提示比1大但是范围还应该保持 5~20 )
2.猜对后提示,正确,并输出共猜了多少次。
import random
num = random.randint(1, 100)
count = 1
big_num = []
small_num = []
while True:
guess_num = int(input('请输入你猜想的数字(1-100):'))
if guess_num == num:
print(f'正确答案是:{num},恭喜你猜对了,你真棒!本次共猜了{count}次')
break
elif guess_num > num:
if small_num and big_num and guess_num >= min(big_num):
print(f'提示:比{guess_num}小,但是范围还应该保持 {max(small_num)} ~ {min(big_num)} 之间的数字')
elif big_num and guess_num >= min(big_num):
print(f'提示:比{guess_num}小,但是范围还应该保持 1 ~ {min(big_num)} 之间的数字')
elif small_num:
print(f'提示:数字比{guess_num}小,请输入 {max(small_num)} ~ {guess_num} 之间的数字')
else:
print(f'提示:数字比{guess_num}小,请输入 1 ~ {guess_num} 之间的数字')
big_num.append(guess_num)
elif guess_num < num:
if small_num and big_num and guess_num <= max(small_num):
print(f'提示:比{guess_num}大,但是范围还应该保持 {max(small_num)} ~ {min(big_num)} 之间的数字')
elif small_num and guess_num <= max(small_num):
print(f'提示:比{guess_num}大,但是范围还应该保持 {max(small_num)} ~ 100 之间的数字')
elif big_num:
print(f'提示:数字比{guess_num}大,请输入 {guess_num} ~ {min(big_num)} 之间的数字')
else:
print(f'提示:数字比{guess_num}大,请输入 {guess_num} ~ 100 之间的数字')
small_num.append(guess_num)
count += 1
你的代码主要有两个问题需要修正:
[*]big_num 和 small_num 没有初始化成空列表,所以后面无法使用 append 方法。应该加上:big_num = [] 和 small_num = []。
[*]猜错后没有让 count 增加,否则猜多少次都只显示 1 次。应该在每次猜错后执行 count += 1。
另外,猜小分支的代码不完整。下面给你一个更简洁、完整的写法,逻辑也更清晰:
import random
num = random.randint(1, 100)
count = 1
big_num = [] # 记录所有猜大的数字
small_num = [] # 记录所有猜小的数字
while True:
guess_num = int(input('请输入你猜想的数字(1-100):'))
if guess_num == num:
print(f'正确答案是:{num},恭喜你猜对了,你真棒!本次共猜了{count}次')
break
# 根据记录计算当前范围
low = max(small_num) if small_num else 1
high = min(big_num) if big_num else 100
if guess_num > num:
# 猜大了
if guess_num >= high:
print(f'提示:比{guess_num}小,但是范围还应该保持 {low} ~ {high} 之间的数字')
else:
print(f'提示:比{guess_num}小,请输入 {low} ~ {guess_num} 之间的数字')
big_num.append(guess_num)
else:
# 猜小了
if guess_num <= low:
print(f'提示:比{guess_num}大,但是范围还应该保持 {low} ~ {high} 之间的数字')
else:
print(f'提示:比{guess_num}大,请输入 {guess_num} ~ {high} 之间的数字')
small_num.append(guess_num)
count += 1
核心思路:
small_num 里存所有“猜小”的数,用 max(small_num) 作为下界;
big_num 里存所有“猜大”的数,用 min(b
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页:
[1]