一个关于“真实”的基本问题
等级:初学者
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."
我的问题:什么是真的?
我认为“虽然真实”是速记,但为什么呢? 而variables“手”正在分配一个值? 以及如果variables“手”没有被赋值?
while True
意味着循环永远。 while
语句需要一个expression式,并在expression式求值为(boolean)“true”时执行循环体。 True
总是评估为布尔“真”,从而无限期地执行循环体。 这是一个习惯,你会习惯最终! 你可能遇到的大多数语言都有相同的习语。
请注意,大多数语言通常都有一些早期打破循环的机制。 在Python的情况下,它是你的问题中的示例中cmd == 'e'
情况下的break
语句。
我的问题:什么是真的?
而True
的。
只要条件expression式的计算结果为True
,while循环就会运行。
由于True
总是计算为True
,因此循环将无限期地运行,直到循环中的某些内容return
或break
为止。
而“ True
是真的 – 即永远。 这是一个无限循环
请注意这里的重要区别,它是表示一个特定types的常数值的语言中的关键字“真”和作为math概念的“真”。
我的问题:什么是真的?
while语句()中的所有内容都将被评估为布尔值。 这意味着它被转换成真或假。
在while(6 > 5)
它首先评估expression式6 > 5
,这是true
,
任何非FALSE,0,emptrystring“”,null或undefined都可能被评估为true。
当我第一次开始编程时,我曾经做过如if(foo == true)
事情,但是我没有意识到这与if(foo)
几乎是一样的。
所以当你说的while(true)
就像是在说while(true == true)
所以要回答你的问题:而TRUE是真的。
在这种情况下,我想这可以解释为
do ... while cmd != 'e'
在forms上, True
是一个Python 内置的booltypes的常量 。
你可以在booltypes上使用布尔操作 (例如在交互式python提示符下) 并将数字转换为booltypes:
>>> 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如何在内部存储booltypes的提示,您可以将booltypes转换为整数,True将会变为1,并且为False 0:
>>> print True+0 1 >>> print True+1 2 >>> print False+0 0 >>> print False+1 1
实际上,Python bool
types是Python int
types的一个子类:
>>> type(True) <type 'bool'> >>> isinstance(True, int) True
你问题中更重要的部分是“什么是while True
?” 是“什么是真的”,一个重要的推论:什么是错误的?
首先,对于你正在学习的每种语言,学习语言认为“真实”和“虚假”。 例如,Python认为Truth与Perl Truth稍有不同。 其他语言的真/假概念略有不同 。 知道你的语言认为是真的和假的不同的操作和stream量控制,以避免以后很多头痛!
有很多algorithm,你想处理的东西,直到你find你在找什么。 因此无限循环或无限循环。 每种语言对于这些结构都倾向于有自己的成语。 这里是常见的C无限循环,也适用于Perl:
for(;;) { /* loop until break */ } /* or */ while (1) { return if (function(arg) > 3); }
while True:
forms在Python中是常见的,因为它有一些突破循环的不确定循环。 了解Python stream程控制,以了解如何while True
循环中跳出。 与大多数语言不同,例如,Python可以在循环中有一个else
子句。 最后一个链接中有一个例子。
while
循环需要一个条件参数(意思是通常是真或假,或者可以被解释为这样),并且只有在条件成立时才执行。
至于while True
? 那么,最简单的真正的条件是True
本身! 所以这是一个无限循环,通常在需要大量循环的游戏中是很好的。 (但从我的angular度来看,更常见的是将某种“完成”variables设置为false,然后将结果设置为true来结束游戏,而循环看起来更像是while not done:
)。
在某些语言中,True只是数字的别名。 你可以通过阅读关于布尔逻辑的更多信息来了解更多信息。
while
循环继续循环直到条件为false。 比如(伪代码):
i = 0 while i < 10 i++
随着循环的每一次迭代, i
将增加1,直到它为10.在这一点上,条件i < 10
不再是真实的,循环将完成。
由于while True
的条件是明确且始终为true
,所以循环将永远不会结束(直到它以某种其他方式分裂出来,通常由循环体内的构造如break
)。
True
永远是True
,所以while True
会永久循环。
while
关键字接受一个expression式,并在expression式为真时循环。 True
是一个永远是真的expression。
作为一个可能的澄清的例子,考虑以下几点:
a = 1 result = a == 1
在这里, a == 1
将返回True
,并因此将True
变成result
。 因此,
a = 1 while a == 1: ...
相当于:
while True: ...
前提是你不要改变while
循环内部的值。
没有什么比True
计算结果更快。 所以,如果你使用while True
而不是while 1==1
等
while True: ...
意味着无限循环。
while语句经常使用有限循环。 但是使用常量“True”可以保证while语句的重复,而不需要控制循环(例如,在迭代中设置一个布尔值),除非你想打破这个循环。
事实上
True == (1 == 1)
而True则意味着无限循环,这通常是由长进程使用的。 你可以改变
while True:
同
while 1:
要直接回答你的问题:while循环条件为True。 它总是在这个特定的代码中。
任何东西都可以被视为真,直到相反。 这是双重性的工作方式。 这是对比的一种方式。 黑色可以是真的,直到白色,这是错误的。 黑色也可以是错误的,直到白色是真的。 这不是一个国家,而是一个相反状态的比较。 如果其中一个是对的,另一个是错的。 并不意味着这是正确的或被接受的。 这是一个对面总是假的状态。 这是双重性。