循环中变量匹配问题:新手实现随机猜数字程序遇阻
帮你搞定随机猜数字程序的问题
嘿,刚学编程2天就敢动手写代码,这起步已经超棒啦!咱们来一步步把你的程序理顺,解决你遇到的问题~
先说说你当前代码里的几个小问题
- 模块导入位置不对:
from random import *应该放在代码最开头,要是放在while循环里,每次循环都会重复导入模块,既浪费资源也不符合规范。 - 没获取用户输入的目标数字:你提到不知道怎么把输入的目标变量融入逻辑,这一步咱们得先补上——得让程序先拿到用户想让它猜的数字才行。
- 随机数的使用有误:你现在是先
print randint(1, 3),然后又用randint == var去判断,但这两次调用randint会生成两个不同的随机数,而且randint是函数本身,不是生成的随机数,当然没法和目标值比对。 - 变量命名踩坑:
input是Python的内置函数,不能用来当变量名,不然会覆盖掉这个内置函数,后续再想用它获取输入就会出错。 - 未定义的变量:代码里的
var没有定义,程序根本不知道它是什么,自然没法做比对。
修正后的完整代码
咱们把这些问题都改掉,同时加上计数器统计猜测次数,代码就变成这样啦:
# 先导入random模块,放在代码开头 from random import randint # 获取用户输入的目标数字,转成整数类型 target_num = int(input("请输入1到3之间的目标数字:")) # 初始化猜测状态和计数器 guessing = True counter = 0 # 开始猜测循环 while guessing: # 生成1-3之间的随机数并保存 guess = randint(1, 3) counter += 1 # 计数器加1 print(f"我猜的是:{guess}") # 判断是否猜对 if guess == target_num: print(f"太棒啦!我猜对了,一共猜了{counter}次~") guessing = False # 猜对了就结束循环
关键知识点拆解
- 获取用户输入:用
input()函数获取用户输入,然后用int()转成整数,因为input()默认返回字符串,没法和整数类型的随机数比对。 - 存储随机数:把生成的随机数存在
guess变量里,这样打印和判断用的是同一个数,逻辑才对。 - 循环控制:用
guessing这个布尔变量来控制循环,比用x == 0更直观,一看就知道是“是否在猜测状态”。 - 计数器的使用:每次循环让
counter加1,就能统计出一共猜了多少次,让程序更实用。
内容的提问来源于stack exchange,提问作者D. Barnum
相关产品推荐
相关产品推荐

