niveau: débutant
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."
ma question: Alors que ce qui est vrai?
je pense que dire 'tant que vrai' est un raccourci mais pour quoi? pendant que la variable 'hand' reçoit une valeur? et que se passe-t-il si la valeur 'variable' n'est pas affectée?
while True
signifie en boucle pour toujours. L'instruction while
prend une expression et exécute le corps de la boucle tandis que l'expression est évaluée à (booléen) "true". True
donne toujours la valeur booléenne "true" et exécute donc le corps de la boucle indéfiniment. C'est un idiome auquel vous vous habituerez un jour! La plupart des langues que vous rencontrerez ont des idiomes équivalents.
Notez que la plupart des langues ont généralement un mécanisme pour sortir de la boucle plus tôt. Dans le cas de Python, il s’agit de l’instruction break
de la cmd == 'e'
cas de l’échantillon dans votre question.
ma question: Alors que ce qui est vrai?
Alors que True
est True
.
La boucle while s'exécutera tant que l'expression conditionnelle aura la valeur True
.
Étant donné que True
est toujours évalué à True
, la boucle s'exécutera indéfiniment jusqu'à ce que quelque chose se trouve dans la boucle return
s ou break
s.
tandis que True
est vrai - c'est-à-dire toujours. C'est une boucle infinie
Notez la distinction importante ici entre True
qui est un mot clé dans le langage désignant une valeur constante d'un type particulier et "true" qui est un concept mathématique.
ma question: Alors que ce qui est vrai?
Tout ce qui se trouve à l'intérieur de l'instruction () de l'instruction while va être évalué comme un booléen. Ce qui signifie qu'il est converti en vrai ou en faux.
Considérer dans l'instruction while(6 > 5)
Il évalue d’abord l’expression 6 > 5
Qui est true
donc équivaut à dire while(true)
Tout ce qui n'est pas FALSE, 0, une chaîne emptry "", null ou undefined est susceptible d'être évalué à true.
Quand j'ai commencé à programmer, je faisais des choses comme if(foo == true)
, je n'avais pas réalisé que c'était pratiquement la même chose que if(foo)
.
Alors, quand vous dites while(true)
c'est comme si vous dites while(true == true)
Donc, pour répondre à votre question: Tandis que TRUE est vrai.
Dans ce contexte, je suppose que cela pourrait être interprété comme
do
...
while cmd != 'e'
Formellement, True
est un type Python constante intégrée = de bool .
Vous pouvez utiliser opérations booléennes sur les types bool (au niveau interactif python Demander par exemple) et convertir les nombres en types 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
Et il y a potentiellement des "gotcha" avec ce que vous voyez et ce que le compilateur Python voit:
>>> 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
Comme indication de la manière dont Python stocke les types bool en interne, vous pouvez convertir les types bool en entiers et True deviendra 1 et False 0:
>>> print True+0
1
>>> print True+1
2
>>> print False+0
0
>>> print False+1
1
En fait, Python bool
type est une sous-classe du type int
de Python:
>>> type(True)
<type 'bool'>
>>> isinstance(True, int)
True
La partie la plus importante de votre question est "Qu'est-ce que while True
?" est 'qu'est-ce qui est vrai' et un corollaire important: qu'est-ce qui est faux?
Premièrement, pour chaque langue que vous apprenez, découvrez ce que la langue considère comme "vérité" et "falsey". Python considère vérité légèrement différent de vérité Perl par exemple. Les autres langues ont concepts légèrement différents de true/false. Sachez ce que votre langage considère comme étant True et False pour différentes opérations et contrôle de flux afin d'é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 langue a tendance à avoir son propre idiome pour ces constructions. Voici les boucles C infinies courantes, qui fonctionnent également pour Perl:
for(;;) { /* loop until break */ }
/* or */
while (1) {
return if (function(arg) > 3);
}
La forme while True:
Est courante dans Python pour les boucles indéfinies avec un moyen de sortir de la boucle. Learn Python flux control pour comprendre comment vous sortez des boucles while True
Contrairement à la plupart des langages, par exemple, Python peut avoir une clause else
sur une boucle. Il y a un exemple dans le dernier lien.
True
est toujours True
, donc while True
fera une boucle pour toujours.
Le mot clé while
prend une expression et effectue une boucle tant que cette expression est vraie. True
est une expression qui est toujours vraie.
En guise d'exemple, prenez les points suivants:
a = 1
result = a == 1
Ici, a == 1
retournera True
et mettra donc True
dans result
. Par conséquent,
a = 1
while a == 1:
...
est équivalent à:
while True:
...
à condition de ne pas modifier la valeur de a
à l'intérieur de la boucle while
.
Une boucle while
prend un argument conditionnel (ce qui signifie quelque chose qui est généralement soit vrai, soit faux, ou peut être interprété en tant que tel), et ne s'exécute que lorsque la condition donne True
.
Pour ce qui est de while True
? Eh bien, le vrai conditionnel le plus simple est True
lui-même! Il s’agit donc d’une boucle infinie, généralement bonne dans un jeu qui nécessite beaucoup de boucles. (Plus commun de mon point de vue, cependant, est de définir une sorte de variable "done" sur false, puis de le rendre vrai pour mettre fin au jeu, et la boucle ressemblerait davantage à while not done:
ou peu importe.)
Dans certaines langues, True est un alias pour le nombre. Vous pouvez en apprendre plus sur la raison en lisant plus à propos de logique booléenne .
Pour répondre directement à votre question: tant que la condition de boucle est vraie. Ce qui est toujours le cas, dans ce morceau de code particulier.
alors que True signifie une boucle infinie, cette utilisation est généralement un long processus. vous pouvez changer
while True:
avec
while 1:
while True:
...
signifie boucle infinie.
L'instruction while est souvent utilisée comme une boucle finie. Mais l'utilisation de la constante 'True' garantit la répétition de l'instruction while sans qu'il soit nécessaire de contrôler la boucle (définir une valeur booléenne dans l'itération, par exemple), à moins que vous ne souhaitiez la rompre.
En réalité
True == (1 == 1)
Rien n'indique que True
soit plus rapide que True
. Donc, c'est bien si vous utilisez while True
au lieu de while 1==1
etc.
Les boucles while
continuent à fonctionner 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é de 1, jusqu'à atteindre 10. À ce stade, la condition i < 10
n'est plus vrai et la boucle se terminera.
Depuis la condition en while True
est explicitement et toujours true
, la boucle ne se terminera jamais (jusqu’à ce qu’elle soit séparée d’une autre manière, habituellement par une construction telle que break
dans le corps de la boucle).