Python猜数字程序运行报错:变量‘number’未定义,请求技术协助
解决猜数字程序中"number未定义"的问题
嘿,我来帮你搞定这个报错!你遇到的问题是变量作用域导致的:correct函数里用到了number,但这个变量既没在该函数内部定义,也没有作为参数传递进来,所以Python找不到它,就会抛出"number未定义"的错误。
下面给你两种实用的解决方案,你可以根据需求选择:
方案1:将number作为参数传递给correct函数
这是最规范的做法,能避免全局变量带来的逻辑混乱问题。
首先修改correct函数的定义,添加number参数:
def correct(guesses, number): print("You got it correct!") print("It was {0}".format(number)) guesses = guesses + 1 print ("It took you {0} guesses".format(guesses))
然后在_main_函数里生成随机数number,并在调用correct时把它传进去:
def _main_(guesses): # 生成目标数字,这里假设是1到100之间的随机数 number = random.randint(1, 100) # 这里补充你的猜数字逻辑:获取用户输入、判断高低 # 举个调用correct的例子(当用户猜对时): guesses = correct(guesses, number)
另外还要注意:你当前的higher和lower函数里修改的guesses是局部变量,不会影响外部的guesses值,所以需要让函数返回更新后的次数,比如:
def higher(guesses): print("Lower") return guesses + 1 def lower(guesses): print("Higher") return guesses + 1
调用时用guesses = higher(guesses)或者guesses = lower(guesses)来累计次数。
方案2:使用全局变量(快速测试可选)
如果你想快速验证功能,可以把number设为全局变量,这样所有函数都能直接访问:
import random guesses = 0 number = random.randint(1, 100) # 全局定义目标数字 def higher(guesses): print("Lower") guesses = guesses + 1 def lower(guesses): print("Higher") guesses = guesses + 1 def correct(guesses): print("You got it correct!") print("It was {0}".format(number)) # 直接使用全局变量 guesses = guesses + 1 print ("It took you {0} guesses".format(guesses))
不过全局变量容易让代码逻辑变得混乱,后期维护起来麻烦,所以更推荐方案1。
内容的提问来源于stack exchange,提问作者Ethan Buckley
相关产品推荐
相关产品推荐

