You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python循环与if语句异常:restart赋值无效问题排查

问题排查与修复:循环无法终止的原因

你的代码存在两个关键问题,导致循环无法正常终止:

1. 变量作用域错误

全局变量restart在函数start()内部被赋值时,Python会默认将其视为局部变量,而非修改全局的restart。这意味着你在函数里设置restart = False时,改变的只是函数内部的临时变量,全局的restart始终保持初始值True,循环自然会一直执行。

修复方法:在函数内部用global关键字声明使用全局变量restart:

def start() :
    global restart  # 声明使用全局变量
    # 后续代码不变

2. 条件判断逻辑错误

原代码中的if/elif条件写法不符合Python逻辑判断规则,比如:

if final == ('yes') or ('y') or ("confirm") or ("Yes"):

这里or连接的是独立表达式,('y')本身是非空字符串,会被Python解析为布尔值True,导致这个if条件永远成立。正确的写法应该是每个选项都和final进行比较,或者用更简洁的集合包含判断(同时统一转为小写,避免大小写判断冗余):

推荐写法:

final = input('is this correct?').strip().lower()  # 去除空格并转小写
if final in {'yes', 'y', 'confirm'}:
    restart = False 
    print("Thank you for your order, your pizza of ", ingredients, "is being prepared")
elif final in {'no', 'wrong'}:
    print("Sorry, Restarting order")
else: 
    print('Restarting order')

修复后的完整代码

restart = True # variable to make it restart
def start() : #start pos to return to
    global restart  # 声明使用全局变量
    #Pizza time!
    ingredients = ['Mozzerala', 'basil', 'tomato', 'garlic', 'olive oil']
    print(ingredients)
    #above is the base pizza, below is where you add extra ingredients 
    extra = input("input extra ingredients here;")
    print(ingredients, "with addional", extra)
    ingredients.append(extra)
    print(ingredients)
    rem = input("input undesired ingredients here;")
    print(ingredients, "without", rem)
    ingredients.remove(rem)
    print(ingredients)
    final = input('is this correct?').strip().lower() #confirmation check
    if final in {'yes', 'y', 'confirm'}:
        restart = False 
        print("Thank you for your order, your pizza of ", ingredients, "is being prepared")
    elif final in {'no', 'wrong'}:
        print("Sorry, Restarting order")
    else: 
        print('Restarting order')
while restart == True: # this will loop until restart is set to be False
   start()

额外提示:使用ingredients.remove(rem)时,如果用户输入的内容不在列表中会触发报错,后续可以添加异常处理避免程序崩溃。

内容的提问来源于stack exchange,提问作者Bullet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 14:40:30