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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 19:06:03