【问题标题】:Dice Simulator project in Python 3Python 3 中的骰子模拟器项目
【发布时间】:2026-01-18 02:35:01
【问题描述】:

我的代码可以为我的“elif”和“else”语句退出程序,但是当我输入“yes”时,我被困在这个输入循环中,我输入的任何内容仍然掷骰子。一旦我已经输入“是”并进入循环,如何通过输入“否”退出程序?


import random

min = 1
max = 6

prompt = "Roll dice? Type yes or no. "
roll_dice = input(prompt)

while roll_dice:

    if roll_dice == "yes":
        print ("you rolled", random.randint(min, max), random.randint(min, max))
        input(prompt)

    elif roll_dice == "no":
        print ("see you later!")
        break

    else:
        print ("invalid answer")
        break

【问题讨论】:

  • 你需要像第一次一样更新roll_dice的值。 roll_dice = input(prompt)
  • roll_dice = input(prompt)if roll_dice == "yes":
  • 请不要将问题中的代码编辑为固定版本,而不是您询问的非工作版本。问“为什么这段代码不起作用”然后显示工作代码只会让每个人感到困惑。我们希望保留原始错误,以便下面的答案对遇到类似问题的其他人有用。

标签: python-3.x dice


【解决方案1】:

而不仅仅是做:

input(prompt)

对给定的输入什么都不做,这意味着 roll_dice 将始终等于 yes,您将陷入无限循环。

你应该使用:

roll_dice = input(prompt)

roll_dice 设置为新值,从而让您退出循环。

【讨论】:

  • 谢谢!我不敢相信它是那么简单的修复。我在使用 while 循环时遇到了问题,但我会变得更好。欣赏!
  • @Stanimal 如果我的回答对您有所帮助,请考虑将此问题标记为有帮助(向上箭头)并将其标记为正确答案。
【解决方案2】:

你可以这样修改代码:

while roll_dice =="yes":
      print ("you rolled", random.randint(min, max), random.randint(min, max))
      roll_dice = input(prompt)

您必须包含 roll_dice 以从输入函数中获取返回值并验证响应是否为是、否或无效。

在您的代码中,输入返回一个值,但在 if 语句执行一次后,该值永远不会被检查。

while roll_dice =="yes":
      print ("you rolled", random.randint(min, max), random.randint(min, max))
      input(prompt)

【讨论】:

  • 非常感谢。我不敢相信它是那么简单的修复。我在使用 while 循环时遇到了问题,但我会变得更好。欣赏!
  • 继续努力!随着时间和努力,您将继续变得更好! :)