Python已定义correct变量却报NameError未定义的原因是什么
问题原因
函数内部定义的correct属于局部变量,作用域仅覆盖函数内部,函数执行完成后就会被销毁,全局作用域无法直接访问。同时你调用guesscheck函数时没有接收它的返回值,全局作用域从未创建过名为correct的变量,因此触发NameError。
修复方案
核心修改为调用函数时,将返回值赋值给全局作用域的correct变量,修改后可运行的代码如下:
def guesscheck(guess, answer): print(lives * '\u2665') if guess.upper() == answer: print("Marvelous! That is correct!") return True else: print("That is incorrect.") return False lives = 3 guess = input("ok: ") # 接收函数返回值,赋值给全局的correct变量 correct = guesscheck(guess, "OK") if not correct: lives -= 1 print(lives * '\u2665')
可选优化点:
- 判断布尔值时直接用
if not correct替代if correct == False,代码更简洁易读 - 移除了函数内冗余的
correct临时变量和重复的判断逻辑,直接返回布尔值即可
内容的提问来源于stack exchange,提问作者JustANoobProgrammer
相关产品推荐
相关产品推荐

