Python如何退出函数不终止整个程序?重投功能输入N不生效怎么解决?
问题根源
你写的条件判断yn == "y" or "Y"存在逻辑错误。Python中or连接的是两个独立的布尔判断,这段代码实际会被解析为(yn == "y") or ("Y"),而非你预期的yn == "y" or yn == "Y"。因为非空字符串的布尔值恒为True,所以无论你输入什么内容,这个条件都会判定为真,自然就会一直触发重投逻辑。
修复方案
你可以采用以下两种写法修正判断逻辑,同时也可以优化输入容错处理:
- 方法1:完整写出每个判断条件
把原来的if yn == "y" or "Y":和elif yn == "n" or "N":分别修改为:
if yn == "y" or yn == "Y": elif yn == "n" or yn == "N":
- 方法2:统一输入大小写后判断,简化写法
可以直接把输入的内容转为小写/大写后只判断一次,代码更简洁:
yn = input("\nDo you want to roll again? (Y/n)\n").lower() if yn == "y": hand1 = [] resolve1 = 0 elif yn == "n": counter = 4
修正后完整参考代码
for i in range(6): #rolls 6 faces of a die and sets them to a "hand" if counter == 0: print("1",hand1,"\n","\nYou earned",resolve1,"resolve") else: print("\n1",hand1,"\n","\nYou earned",resolve1,"resolve") counter = counter + 1 if counter < 3: yn = input("\nDo you want to roll again? (Y/n)\n").lower() if yn == "y": hand1 = [] resolve1 = 0 elif yn == "n": counter = 4 else: print("\nYou cannot reroll\n") counter = 4
内容的提问来源于stack exchange,提问作者Big Chungo
相关产品推荐
相关产品推荐

