una pregunta básica sobre “si bien es cierto”

nivel: principiante

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

mi pregunta: mientras que lo que es verdad?

Calculo que decir ‘si bien es cierto’ es una abreviatura, pero ¿para qué? ¿Mientras que a la variable ‘mano’ se le asigna un valor? y ¿qué pasa si a la variable ‘mano’ no se le asigna un valor?

while True significa bucle para siempre. La instrucción while toma una expresión y ejecuta el cuerpo del bucle mientras que la expresión se evalúa como (boolean) “verdadero”. True siempre se evalúa como booleano “true” y, por lo tanto, ejecuta el cuerpo del bucle indefinidamente. ¡Es un idioma al que acabarás acostumbrándote! La mayoría de los idiomas que probablemente encuentres tienen expresiones idiomáticas equivalentes.

Tenga en cuenta que la mayoría de los lenguajes suelen tener algún mecanismo para salir del ciclo antes de tiempo En el caso de Python, es la instrucción break en el caso cmd == 'e' de la muestra en su pregunta.

mi pregunta: mientras que lo que es verdad?

Mientras que True es True .

El bucle while se ejecutará mientras la expresión condicional se evalúe como True .

Como True siempre se evalúa como True , el bucle se ejecutará de forma indefinida, hasta que algo dentro del bucle return s o break s.

mientras que True es verdad, es decir, siempre. Este es un bucle infinito.

Note la distinción importante aquí entre True que es una palabra clave en el lenguaje que denota un valor constante de un tipo particular, y ‘verdadero’ que es un concepto matemático.

mi pregunta: mientras que lo que es verdad?

Todo lo que esté dentro del () de la sentencia while será evaluado como un valor booleano. Lo que significa que se convierte en verdadero o falso.

Considerar en la statement while(6 > 5)

Primero evalúa la expresión 6 > 5 que es true por lo que es lo mismo que decir while(true)

Cualquier cosa que no sea FALSE, 0, una cadena de caracteres “”, null o undefined probablemente se evalúe como verdadera.

La primera vez que comencé a progtwigr solía hacer cosas como if(foo == true) , no me di cuenta de que era prácticamente lo mismo que if(foo) .

Así que cuando dices while(true) es como se dice while(true == true)

Entonces, para responder a tu pregunta: Mientras que VERDADERO es verdadero.

En este contexto, supongo que podría interpretarse como

 do ... while cmd != 'e' 

True siempre es True , while True repetirá para siempre.

La palabra clave while toma una expresión y hace un bucle mientras la expresión es verdadera. True es una expresión que siempre es verdadera.

Como un posible ejemplo clarificador, considere lo siguiente:

 a = 1 result = a == 1 

Aquí, a == 1 devolverá True , y por lo tanto pondrá True en el result . Por lo tanto,

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

es equivalente a:

 while True: ... 

siempre que no alteres el valor de a bucle while.

Formalmente, True es una constante incorporada de Python de tipo bool .

Puede usar operaciones booleanas en tipos de bools (en el indicador interactivo de python, por ejemplo) y convertir números en tipos de bools:

 >>> 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 “gotcha’s” potencialmente con lo que ves y lo que ve el comstackdor 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 un indicio de cómo Python almacena los tipos de bool internamente, puede convertir los tipos de bool en enteros y True saldrá como 1 y False 0:

 >>> print True+0 1 >>> print True+1 2 >>> print False+0 0 >>> print False+1 1 

De hecho, el tipo bool Python es una subclase del tipo int de Python:

 >>> type(True)  >>> isinstance(True, int) True 

La parte más importante de tu 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 lenguaje considera “sincero” y “falsey”. Python considera la Verdad 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 que encuentre lo que está buscando. 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); } 

El while True: forma es común en Python para bucles indefinidos con alguna forma de salir del bucle. Aprende el control de flujo de Python para comprender cómo te sales de los bucles while True . A diferencia de la mayoría de los idiomas, por ejemplo, Python puede tener una cláusula else en un bucle. Hay un ejemplo en el último enlace.

Un bucle while toma un argumento condicional (es decir, algo que generalmente es verdadero o falso, o se puede interpretar como tal), y solo se ejecuta mientras la condición produce True .

En cuanto a while True ? Bueno, ¡el verdadero condicional más simple es el True 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 hacer que eso sea verdad para terminar el juego, y el bucle se vería más como while not done: o lo que sea).

En algunos idiomas, True es justo y alias para el número. Puede aprender más sobre por qué esto es leyendo más sobre la lógica booleana .

Para responder a su pregunta directamente: mientras que la condición de bucle es verdadera. Lo que siempre es, en este bit particular de código.

while 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 bucle, i se incrementará en 1, hasta que sea 10. En ese punto, la condición i < 10 ya no es verdadera y el bucle se completará.

Dado que la condición en la while True es explícita y siempre true , el bucle nunca terminará (hasta que se rompa de alguna otra forma, generalmente por una construcción como break dentro del cuerpo del bucle).

Nada se evalúa como True más rápido que True . Por lo tanto, es bueno si usas while True lugar de while 1==1 etc.

 while True: ... 

significa bucle infinito.

La sentencia while se usa a menudo de un bucle finito. Pero el uso de la constante ‘True’ garantiza la repetición de la instrucción while sin la necesidad de controlar el bucle (por ejemplo, establecer un valor booleano dentro de la iteración), a menos que quiera romperlo.

De hecho

 True == (1 == 1) 

mientras que True significa infinito bucle, esto usualmente se usa por un proceso largo. tu puedes cambiar

 while True: 

con

 while 1: 

Cualquier cosa puede ser tomada como Verdadera 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 que el blanco, en cuyo punto es falso. El negro también puede ser Falso hasta que el blanco en ese punto sea Verdadero. No es un estado sino una comparación de estados opuestos. Si cualquiera de las dos es verdadera, la otra es incorrecta. Verdad no significa que sea correcto o sea aceptado. Es un estado donde lo contrario es siempre falso. Es dualidad.