不太清楚是什么';使用“时会发生什么情况?”;或;用python

不太清楚是什么';使用“时会发生什么情况?”;或;用python,python,python-idle,Python,Python Idle,我的代码是询问用户是否希望滚动4面、6面或12面模具,如果他们不放入4面、6面或12面模具,则应再次询问他们,直到他们正确输入为止。它只是不断地说现在一切都是无效的。这是我目前的代码: number = int(input("Would you like to use a 4, 6 or 12 sided die\n")) while number != 4 or number != 6 or number != 12: print("Invalid response") int

我的代码是询问用户是否希望滚动4面、6面或12面模具,如果他们不放入4面、6面或12面模具,则应再次询问他们,直到他们正确输入为止。它只是不断地说现在一切都是无效的。这是我目前的代码:

number = int(input("Would you like to use a 4, 6 or 12 sided die\n"))
while number != 4 or number != 6 or number != 12:
    print("Invalid response")
    int(input("Would you like to use a 4, 6 or 12 sided die?\n"))
if number == 4:
    import random
    random4 = random.randint(1, 4)
    print("Your 4 sided die rolled a" ,random4)

elif number == 6:
    import random
    random6 = random.randint(1, 6)
    print("Your 6 sided die rolled a" ,random6)

elif number == 12:
    import random
    random12 = random.randint(1, 12)
    print("Your 12 sided die rolled a" ,random12)

要简化您的条件,请尝试以下操作:

while number not in (4, 6, 12):
...

您的条件不正确,因为无论发生什么情况,您的一项检查都是正确的。

要简化您的条件,请尝试以下操作:

while number not in (4, 6, 12):
...

您的情况不正确,因为无论发生什么情况,您的一项检查都是正确的。

您需要了解
的工作原理:

您的代码将从此循环中导出:

while number != 4 or number != 6 or number != 12:
只要其中一个条件成立。假设您输入第一个条件
number!=4
仍然为真,因此控件永远无法计算
数字!=6


您需要使用

您需要了解
的工作原理:

您的代码将从此循环中导出:

while number != 4 or number != 6 or number != 12:
只要其中一个条件成立。假设您输入第一个条件
number!=4
仍然为真,因此控件永远无法计算
数字!=6


您需要使用

您的逻辑流程有点混乱。您要求的是while循环之外的数字,因此该数字永远不会更新,while会继续计算原始值。您需要将变量
number
设置为新输入调用的结果

while number != 4 or number != 6 or number != 12:
    number = int(input("Would you like to use a 4, 6 or 12 sided die\n"))
编辑: 一些其他的回应触及了另一个原因,即这不会很好地发挥作用。在说这些都是无效的之前,你需要检查所有这些都是真实的,而不是所有这些都是真实的。数字不能同时为4、6和12。因此,请使用
,或者更好:

while number not in [4, 6, 12]:

你的逻辑流程有点混乱。您要求的是while循环之外的数字,因此该数字永远不会更新,while会继续计算原始值。您需要将变量
number
设置为新输入调用的结果

while number != 4 or number != 6 or number != 12:
    number = int(input("Would you like to use a 4, 6 or 12 sided die\n"))
编辑: 一些其他的回应触及了另一个原因,即这不会很好地发挥作用。在说这些都是无效的之前,你需要检查所有这些都是真实的,而不是所有这些都是真实的。数字不能同时为4、6和12。因此,请使用
,或者更好:

while number not in [4, 6, 12]:

您需要使用and而不是or。
你的第一行写着“检查用户是否没有滚动4,然后检查他们是否没有滚动6,然后检查他们是否没有滚动12”,但它是分开进行的。因此,滚动a 4将仍然不是6,也不是12;您需要使用以及您使用的位置或在第一行中

您需要使用and而不是or。
你的第一行写着“检查用户是否没有滚动4,然后检查他们是否没有滚动6,然后检查他们是否没有滚动12”,但它是分开进行的。因此,滚动a 4将仍然不是6,也不是12;您需要使用以及使用的位置或在第一行中

您需要使用
而不是
。让我们一步一步地了解将要发生的事情

while number != 4 or number != 6 or number != 12:
number != 4
首先,输入一个
4
。程序一步一步地遍历条件

while number != 4 or number != 6 or number != 12:
number != 4
这是错误的,因为数字实际上是
4
。下一步:

number != 6

事实证明这是正确的,因为我们给出了
4
,而不是
6
。这意味着程序直接进入下一行代码,要求再次滚动。如果您想要一种“无一为真”的条件,您需要使用
而不是
您需要使用
而不是
。让我们一步一步地了解将要发生的事情

while number != 4 or number != 6 or number != 12:
number != 4
首先,输入一个
4
。程序一步一步地遍历条件

while number != 4 or number != 6 or number != 12:
number != 4
这是错误的,因为数字实际上是
4
。下一步:

number != 6

事实证明这是正确的,因为我们给出了
4
,而不是
6
。这意味着程序直接进入下一行代码,要求再次滚动。如果你想要一种“这些都不是真的”的情况,你需要使用
,而不是
,布什米尔斯建议你可以只使用
。这是另一种方法

from random import randrange
number = -1

while (number not in (4,6,12)):
  try:
    number = int(input("Would you like to use a 4, 6 or 12 sided die\n"))
  except ValueError:
    continue

print("Your {} sided died rolled a {}.".format(number,1+randrange(number)))

Bushmills建议您只需使用
。这是另一种方法

from random import randrange
number = -1

while (number not in (4,6,12)):
  try:
    number = int(input("Would you like to use a 4, 6 or 12 sided die\n"))
  except ValueError:
    continue

print("Your {} sided died rolled a {}.".format(number,1+randrange(number)))

这是一个保持原始结构的编辑。作为初学者,请毫不犹豫地编写简单、直接的代码。你的主要努力应该是让计划开始运作。您可以随时返回并使用所学的最新概念重构/重写代码。所有技能水平都是这样

在这种情况下,使用while-True:可以消除复合词或语句。您可以将OR或AND与==和!=一起使用分别地此外,当使用while循环时,应该使用传递值初始化循环外部的检查值-number,即允许进入循环的值

number = 0
while number != 4:
    #do stuff
    number = someNewValue
在使用复合和/或条件时,需要了解的两件事是短路和运算符优先级

import random
while True: # loops until break
    number = int(input("Would you like to use a 4, 6 or 12 sided die?\n"))
    if number == 4:
        import random
        random4 = random.randint(1, 4)
        print("Your 4 sided die rolled a" ,random4)
        break
    elif number == 6:
        import random
        random6 = random.randint(1, 6)
        print("Your 6 sided die rolled a" ,random6)
        break
    elif number == 12:
        import random
        random12 = random.randint(1, 12)
        print("Your 12 sided die rolled a" ,random12)
        break
一旦它起作用,其他帖子中的一些想法应该得到应用。其他的想法是将其作为一个函数,并将模具尺寸列表作为一个变量

最终的代码可能是这样的

from random import randrange

DIE_CHOICES = {4, 6, 12}

def roll(choices):
    while True:
        try:
            choice = int(input('Would you like to use a 4, 6 or 12 sided die?\n'))
        except ValueError:
            continue
        if roll in choices:
            return choice, 1 + randrange(choice)
        else:
            print 'Please pick a legal die size.\n'

print 'Your {} sided die rolled a {}.'.format(roll(DIE_CHOICES))

这使事情变得更加通用,并消除了重复/冗余代码。

这里有一个保持原始结构的编辑。作为初学者,请毫不犹豫地编写简单、直接的代码。你的主要努力应该是让计划开始运作。您可以随时返回并使用所学的最新概念重构/重写代码。所有技能水平都是这样

在这种情况下,使用while True:可以消除c