Python中如何让函数内定义的局部变量可在其他函数中正常使用
问题根因
你遇到的报错是变量作用域规则导致的:
- 你在
generateNumber、inputUsersGuess函数内部定义的random_Number、users_Guess都是局部变量,仅能在当前函数内部被访问,displayAnswer函数没有权限直接读取这两个变量 - 你在
main函数中调用前两个函数时,没有接收它们的返回值,生成的随机数、用户输入的猜数直接被丢弃,后续自然无法调用
不推荐通过把变量改成全局变量的方式解决这个问题,通过参数传递的方式代码可维护性更高,后续排查问题也更简单。
修复方案
修改逻辑如下:
- 在
main函数中定义变量存储前两个函数的返回结果 - 修改
displayAnswer函数,增加两个参数用来接收随机数和用户猜数,调用时传入对应变量即可
修复后完整代码
# 导入random模块 import random # 调度所有函数 def main(): # 接收生成的随机数和用户输入的猜数 random_Number = generateNumber() users_Guess = inputUsersGuess() # 把两个值传给对比函数 displayAnswer(random_Number, users_Guess) # 生成1-100的随机数 def generateNumber(): random_Number=random.randint(1,100) return random_Number # 接收用户输入的猜数 def inputUsersGuess(): users_Guess=int(input('我想到了一个数字,你猜是多少? ')) return users_Guess # 对比用户猜数和随机数输出结果 def displayAnswer(random_Number, users_Guess): if random_Number==users_Guess: print('你猜对了!') else: print('抱歉你猜错了,我想到的数字是',random_Number) # 启动程序 main()
内容的提问来源于stack exchange,提问作者Abrahim Hamdan
相关产品推荐
相关产品推荐

