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."
Enquanto o que é verdade?
Acho que dizer 'enquanto verdadeiro' é um atalho, mas para quê? Enquanto a variável 'mão' está recebendo um valor? E se a variável 'mão' não estiver recebendo um valor?
True
não é um apelido para1
. Embora em muitas linguagens1
avalie a verdade no contexto booleano.True
tem sido um apelido para1
, não? Embora sim, nas versões mais recentes do Python, existe um tipo booleano real.__builtin__
módulo, True e False. (Constantes True e False foram adicionadas ao construído -ins no Python 2.2.1, mas as versões 2.2.1 são simplesmente definidas para valores inteiros de 1 e 0 e não são de um tipo diferente.) ".Respostas:
while True
significa loop para sempre. Awhile
instrução pega uma expressão e executa o corpo do loop enquanto a expressão é avaliada como (booleano) "verdadeiro".True
sempre é avaliado como booleano "verdadeiro" e, portanto, executa o corpo do loop indefinidamente. É um idioma com o qual você acabará se acostumando! A maioria das linguagens que você provavelmente encontrará têm expressões equivalentes.Observe que a maioria das linguagens geralmente tem algum mecanismo para quebrar o loop antecipadamente. No caso do Python, é a
break
declaração nocmd == 'e'
caso do exemplo em sua pergunta.fonte
while True==True
é feio. É tão feio quantowhile 'apples'!='oranges'
:)true==true
é uma melhoria, onde você para? Não(true==true)==true
seria ainda melhor?Enquanto
True
estáTrue
.O loop while será executado enquanto a expressão condicional for avaliada como
True
.Como
True
sempre avalia comoTrue
, o loop será executado indefinidamente, até algo dentro do loopreturn
s oubreak
s.fonte
Tudo dentro de () da instrução while será avaliado como um booleano. O que significa que é convertido em verdadeiro ou falso.
Considere na declaração
while(6 > 5)
Ele primeiro avalia a expressão
6 > 5
quetrue
é o mesmo que dizerwhile(true)
Qualquer coisa que não seja FALSE, 0, uma string vazia "", nula ou indefinida provavelmente será avaliada como verdadeira.
Quando comecei a programar, costumava fazer coisas como
if(foo == true)
, não sabia que era praticamente a mesma coisa queif(foo)
.Então, quando você diz,
while(true)
é como se estivesse dizendowhile(true == true)
Então, para responder a sua pergunta: Enquanto TRUE é True.
fonte
enquanto
True
é verdade - ou seja, sempre. Este é um loop infinitoObserve a distinção importante aqui entre o
True
qual é uma palavra-chave na linguagem que denota um valor constante de um tipo particular, e 'verdadeiro' que é um conceito matemático.fonte
while(5)
em C, onde não há booleanos adequados. Isso não significawhile(5==1)
, significawhile(5!=0)
.while(5)
em C significa while5
é true, não while itstrue
or0
, o que é algo completamente diferente.5
é sempre verdade. Em geral, quando os idiomas têm uma palavra-chavetrue
, é uma constante verdadeira, mas não a única constante verdadeira. Da mesma forma,false
não é necessariamente o único valor que é falso.Neste contexto, suponho que poderia ser interpretado como
do ... while cmd != 'e'
fonte
True
é sempreTrue
, entãowhile True
fará um loop para sempre.A
while
palavra-chave pega uma expressão e faz um loop enquanto a expressão for verdadeira.True
é uma expressão sempre verdadeira.Como um exemplo possivelmente esclarecedor, considere o seguinte:
a = 1 result = a == 1
Aqui,
a == 1
vai voltarTrue
, e, portanto, colocarTrue
emresult
. Conseqüentemente,a = 1 while a == 1: ...
é equivalente a:
while True: ...
desde que você não altere o valor de
a
dentro dowhile
loop.fonte
True
nem sempreTrue
, por exemploTrue = False
. ;-)Formalmente,
True
é uma constante interna do Python do tipo bool .Você pode usar operações booleanas em tipos booleanos (no prompt Python interativo, por exemplo) e converter números em tipos booleanos:
>>> 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
E há "pegadinhas" potencialmente com o que você vê e o que o compilador Python vê:
>>> 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
Como uma dica de como o Python armazena os tipos bool internamente, você pode converter tipos bool em inteiros e True será 1 e False 0:
>>> print True+0 1 >>> print True+1 2 >>> print False+0 0 >>> print False+1 1
Na verdade, o
bool
tipo Python é uma subclasse doint
tipo Python :>>> type(True) <type 'bool'> >>> isinstance(True, int) True
A parte mais importante da sua pergunta é "O que é
while True
?" é 'o que é verdadeiro', e um corolário importante: o que é falso?Primeiro, para cada idioma que você está aprendendo, aprenda o que o idioma considera 'verdadeiro' e 'falsey'. Python considera a verdade ligeiramente diferente da verdade Perl, por exemplo. Outras linguagens têm conceitos ligeiramente diferentes de verdadeiro / falso. Saiba o que sua linguagem considera Verdadeiro ou Falso para diferentes operações e controle de fluxo para evitar muitas dores de cabeça mais tarde!
Existem muitos algoritmos nos quais você deseja processar algo até encontrar o que está procurando. Daí o loop infinito ou loop indefinido. Cada idioma tende a ter seu próprio idioma para essas construções. Aqui estão os loops infinitos C comuns, que também funcionam para Perl:
for(;;) { /* loop until break */ } /* or */ while (1) { return if (function(arg) > 3); }
A
while True:
forma é comum em Python para loops indefinidos com alguma forma de quebrar o loop. Aprenda o controle de fluxo do Python para entender como você rompe oswhile True
loops. Ao contrário da maioria das linguagens, por exemplo, Python pode ter umaelse
cláusula em um loop. Há um exemplo no último link.fonte
Um
while
loop recebe um argumento condicional (significando algo que geralmente é verdadeiro ou falso, ou pode ser interpretado como tal) e só executa enquanto a condição produzTrue
.Quanto
while True
? Bem, a condicional verdadeira mais simples éTrue
ela mesma! Portanto, este é um loop infinito, geralmente bom em um jogo que requer muitos looping. (Mais comum da minha perspectiva, porém, é definir algum tipo de variável "concluída" como falsa e, em seguida, torná-la verdadeira para encerrar o jogo, e o loop pareceria maiswhile not done:
ou algo assim .)fonte
Em alguns idiomas, True é apenas um apelido para o número. Você pode aprender mais por que isso ocorre lendo mais sobre a lógica booleana .
fonte
Para responder diretamente à sua pergunta: enquanto a condição do loop for True. O que sempre é, neste trecho específico de código.
fonte
while
os loops continuam em loop até que a condição seja falsa. Por exemplo (pseudocódigo):i = 0 while i < 10 i++
A cada iteração do loop,
i
será incrementado em 1, até chegar a 10. Nesse ponto, a condiçãoi < 10
não é mais verdadeira, e o loop será concluído.Como a condição in
while True
é explicitamente e sempretrue
, o loop nunca terminará (até que seja interrompido de alguma outra forma, geralmente por uma construção comobreak
dentro do corpo do loop).fonte
Nada é avaliado como
True
mais rápido do queTrue
. Portanto, é bom se você usar emwhile True
vez dewhile 1==1
etc.fonte
while True: ...
significa loop infinito.
A instrução while é freqüentemente usada para um loop finito. Mas usar a constante 'True' garante a repetição da instrução while sem a necessidade de controlar o loop (definindo um valor booleano dentro da iteração, por exemplo), a menos que você queira quebrá-lo.
De fato
True == (1 == 1)
fonte
enquanto True significa loop infinito, isso geralmente usa por processo longo. você pode mudar
while True:
com
while 1:
fonte
Embora a maioria dessas respostas esteja correta em vários graus, nenhuma delas é tão sucinta quanto eu gostaria.
Simplificando, using
while True:
é apenas uma forma de executar um loop que continuará a ser executado até que você explicitamente interrompa-o usandobreak
oureturn
. Como True sempre será avaliado como True, você deve forçar o encerramento do loop quando quiser.while True: # do stuff if some_condition: break # do more stuff - code here WILL NOT execute when `if some_condition:` evaluates to True
Embora normalmente um loop seja configurado para ser executado até que a condição while seja falsa ou atinja um ponto final predefinido:
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
Esses dois blocos de código fazem efetivamente a mesma coisa
Se a condição contra a qual seu loop é avaliado for possivelmente um valor que não está diretamente em seu controle, como um valor de entrada do usuário, então, validar os dados e interromper explicitamente o loop geralmente é necessário, então você deseja fazer isso com qualquer um dos métodos .
O
while True
formato é mais pythônico, pois você sabe quebreak
está quebrando o loop naquele ponto exato, ao passo quedo_next = False
poderia fazer mais coisas antes da próxima avaliação dedo_next
.fonte
Qualquer coisa pode ser considerada Verdadeira até que o oposto seja apresentado. É assim que a dualidade funciona. É uma forma de comparar os opostos. O preto pode ser verdadeiro até o branco, ponto em que é falso. O preto também pode ser falso até o branco, ponto em que é verdadeiro. Não é um estado, mas uma comparação de estados opostos. Se um for verdadeiro, o outro está errado. Verdadeiro não significa que seja correto ou seja aceito. É um estado em que o oposto é sempre falso. É dualidade.
fonte