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."
Alors que QUOI est vrai?
Je pense que dire «tant que vrai» est un raccourci, mais pour quoi faire? Pendant que la variable «main» reçoit une valeur? Et si la variable «main» ne reçoit pas de valeur?
True
n'est pas un alias pour1
. Bien que dans de nombreuses langues1
évalue la vérité dans un contexte booléen.True
a été un alias pour1
, non? Bien que oui, dans les dernières versions de Python, il existe un vrai type booléen.__builtin__
module, True et False. (Les constantes True et False ont été ajoutées à la construction -ins dans Python 2.2.1, mais les versions 2.2.1 sont simplement définies sur des valeurs entières de 1 et 0 et ne sont pas d'un type différent.) ".Réponses:
while True
signifie boucle pour toujours. L'while
instruction prend une expression et exécute le corps de la boucle tandis que l'expression prend la valeur (booléen) "true".True
évalue toujours la valeur booléenne «true» et exécute ainsi indéfiniment le corps de la boucle. C'est un idiome auquel vous vous habituerez finalement! La plupart des langues que vous êtes susceptible de rencontrer ont des idiomes équivalents.Notez que la plupart des langages ont généralement un mécanisme pour sortir prématurément de la boucle. Dans le cas de Python, c'est la
break
déclaration dans lecmd == 'e'
cas de l'exemple dans votre question.la source
while True==True
est moche. C'est aussi moche quewhile 'apples'!='oranges'
:)true==true
c'est une amélioration, où vous arrêtez-vous? Ce ne serait pas(true==true)==true
encore mieux?Tant que
True
c'estTrue
.La boucle while s'exécutera tant que l'expression conditionnelle sera évaluée
True
.Puisque
True
toujours évalué àTrue
, la boucle s'exécutera indéfiniment, jusqu'à ce que quelque chose dans la bouclereturn
s oubreak
s.la source
Tout ce qui se trouve à l'intérieur du () de l'instruction while va être évalué comme un booléen. Cela signifie qu'il est converti en vrai ou faux.
Considérez dans la déclaration
while(6 > 5)
Il évalue d'abord l'expression
6 > 5
qui esttrue
ainsi équivaut à direwhile(true)
Tout ce qui n'est pas FALSE, 0, une chaîne vide "", null ou undefined est susceptible d'être évalué comme vrai.
Quand j'ai commencé à programmer, j'avais l'habitude de faire des choses comme
if(foo == true)
, je ne savais pas que c'était pratiquement la même chose queif(foo)
.Alors quand tu dis c'est
while(true)
comme direwhile(true == true)
Donc, pour répondre à votre question: alors que VRAI est Vrai.
la source
tandis que
True
c'est vrai - c'est-à-dire toujours. C'est une boucle infinieNotez la distinction importante ici entre
True
lequel est un mot-clé dans la langue indiquant une valeur constante d'un type particulier, et «vrai» qui est un concept mathématique.la source
while(5)
en C, où il n'y a pas de booléen approprié. Cela ne veut pas direwhile(5==1)
, cela signifiewhile(5!=0)
.while(5)
en C signifie while5
est vrai, pas tant que c'esttrue
ou0
, qui est quelque chose de complètement différent.5
est toujours vrai. En général, lorsque les langues ont un mot-clétrue
, c'est une constante qui est vraie, mais pas la seule constante qui est vraie. De même, cefalse
n'est pas nécessairement la seule valeur qui soit fausse.Dans ce contexte, je suppose que cela pourrait être interprété comme
do ... while cmd != 'e'
la source
True
est toujoursTrue
, doncwhile True
boucle pour toujours.Le
while
mot clé prend une expression et effectue une boucle tant que l'expression est vraie.True
est une expression qui est toujours vraie.À titre d'exemple éventuellement clarifiant, considérons ce qui suit:
a = 1 result = a == 1
Ici,
a == 1
reviendraTrue
, et donc misTrue
enresult
. Par conséquent,a = 1 while a == 1: ...
est équivalent à:
while True: ...
à condition de ne pas modifier la valeur de l'
a
intérieur de lawhile
boucle.la source
True
n'est pas toujoursTrue
, par exempleTrue = False
. ;-)Formellement,
True
est une constante intégrée Python de type booléen .Vous pouvez utiliser des opérations booléennes sur des types booléens (à l'invite interactive python par exemple) et convertir des nombres en types booléens:
>>> 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
Et il y a potentiellement des "gotcha" avec ce que vous voyez et ce que voit le compilateur 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
Pour savoir comment Python stocke les types booléens en interne, vous pouvez convertir les types booléens en nombres entiers et True sera 1 et False 0:
>>> print True+0 1 >>> print True+1 2 >>> print False+0 0 >>> print False+1 1
En fait, le
bool
type Python est une sous-classe duint
type de Python :>>> type(True) <type 'bool'> >>> isinstance(True, int) True
La partie la plus importante de votre question est "Qu'est-ce que c'est
while True
?" est «ce qui est vrai», et un corollaire important: qu'est-ce qui est faux?Tout d'abord, pour chaque langue que vous apprenez, apprenez ce qu'elle considère comme «véridique» et «faux». Python considère Truth légèrement différemment de Perl Truth par exemple. D'autres langages ont des concepts légèrement différents de vrai / faux. Sachez ce que votre langage considère comme vrai et faux pour différentes opérations et contrôle de flux pour éviter de nombreux maux de tête plus tard!
Il existe de nombreux algorithmes dans lesquels vous souhaitez traiter quelque chose jusqu'à ce que vous trouviez ce que vous recherchez. D'où la boucle infinie ou la boucle indéfinie. Chaque langage a tendance à avoir son propre idiome pour ces constructions. Voici les boucles infinies courantes en C, qui fonctionnent également pour Perl:
for(;;) { /* loop until break */ } /* or */ while (1) { return if (function(arg) > 3); }
La
while True:
forme est courante en Python pour les boucles indéfinies avec un moyen de sortir de la boucle. Apprenez le contrôle de flux Python pour comprendre comment vous sortez deswhile True
boucles. Contrairement à la plupart des langages, par exemple, Python peut avoir uneelse
clause sur une boucle. Il y a un exemple dans le dernier lien.la source
Une
while
boucle prend un argument conditionnel (ce qui signifie quelque chose qui est généralement vrai ou faux, ou qui peut être interprété comme tel), et ne s'exécute que lorsque la condition cèdeTrue
.Quant à
while True
? Eh bien, le vrai conditionnel le plus simple estTrue
lui - même! Il s'agit donc d'une boucle infinie, généralement bonne dans un jeu qui nécessite beaucoup de boucles. (De mon point de vue, cependant, il est plus courant de définir une sorte de variable "done" sur false, puis de la rendre vraie pour terminer le jeu, et la boucle ressemblerait pluswhile not done:
ou autre.)la source
Dans certaines langues, True est juste et alias pour le nombre. Vous pouvez en savoir plus sur la raison en en lisant davantage sur la logique booléenne .
la source
Pour répondre directement à votre question: tant que la condition de boucle est True. Ce qui est toujours le cas, dans ce bit de code particulier.
la source
while
les boucles continuent à boucler jusqu'à ce que la condition soit fausse. Par exemple (pseudocode):i = 0 while i < 10 i++
À chaque itération de la boucle,
i
sera incrémentée de 1, jusqu'à ce qu'elle soit 10. À ce stade, la conditioni < 10
n'est plus vraie et la boucle se terminera.Puisque la condition dans
while True
est explicitement et toujourstrue
, la boucle ne se terminera jamais (jusqu'à ce qu'elle soit interrompue d'une autre manière, généralement par une construction commebreak
dans le corps de la boucle).la source
Rien ne vaut
True
plus vite queTrue
. Donc, c'est bien si vous utilisez à lawhile True
place dewhile 1==1
etc.la source
while True: ...
signifie boucle infinie.
L'instruction while est souvent utilisée pour une boucle finie. Mais l'utilisation de la constante 'True' garantit la répétition de l'instruction while sans avoir besoin de contrôler la boucle (en définissant une valeur booléenne à l'intérieur de l'itération par exemple), à moins que vous ne souhaitiez la rompre.
En réalité
True == (1 == 1)
la source
tandis que True signifie une boucle infinie, cela est généralement utilisé par un processus long. vous pouvez changer
while True:
avec
while 1:
la source
Bien que la plupart de ces réponses soient correctes à des degrés divers, aucune n'est aussi succincte que je le souhaiterais.
En termes simples, utiliser
while True:
n'est qu'un moyen d'exécuter une boucle qui continuera à s'exécuter jusqu'à ce que vous en sortiez explicitement en utilisantbreak
oureturn
. Puisque True sera toujours évalué à True, vous devez forcer la boucle à se terminer quand vous le souhaitez.while True: # do stuff if some_condition: break # do more stuff - code here WILL NOT execute when `if some_condition:` evaluates to True
Alors que normalement une boucle serait définie pour s'exécuter jusqu'à ce que la condition while soit fausse ou qu'elle atteigne un point final prédéfini:
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
Ces deux morceaux de code font effectivement la même chose
Si la condition par rapport à laquelle votre boucle évalue est peut-être une valeur qui ne figure pas directement dans votre contrôle, telle qu'une valeur d'entrée utilisateur, alors la validation des données et la sortie explicite de la boucle sont généralement nécessaires, vous voudrez donc le faire avec l'une ou l'autre méthode .
Le
while True
format est plus pythonique puisque vous savez que celabreak
brise la boucle à ce point précis, alors que vousdo_next = False
pourriez faire plus de choses avant la prochaine évaluation dedo_next
.la source
Tout peut être considéré comme vrai jusqu'à ce que le contraire soit présenté. C'est ainsi que fonctionne la dualité. C'est une façon de comparer les contraires. Le noir peut être vrai jusqu'au blanc, auquel point il est faux. Le noir peut également être faux jusqu'au blanc, auquel point il est vrai. Ce n'est pas un état mais une comparaison d'états opposés. Si l'un ou l'autre est vrai, l'autre est faux. Vrai ne signifie pas qu'il est correct ou accepté. C'est un état où le contraire est toujours faux. C'est la dualité.
la source