Python骰子模拟是或否函数

Python骰子模拟是或否函数,python,python-3.x,Python,Python 3.x,我已经被困了好几天,试图让你想重新滚动模具1-5是或否功能工作,因为无论我输入什么,它仍然继续前进,如果我输入所有Y,它仍然会给我错误消息“对不起”。请只输入Y或N。我想我还需要定义die1-5=random.randint1,6,但它没有给我未定义的名称错误。如果我遗漏了什么,请告诉我。你的If子句都不可能是真的-它们都等同于用户说是和否。我看不出和keepDieX=='N'或keepDieX=='no'子句在其中的原因。首先,让它只运行一次;然后扩大到五个骰子 if keepDie1[0]

我已经被困了好几天,试图让你想重新滚动模具1-5是或否功能工作,因为无论我输入什么,它仍然继续前进,如果我输入所有Y,它仍然会给我错误消息“对不起”。请只输入Y或N。我想我还需要定义die1-5=random.randint1,6,但它没有给我未定义的名称错误。如果我遗漏了什么,请告诉我。

你的If子句都不可能是真的-它们都等同于用户说是和否。我看不出和keepDieX=='N'或keepDieX=='no'子句在其中的原因。

首先,让它只运行一次;然后扩大到五个骰子

if keepDie1[0] in 'Nn':
    die1 = random.randint(1,6)
你应该处理好你的问题;这是很多程序使用的,只有输入的第一个字母。如果您需要有效性检查,请使用

if keepDie1[0] in "YyNn":
    ...
还要注意的是,您将输入转换为大写,因此在测试时不可能是Yes或no。有关此主题的详细说明,请参阅


最后,我建议您检查您的文档。你问玩家是否想重新掷骰子,然后将这些重新掷骰的选择存储为keepDie,一个语义相反的名称。

我应该用什么来解决这个问题?我曾经让elif keepDie1-5=='N':单独运行过,但它给出了相同的结果。根据需要使用括号对输入检查进行分组。查找运算符优先级以获取帮助;在这里,它不能自然地实现你的期望。另外,请注意,您正在尝试对任何可接受的输入进行重新滚动,而不是关注用户给您的内容。欢迎使用StackOverflow,和在这里申请。您更改了您的帖子以使给出的答案无效;这违反了堆栈溢出实践。您现在请求帮助修复尚未发布的代码。欢迎使用StackOverflow。看见在您发布MRE代码并准确说明问题之前,我们无法有效地帮助您。我们应该能够将您发布的代码粘贴到文本文件中,并重现您指定的问题。由于我们不再知道它是什么,我们无法提供帮助。我对您的代码副本进行了指定的更改,它的工作方式与我上面所写的相同。我怀疑1你仍在试图编写一个以上你不完全理解的东西;2您在原始代码中出现了一个或多个其他逻辑错误,而组合是您的问题。