级别:初学者
def play_game(word_list):
hand = deal_hand(HAND_SIZE) # random init
while True:
cmd = raw_input('Enter n to deal a new hand, r to replay the last hand, or e to end game: ')
if cmd == 'n':
hand = deal_hand(HAND_SIZE)
play_hand(hand.copy(), word_list)
print
elif cmd == 'r':
play_hand(hand.copy(), word_list)
print
elif cmd == 'e':
break
else:
print "Invalid command."
我的问题:什么是真的?
我认为'虽然真实'是简写但是为了什么?而变量'hand'被赋值?如果变量'hand'没有赋值?该怎么办?
答案 0 :(得分:90)
while True
意味着永远循环。 while
语句接受表达式并执行循环体,而表达式求值为(boolean)“true”。 True
总是求值为布尔值“true”,因此无限期地执行循环体。这是你最终会习惯的成语!您可能遇到的大多数语言都有相同的习语。
请注意,大多数语言通常都有一些早期打破循环的机制。对于Python,它是您问题中样本break
情况下的cmd == 'e'
语句。
答案 1 :(得分:38)
我的问题:什么是真的?
True
为True
。
只要条件表达式求值为True
,就会运行while循环。
由于True
始终评估为True
,因此循环将无限期运行,直到循环return
s或break
s内的某些内容。
答案 2 :(得分:8)
而True
为真 - 即总是如此。这是一个无限循环
请注意True
之间的重要区别,{{1}}是表示特定类型的常量值的语言中的关键字,而'true'是数学概念。
答案 3 :(得分:7)
我的问题:什么是真的?
while语句的()内的所有内容都将被计算为布尔值。意味着它被转换为true或false。
在语句while(6 > 5)
它首先评估表达式6 > 5
true
,因此与while(true)
任何非FALSE,0,emptry string“”,null或undefined都可能被评估为true。
当我第一次开始编程时,我常常做if(foo == true)
这样的事情,我没有意识到这与if(foo)
几乎是一回事。
所以,当你说while(true)
时它会说while(true == true)
所以回答你的问题:虽然TRUE是真的。
答案 4 :(得分:4)
在这种情况下,我认为它可以解释为
do
...
while cmd != 'e'
答案 5 :(得分:2)
True
始终为True
,因此while True
将永远循环。
while
关键字采用表达式,并在表达式为true时循环。 True
是一个永远正确的表达式。
作为一个可能的澄清示例,请考虑以下事项:
a = 1
result = a == 1
此处,a == 1
将返回True
,因此将True
放入result
。因此,
a = 1
while a == 1:
...
相当于:
while True:
...
如果您不改变a
循环中while
的值。
答案 6 :(得分:2)
正式地,True
是built-in constant类型的Python bool。
你可以在bool类型上使用Boolean operations(例如在交互式python提示符下)和convert numbers到bool类型:
>>> print not True
False
>>> print not False
True
>>> print True or False
True
>>> print True and False
False
>>> a=bool(9)
>>> print a
True
>>> b=bool(0)
>>> print b
False
>>> b=bool(0.000000000000000000000000000000000001)
>>> print b
True
对于你所看到的以及Python编译器看到的内容,可能存在“陷阱”:
>>> n=0
>>> print bool(n)
False
>>> n='0'
>>> print bool(n)
True
>>> n=0.0
>>> print bool(n)
False
>>> n="0.0"
>>> print bool(n)
True
作为Python在内部存储bool类型的提示,您可以将bool类型转换为整数,True将为1和False 0:
>>> print True+0
1
>>> print True+1
2
>>> print False+0
0
>>> print False+1
1
实际上,Python bool
类型是Python的int
类型的子类:
>>> type(True)
<type 'bool'>
>>> isinstance(True, int)
True
您问题中更重要的部分是“什么是while True
?”是'什么是真',一个重要的推论:什么是假的?
首先,对于您正在学习的每种语言,要了解语言所认为的“真实”和“虚假”。例如,Python认为Truth与Perl Truth略有不同。其他语言的slightly different concepts为真/假。 了解您的语言认为对于不同的操作和流量控制是正确的还是错误的,以避免以后出现许多麻烦!
在您找到所需内容之前,您需要处理许多算法。因此infinite loop或无限循环。每种语言都倾向于对这些结构有自己的习语。这是常见的C无限循环,它也适用于Perl:
for(;;) { /* loop until break */ }
/* or */
while (1) {
return if (function(arg) > 3);
}
while True:
形式在Python中很常见,用于无限循环,有些方法可以突破循环。学习Python flow control以了解如何突破while True
循环。例如,与大多数语言不同,Python可以在循环上使用else
子句。最后一个链接有一个例子。
答案 7 :(得分:1)
while
循环采用条件参数(意味着通常为true或false,或者可以解释为这样),并且仅在条件产生True
时执行。
至于while True
?那么,最简单的真正条件是True
本身!所以这是一个无限循环,通常在需要大量循环的游戏中很好。 (但是,从我的角度来看,更常见的是将某种“完成”变量设置为false,然后将其设置为true以结束游戏,并且循环看起来更像while not done:
或其他任何内容。)
答案 8 :(得分:1)
在某些语言中,True只是数字的别名和别名。您可以通过阅读有关boolean logic的更多信息了解更多信息。
答案 9 :(得分:1)
直接回答您的问题:循环条件为True。在这段特殊的代码中,它总是如此。
答案 10 :(得分:0)
while
循环继续循环,直到条件为false。例如(伪代码):
i = 0
while i < 10
i++
对于循环的每次迭代,i
将递增1,直到它为10.此时,条件i < 10
不再为真,循环将完成。
由于while True
中的条件明确且始终为true
,因此循环将永远不会结束(直到它以某种其他方式被破坏,通常是由break
内的{{1}}构造。循环体)。
答案 11 :(得分:0)
除了True
之外,没有任何评估速度True
。因此,如果您使用while True
而不是while 1==1
等,那就很好。
答案 12 :(得分:0)
while True:
...
意味着无限循环。
while语句通常用于有限循环。但是使用常量'True'可以保证while语句的重复,而不需要控制循环(例如在迭代中设置一个布尔值),除非你想要破坏它。
实际上
True == (1 == 1)
答案 13 :(得分:0)
而True表示无限循环,这通常用于长过程。 你可以改变
while True:
与
while 1:
答案 14 :(得分:0)
虽然大多数答案在不同程度上都是正确的,但它们都没有我想要的那么简洁。
简单地讲,使用while True:
只是运行循环的一种方法,该循环将继续运行,直到您使用break
或return
明确地退出循环为止。由于True始终会评估为True,因此您必须在需要时强制循环结束。
while True:
# do stuff
if some_condition:
break
# do more stuff - code here WILL NOT execute when `if some_condition:` evaluates to True
通常情况下,循环将设置为运行,直到while条件为false或达到预定义的终点为止:
do_next = True
while do_next:
# do stuff
if some_condition:
do_next = False
# do more stuff - code here WILL execute even when `if some_condition:` evaluates to True
这两个代码块可以有效地完成相同的事情
如果循环要评估的条件可能不是控件中不直接包含的值(例如用户输入值),则通常需要验证数据并明确退出循环,因此您需要这样做无论哪种方法。
while True
的格式更加Python化,因为您知道break
在那个确切点打破了循环,而do_next = False
可以在下一次评估{{1}之前做更多的工作}。
答案 15 :(得分:-2)
任何事情都可以视为真,直到出现相反的情况。这是二元性的运作方式。这是一种比较对立面的方式。黑色可以是真的直到白色,此时它是假的。黑色也可以是假的,直到白色,此时它是真的。它不是一个国家,而是对立国家的比较。如果两者都是真的那么另一个是错的。 True并不意味着它是正确的或被接受的。这是一个相反总是错误的状态。这是二元性的。