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

Python中if语句条件判断异常求助:输出结果不符合预期

问题分析与解决方案

你的问题出在第一个if语句的条件判断逻辑上——Python里不能像veg == 'bell pepper' or 'zucchini' or 'eggplant'这么写。因为'zucchini'和'eggplant'本身是非空字符串,在布尔判断中会被视为True,所以不管你输入什么蔬菜,这个条件都会成立,导致第一行的打印语句总会执行。

修正方法1:修正条件判断+改用elif

把第一个if的条件改成正确的多值判断,同时将后续的if换成elif(else if的缩写),这样程序会按顺序匹配条件,一旦匹配成功就跳过后续判断:

veg = input('Which vegetable would you like to roast? ')
if veg == 'bell pepper' or veg == 'zucchini' or veg == 'eggplant':
    print('400 degrees for 20 min.')
elif veg == 'broccoli':
    print('400 degrees for 25 min.')
elif veg == 'asparagus':
    print('425 degrees for 15 min.')
elif veg == 'potato':
    print('400 degrees for 30 min.')

修正方法2:用in简化多值判断

更简洁的写法是用in检查蔬菜是否在目标列表中:

veg = input('Which vegetable would you like to roast? ')
if veg in ['bell pepper', 'zucchini', 'eggplant']:
    print('400 degrees for 20 min.')
elif veg == 'broccoli':
    print('400 degrees for 25 min.')
elif veg == 'asparagus':
    print('425 degrees for 15 min.')
elif veg == 'potato':
    print('400 degrees for 30 min.')

进阶优化:用字典映射(可选)

如果后续要添加更多蔬菜,用字典存储蔬菜与烤制信息会更易维护:

roast_guide = {
    'bell pepper': '400 degrees for 20 min.',
    'zucchini': '400 degrees for 20 min.',
    'eggplant': '400 degrees for 20 min.',
    'broccoli': '400 degrees for 25 min.',
    'asparagus': '425 degrees for 15 min.',
    'potato': '400 degrees for 30 min.'
}

veg = input('Which vegetable would you like to roast? ')
print(roast_guide.get(veg, "Sorry, I don't have info for that vegetable."))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 20:40:05