Python条件判断异常:为何输入任意值均返回固定菜品结果?
问题排查与修复方案
代码存在的核心问题
- 输入类型不匹配:
input()函数返回的是字符串类型,代码中却将其与整数1、2做比较,永远不会匹配,导致无论输入什么都会进入else分支。 - 无效代码冗余:
1 == "meat"、2 == "pasta"、3 == "salad"这三行是无意义的比较语句,既没有赋值操作,也没有参与逻辑判断,完全多余。 - 变量命名不直观:
d、e、f这类命名无法体现对应菜品的含义,不利于代码维护。
修复后的代码
order = input("What do you want to order?") # 用字典建立输入值与菜品的映射关系,让对应逻辑更清晰 menu = { "1": "T-bone steak", "2": "fresh salad", "3": "Spaghetti with meatballs" } # 根据输入匹配菜品,无匹配时提示无效输入 if order in menu: print(f"I would like to order a {menu[order]}") else: print("Invalid order, please enter 1, 2 or 3.")
优化说明
- 用字典替代零散变量,输入与菜品的对应关系更直观,后续新增菜品只需修改字典即可。
- 新增无效输入提示,避免用户输入错误时返回固定默认值。
- 采用f-string格式化输出,比字符串拼接更简洁易读。
内容的提问来源于stack exchange,提问作者Karl
相关产品推荐
相关产品推荐

