不太清楚是什么';使用“时会发生什么情况?”;或;用python
我的代码是询问用户是否希望滚动4面、6面或12面模具,如果他们不放入4面、6面或12面模具,则应再次询问他们,直到他们正确输入为止。它只是不断地说现在一切都是无效的。这是我目前的代码:不太清楚是什么';使用“时会发生什么情况?”;或;用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
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