Python程序异常终止且输入Y/N仍提示无效选项问题排查
问题分析与修复方案
嘿,我来帮你搞定这个Python程序的问题!你的代码里的条件判断逻辑出了关键错误,这才导致了那些奇怪的行为——不管输入Y/N都会弹出错误提示,还直接终止程序。
问题的核心根源
你代码里的这两行判断是罪魁祸首:
if c.upper() != 'N' or "Y": print ("that wasn't an option") if c.upper() != 'N' or "Y": sys.exit()
这里的or "Y"完全不符合你的预期:在Python中,非空字符串会被当作True处理,所以不管用户输入什么,这个条件都会被判定为True。也就是说:
- 不管你输入Y还是N,程序都会先打印错误提示
- 紧接着就执行
sys.exit()直接退出,后面判断Y/N的代码根本没机会运行!
修复方案
我们需要把错误的条件改成判断输入既不是Y也不是N,这里有两种简洁的实现方式:
方式1:使用not in判断(推荐)
把错误的条件替换成:
if c.upper() not in ['Y', 'N']:
这样就能准确检测到用户输入的不是合法选项。
修复后的完整代码
import sys c = input('do you like pizza? Y or N:') # 先判断是否是非法输入 if c.upper() not in ['Y', 'N']: print ("that wasn't an option") sys.exit() # 合法输入的情况再分别处理 if c.upper() == 'Y': print ('Me Too') if c.upper() == 'N': print ("really i thought everybody likes pizza.")
额外优化(可选)
你还可以把重复的c.upper()提前存成变量,让代码更简洁易读:
import sys response = input('do you like pizza? Y or N:').upper() if response not in ['Y', 'N']: print ("that wasn't an option") sys.exit() if response == 'Y': print ('Me Too') if response == 'N': print ("really i thought everybody likes pizza.")
修改后程序就能正常工作了:输入Y会打印"Me Too",输入N会打印对应的句子,输入其他内容才会提示错误并退出。
内容的提问来源于stack exchange,提问作者Party Rock
相关产品推荐
相关产品推荐

