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
相关产品推荐
相关产品推荐

