一个关于“真实”的基本问题

等级:初学者

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 ,因此循环将无限期地运行,直到循环中的某些内容returnbreak为止。

而“ 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 booltypes是Python inttypes的一个子类:

 >>> 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。 它总是在这个特定的代码中。

任何东西都可以被视为真,直到相反。 这是双重性的工作方式。 这是对比的一种方式。 黑色可​​以是真的,直到白色,这是错误的。 黑色也可以是错误的,直到白色是真的。 这不是一个国家,而是一个相反状态的比较。 如果其中一个是对的,另一个是错的。 并不意味着这是正确的或被接受的。 这是一个对面总是假的状态。 这是双重性。