Python循环无法终止求助:输入N后程序仍持续运行
问题原因及修复方案
核心问题:变量作用域错误
你在Possibility函数内部修改全局变量loop时,没有声明它是全局变量,导致Python将loop视为函数内的局部变量,修改的不是外层控制循环的那个loop,所以外层的while loop循环条件始终为True,程序会持续运行。
另外还有一个冗余问题:你把函数定义def Possibility(maximum):放在了while loop:循环内部,每次循环都会重新定义这个函数,完全没必要,还不符合代码规范。
修复后的代码
import random # 把函数定义移到循环外,只定义一次 def Possibility(maximum): count = 0 while count == 0: x = random.randint(0, maximum) if x: print("X is True") else: print("X is false") count += 1 print("Possibility calculated") answer = input("Do you want to try again? Y/N") if answer == "N": # 声明要修改的是全局变量loop global loop loop = False given_number = round(float(input("Enter a number: "))) loop = True while loop: Possibility(given_number)
关键修改点
- 函数移到循环外:避免每次循环重复定义函数,提升代码效率和可读性。
- 添加
global声明:在函数内修改loop前加上global loop,告诉Python这个变量属于全局作用域,这样修改后才能真正改变外层循环的条件,让程序在输入N后停止运行。
内容的提问来源于stack exchange,提问作者a python learner
相关产品推荐
相关产品推荐

