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."
Mientras que ¿QUÉ es verdad?
Creo que decir "si bien es cierto" es una abreviatura, pero ¿para qué? ¿Mientras se asigna un valor a la variable 'mano'? ¿Y si a la variable 'mano' no se le asigna un valor?
True
no es un alias para1
. Aunque en muchos idiomas se1
evalúa la verdad en contexto booleano.True
ha sido un alias para1
, ¿no? Aunque sí, en las últimas versiones de Python hay un tipo booleano real.__builtin__
módulo, Verdadero y Falso. (Se agregaron constantes Verdadero y Falso al compilado -ins en Python 2.2.1, pero las versiones 2.2.1 simplemente se establecen en valores enteros de 1 y 0 y no son de un tipo diferente.) ".Respuestas:
while True
significa bucle para siempre. Lawhile
declaración toma una expresión y ejecuta el cuerpo del bucle mientras que la expresión se evalúa como (booleana) "verdadera".True
siempre se evalúa como booleano "verdadero" y, por lo tanto, ejecuta el cuerpo del bucle de forma indefinida. ¡Es un idioma al que te acostumbrarás eventualmente! La mayoría de los idiomas que probablemente encontrará tienen modismos equivalentes.Tenga en cuenta que la mayoría de los lenguajes suelen tener algún mecanismo para salir temprano del ciclo. En el caso de Python, es la
break
declaración en elcmd == 'e'
caso de la muestra en su pregunta.fuente
while True==True
es feo. Es tan feo comowhile 'apples'!='oranges'
:)true==true
es una mejora, ¿dónde te detienes? ¿No(true==true)==true
sería aún mejor?Mientras
True
seaTrue
.El ciclo while se ejecutará siempre que la expresión condicional se evalúe
True
.Como
True
siempre evalúa aTrue
, el ciclo se ejecutará indefinidamente, hasta que algo dentro del cicloreturn
s obreak
s.fuente
Todo lo que esté dentro del () de la instrucción while se evaluará como booleano. Lo que significa que se convierte en verdadero o falso.
Considere en la declaración
while(6 > 5)
Primero evalúa la expresión
6 > 5
que estrue
lo mismo que decirwhile(true)
Todo lo que no sea FALSO, 0, una cadena vacía "", nula o indefinida probablemente se evaluará como verdadero.
Cuando comencé a programar, solía hacer cosas como
if(foo == true)
, no me di cuenta de que era prácticamente lo mismo queif(foo)
.Entonces, cuando dices,
while(true)
es como decirwhile(true == true)
Entonces, para responder su pregunta: Mientras que VERDADERO es Verdad.
fuente
while
True
es verdadero, es decir, siempre. Este es un bucle infinitoNote la importante distinción aquí entre
True
cuál es una palabra clave en el lenguaje que denota un valor constante de un tipo particular, y "verdadero", que es un concepto matemático.fuente
while(5)
en C, donde no hay valores booleanos adecuados. No significawhile(5==1)
, significawhile(5!=0)
.while(5)
en C significa while5
es verdadero, no while sutrue
o0
, que es algo completamente diferente.5
siempre es cierto. En general, cuando los lenguajes tienen una palabra clavetrue
, es una constante verdadera, pero no la única constante verdadera. Del mismo modofalse
no es necesariamente el único valor que es falso.En este contexto, supongo que podría interpretarse como
do ... while cmd != 'e'
fuente
True
es siempreTrue
, por lo que sewhile True
repetirá para siempre.La
while
palabra clave toma una expresión y se repite mientras la expresión es verdadera.True
es una expresión que siempre es cierta.Como un ejemplo posiblemente aclaratorio, considere lo siguiente:
a = 1 result = a == 1
Aquí,
a == 1
volveráTrue
y, por tanto, se pondráTrue
enresult
. Por lo tanto,a = 1 while a == 1: ...
es equivalente a:
while True: ...
siempre que no altere el valor de
a
dentro delwhile
ciclo.fuente
True
no siempreTrue
, por ejemploTrue = False
. ;-)Formalmente,
True
es una constante incorporada de Python de tipo bool .Puede usar operaciones booleanas en tipos bool (en el indicador interactivo de Python, por ejemplo) y convertir números en tipos 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
Y hay potencialmente "problemas" con lo que ves y lo que ve el compilador de 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
Como una pista de cómo Python almacena los tipos bool internamente, puede convertir los tipos bool en enteros y True resultará ser 1 y False 0:
>>> print True+0 1 >>> print True+1 2 >>> print False+0 0 >>> print False+1 1
De hecho, el
bool
tipo de Python es una subclase delint
tipo de Python :>>> type(True) <type 'bool'> >>> isinstance(True, int) True
La parte más importante de su pregunta es "¿Qué es
while True
?" es 'lo que es verdadero', y un corolario importante: ¿qué es falso?Primero, para cada idioma que esté aprendiendo, aprenda lo que el idioma considera "verdadero" y "falso". Python considera Truth de forma ligeramente diferente a Perl Truth, por ejemplo. Otros lenguajes tienen conceptos ligeramente diferentes de verdadero / falso. ¡Sepa lo que su lenguaje considera verdadero y falso para diferentes operaciones y control de flujo para evitar muchos dolores de cabeza más adelante!
Hay muchos algoritmos en los que desea procesar algo hasta encontrar lo que busca. De ahí el bucle infinito o bucle indefinido. Cada idioma tiende a tener su propio idioma para estas construcciones. Aquí hay bucles infinitos de C comunes, que también funcionan para Perl:
for(;;) { /* loop until break */ } /* or */ while (1) { return if (function(arg) > 3); }
La
while True:
forma es común en Python para bucles indefinidos con alguna forma de salir del bucle. Aprenda el control de flujo de Python para comprender cómo se sale de loswhile True
bucles. A diferencia de la mayoría de los lenguajes, por ejemplo, Python puede tener unaelse
cláusula en un bucle. Hay un ejemplo en el último enlace.fuente
Un
while
bucle toma un argumento condicional (es decir, algo que generalmente es verdadero o falso, o puede interpretarse como tal), y solo se ejecuta mientras la condición cedeTrue
.En cuanto a
while True
? Bueno, ¡el condicional verdadero más simple es élTrue
mismo! Así que este es un bucle infinito, generalmente bueno en un juego que requiere muchos bucles. (Más común desde mi perspectiva, sin embargo, es establecer algún tipo de variable "hecho" en falso y luego convertirlo en verdadero para finalizar el juego, y el ciclo se parecería máswhile not done:
o lo que sea).fuente
En algunos idiomas, True es solo y un alias para el número. Puede aprender más sobre la razón de esto leyendo más sobre lógica booleana .
fuente
Para responder a su pregunta directamente: mientras que la condición de bucle es Verdadero. Lo que siempre es, en este fragmento de código en particular.
fuente
while
los bucles continúan en bucle hasta que la condición es falsa. Por ejemplo (pseudocódigo):i = 0 while i < 10 i++
Con cada iteración del ciclo,
i
se incrementará en 1, hasta que sea 10. En ese punto, la condicióni < 10
ya no es verdadera y el ciclo se completará.Dado que la condición en
while True
es explícita y siempretrue
, el bucle nunca terminará (hasta que se rompa de alguna otra manera, generalmente por una construcción comobreak
dentro del cuerpo del bucle).fuente
Nada se evalúa
True
más rápido queTrue
. Entonces, es bueno si usa enwhile True
lugar dewhile 1==1
etc.fuente
while True: ...
significa bucle infinito.
La instrucción while se usa a menudo para un bucle finito. Pero el uso de la constante 'Verdadero' garantiza la repetición de la instrucción while sin la necesidad de controlar el ciclo (estableciendo un valor booleano dentro de la iteración, por ejemplo), a menos que desee romperlo.
De hecho
True == (1 == 1)
fuente
mientras que Verdadero significa bucle infinito, esto generalmente se usa mediante un proceso largo. tu puedes cambiar
while True:
con
while 1:
fuente
Si bien la mayoría de estas respuestas son correctas en diversos grados, ninguna de ellas es tan sucinta como me gustaría.
En pocas palabras, usar
while True:
es solo una forma de ejecutar un bucle que continuará ejecutándose hasta que se salga explícitamente de él usandobreak
oreturn
. Dado que True siempre se evaluará como True, debe forzar el final del ciclo cuando lo desee.while True: # do stuff if some_condition: break # do more stuff - code here WILL NOT execute when `if some_condition:` evaluates to True
Mientras que normalmente un bucle estaría configurado para ejecutarse hasta que la condición while sea falsa o alcance un punto 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
Esos dos fragmentos de código hacen efectivamente lo mismo
Si la condición contra la que se evalúa su ciclo es posiblemente un valor que no está directamente en su control, como un valor de entrada del usuario, entonces generalmente es necesario validar los datos y salir explícitamente del ciclo, por lo que querrá hacerlo con cualquiera de los métodos .
El
while True
formato es más pitónico ya que sabes quebreak
está rompiendo el ciclo en ese punto exacto, mientras quedo_next = False
podrías hacer más cosas antes de la próxima evaluación dedo_next
.fuente
Cualquier cosa puede tomarse como Verdadero hasta que se presente lo contrario. Así es como funciona la dualidad. Es una forma de comparar los opuestos. El negro puede ser verdadero hasta el blanco, momento en el que es falso. El negro también puede ser falso hasta el blanco, momento en el que es verdadero. No es un estado sino una comparación de estados opuestos. Si alguno es Verdadero, el otro está equivocado. Verdadero no significa que sea correcto o aceptado. Es un estado donde lo contrario siempre es falso. Es dualidad.
fuente