鱼C论坛

 找回密码
 立即注册
查看: 16|回复: 1

[学习笔记] 猜数字游戏

[复制链接]
发表于 2026-8-30 16:59:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
猜数字游戏,随机产生一个1~100的整数,玩家从键盘输入一个数字,如果与随机产生的数字相同则胜利。
程序要求.
    1.猜错后要提示玩家,猜的数字比实际数字大或小,并提示输入数字以及最新的范围。(例如:随机数是10,玩家猜的是20,则提示比20小,
        请输入1~20之间的数字;然后又输入5,则提示比5大,请输入5~20之间的数字,如果用户再次输入1提示比1大但是范围还应该保持 5~20 )
    2.猜对后提示,正确,并输出共猜了多少次。


  1. import random


  2. num = random.randint(1, 100)

  3. count = 1
  4. big_num = []
  5. small_num = []

  6. while True:
  7.     guess_num = int(input('请输入你猜想的数字(1-100):'))

  8.     if guess_num == num:
  9.         print(f'正确答案是:{num},恭喜你猜对了,你真棒!本次共猜了{count}次')
  10.         break
  11.     elif guess_num > num:
  12.         if small_num and big_num and guess_num >= min(big_num):
  13.             print(f'提示:比{guess_num}小,但是范围还应该保持 {max(small_num)} ~ {min(big_num)} 之间的数字')
  14.         elif big_num and guess_num >= min(big_num):
  15.             print(f'提示:比{guess_num}小,但是范围还应该保持 1 ~ {min(big_num)} 之间的数字')
  16.         elif small_num:
  17.             print(f'提示:数字比{guess_num}小,请输入 {max(small_num)} ~ {guess_num} 之间的数字')
  18.         else:
  19.             print(f'提示:数字比{guess_num}小,请输入 1 ~ {guess_num} 之间的数字')

  20.         big_num.append(guess_num)

  21.     elif guess_num < num:
  22.         if small_num and big_num and guess_num <= max(small_num):
  23.             print(f'提示:比{guess_num}大,但是范围还应该保持 {max(small_num)} ~ {min(big_num)} 之间的数字')
  24.         elif small_num and guess_num <= max(small_num):
  25.             print(f'提示:比{guess_num}大,但是范围还应该保持 {max(small_num)} ~ 100 之间的数字')
  26.         elif big_num:
  27.             print(f'提示:数字比{guess_num}大,请输入 {guess_num} ~ {min(big_num)} 之间的数字')
  28.         else:
  29.             print(f'提示:数字比{guess_num}大,请输入 {guess_num} ~ 100 之间的数字')

  30.         small_num.append(guess_num)

  31.     count += 1
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2026-8-30 17:00:54 | 显示全部楼层
你的代码主要有两个问题需要修正:  
  • big_numsmall_num 没有初始化成空列表,所以后面无法使用 append 方法。应该加上:big_num = []small_num = []。  
  • 猜错后没有让 count 增加,否则猜多少次都只显示 1 次。应该在每次猜错后执行 count += 1
  
另外,猜小分支的代码不完整。下面给你一个更简洁、完整的写法,逻辑也更清晰:

  1. import random

  2. num = random.randint(1, 100)

  3. count = 1
  4. big_num = []   # 记录所有猜大的数字
  5. small_num = [] # 记录所有猜小的数字

  6. while True:
  7.     guess_num = int(input('请输入你猜想的数字(1-100):'))

  8.     if guess_num == num:
  9.         print(f'正确答案是:{num},恭喜你猜对了,你真棒!本次共猜了{count}次')
  10.         break

  11.     # 根据记录计算当前范围
  12.     low = max(small_num) if small_num else 1
  13.     high = min(big_num) if big_num else 100

  14.     if guess_num > num:
  15.         # 猜大了
  16.         if guess_num >= high:
  17.             print(f'提示:比{guess_num}小,但是范围还应该保持 {low} ~ {high} 之间的数字')
  18.         else:
  19.             print(f'提示:比{guess_num}小,请输入 {low} ~ {guess_num} 之间的数字')
  20.         big_num.append(guess_num)
  21.     else:
  22.         # 猜小了
  23.         if guess_num <= low:
  24.             print(f'提示:比{guess_num}大,但是范围还应该保持 {low} ~ {high} 之间的数字')
  25.         else:
  26.             print(f'提示:比{guess_num}大,请输入 {guess_num} ~ {high} 之间的数字')
  27.         small_num.append(guess_num)

  28.     count += 1
复制代码


核心思路:  
small_num 里存所有“猜小”的数,用 max(small_num) 作为下界;  
big_num 里存所有“猜大”的数,用 min(b

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-9-18 19:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表