What does "while True" mean in Python?

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."

While WHAT is True?

I reckon saying 'while true' is shorthand, but for what? While the variable 'hand' is being assigned a value? And what if the variable 'hand' is not being assigned a value?

545816 次浏览

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

请注意,大多数语言通常都有一些提前打破循环的机制。在 Python 的例子中,它是您的问题中示例的 cmd == 'e'例子中的 break语句。

True为真(总是如此) ,这是一个无限循环

注意这里的重要区别: True是语言中表示特定类型的常量值的关键字,而“ true”是一个数学概念。

True始终是 True,所以 while True将永远循环。

while关键字接受一个表达式,并在表达式为 true 时循环。True是一个永远为真的表达式。

作为一个可能澄清的例子,考虑以下内容:

a = 1
result = a == 1

在这里,a == 1将返回 True,因此将 True放入 result,

a = 1
while a == 1:
...

等同于:

while True:
...

只要你不改变 while循环中 a的值。

while循环接受一个条件参数(意思是通常为 true 或 false,或者可以解释为 true 或 false) ,并且只在条件生成 True时执行。

As for while True? Well, the simplest true conditional is True itself! So this is an infinite loop, usually good in a game that requires lots of looping. (More common from my perspective, though, is to set some sort of "done" variable to false and then making that true to end the game, and the loop would look more like while not done: or whatever.)

while循环继续循环,直到条件为 false。例如(伪代码) :

i = 0
while i < 10
i++

在循环的每次迭代中,i将增加1,直到增加10。此时,条件 i < 10不再为真,循环将完成。

由于 while True中的条件是显式的并且总是 true,循环将永远不会结束(直到它以其他方式中断,通常是通过类似 break的构造在循环体中中断)。

在某些语言中,True 是数字的正义和别名。你可以通过阅读更多关于 布尔逻辑的内容来了解更多原因。

我的问题是: 什么是真的?

TrueTrue

只要条件表达式的计算结果为 True,while 循环就会运行。

因为 True总是计算为 True,所以循环将无限期地运行,直到循环 returnbreak中的某些内容出现。

我的问题是: 什么是真的?

While 语句()中的所有内容都将作为布尔值进行计算。意思是它可以转换成真或假。

在声明 while(6 > 5)中考虑

It first evaluates the expression 6 > 5 which is true so is the same as saying while(true)

Anything that is not FALSE, 0, an emptry string "", null, or undefined is likely to be evaluated to true.

当我第一次开始编程的时候,我曾经做过像 if(foo == true)这样的事情,我没有意识到它实际上和 if(foo)是一回事。

So when you say while(true) its like are saying while(true == true)

所以回答你的问题: 当真是真。

没有什么比 True的求值速度更快的了。所以,如果你使用 while True而不是 while 1==1等等,这是很好的。

在这种情况下,我认为它可以被解释为

do
...
while cmd  != 'e'

在形式上,True布尔类型的 Python 内置常数

您可以对 bool 类型使用 布尔运算(例如在交互式 python 提示符下) ,并将 转换数字用于 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

In fact, Python bool type is a subclass of Python's int type:

>>> type(True)
<type 'bool'>
>>> isinstance(True, int)
True

你的问题中更重要的部分是“什么是 while True?”是“什么是真的”,以及一个重要的推论: 什么是假的?

首先,对于你正在学习的每一种语言,学习语言认为的“真实”和“虚假”。例如,Python 对 真心话的考虑与对 Perl Truth的考虑略有不同。其他语言的 略有不同的概念为真/假。了解对于不同的操作和流控制,您的语言认为什么是正确的,什么是错误的,以避免以后的许多麻烦!

有许多算法,你想处理的东西,直到你找到你要找的东西。因此就有了 无限循环或者不确定循环。每种语言对于这些结构都有自己的习惯用法。下面是常见的 C 无限循环,它也适用于 Perl:

for(;;) { /* loop until break */ }


/* or */


while (1) {
return if (function(arg) > 3);
}

while True:形式在 Python 中很常见,用于不确定循环,并以某种方式打破循环。学习 Python流量控制以了解如何突破 while True循环。例如,与大多数语言不同,Python 可以在循环中包含 else子句。在最后一个链接中有一个例子。

while True:
...

意味着无限循环。

The while statement is often used of a finite loop. But using the constant 'True' guarantees the repetition of the while statement without the need to control the loop (setting a boolean value inside the iteration for example), unless you want to break it.

事实上

True == (1 == 1)

而 True 表示无限循环,这通常用于长进程。 你可以改变

while True:

while 1:

直接回答您的问题: 当循环条件为 True 时。在这段特殊的代码中,一直都是这样。

任何事情都可以被认为是真的,直到相反的情况出现。这就是二元性的工作方式。这是一种比较对立面的方式。黑色可以是真实的,直到白色为止。黑色也可以是假,直到白色为真。它不是一种状态,而是相反状态的比较。如果其中一个是真的,那么另一个就是错的。真并不意味着它是正确的或被接受的。这是一种相反的状态,总是错误的。这是二元性。

虽然这些答案大多数都有不同程度的正确性,但没有一个像我希望的那样简洁。

简单地说,使用 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格式更加简洁,因为您知道 break在那个确切的位置打破了循环,而 do_next = False可以在 do_next的下一次评估之前完成更多的工作。

而 True 意味着循环将无限运行,而 While 循环中没有提到破坏它的条件。

You can break the code using 'break' or 'return'

>>> a = ['foo', 'bar', 'baz']
>>> while True:
...     if not a:
...         break
...     print(a.pop(-1))
...
baz
bar
foo

从 realpython.com 复制的代码

如何在 Python 中使用 while True?

# Python program to demonstrate
# while loop with True
  

while True:
pass

如果我们运行上面的代码,那么这个循环将运行无限次。为了走出这个循环,我们将显式地使用 翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳

  1. With Break Statement
weekSalary = 0
dayOfWeek = 1
week = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
while(True):
if(week[dayOfWeek] == "Sunday"):
print("Week Over, Its holiday!!")
break
weekSalary += 2000
dayOfWeek += 1


print(str(weekSalary))
  1. With Return Statement

因为 True总是求值为 True,所以循环将无限期地运行,直到在循环 return内发生某些情况为止。

class Solution:
def minEatingSpeed(self, piles: List[int], h: int) -> int:
k = 1
while True:
total_time = 0
for i in piles:
total_time += ceil(i / k)
if total_time > h:
k += 1
else:
return k