关于“真实”的基本问题

时间:2010-09-20 19:06:08

标签: python syntax

级别:初学者

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'没有赋值?该怎么办?

16 个答案:

答案 0 :(得分:90)

while True意味着永远循环。 while语句接受表达式并执行循环体,而表达式求值为(boolean)“true”。 True总是求值为布尔值“true”,因此无限期地执行循环体。这是你最终会习惯的成语!您可能遇到的大多数语言都有相同的习语。

请注意,大多数语言通常都有一些早期打破循环的机制。对于Python,它是您问题中样本break情况下的cmd == 'e'语句。

答案 1 :(得分:38)

  

我的问题:什么是真的?

TrueTrue

只要条件表达式求值为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)

正式地,Truebuilt-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认为TruthPerl 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:只是运行循环的一种方法,该循环将继续运行,直到您使用breakreturn明确地退出循环为止。由于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并不意味着它是正确的或被接受的。这是一个相反总是错误的状态。这是二元性的。