0
votes

Comment supprimer un personnage de la chaîne après chaque boucle dans une boucle tandis que

J'essaie d'imprimer une chaîne qui inclut des lettres dans l'alphabet. Après chaque lettre, l'utilisateur devine, cette lettre devinée serait retirée de l'alphabet, puis imprimée dans la console pour montrer quelles lettres n'ont pas encore été devinées.

jusqu'à présent, j'ai essayé supprimer () code>, traduire () code> et filtre () code>. Chaque fois que j'ai essayé, la lettre est supprimée avec succès, mais quand il est temps de supprimer une autre lettre, la première lettre réapparaît dans la chaîne et la deuxième lettre est maintenant supprimée. Fondamentalement, les lettres ne restent pas enlevées et ne sont absentes que pour cette boucle. P>

Info de fond: Je fais une application de python3. Donc, une partie du code que j'ai des problèmes est dans une boucle tandis que dans une fonction. Je fais une application de python3. Donc, une partie du code que j'ai des problèmes est dans une boucle tandis que dans une fonction. p> xxx pré>

résultat attendu: p>

(Notez que le précédent ne réapparaît pas après la deuxième entrée.) P>

guess = input("Enter a letter: ")
Enter letter: a
These letters haven't been guessed yet: bcdefghi

guess = input("Enter a letter: ")
Enter letter: h
These letters haven't been guessed yet: abcdefgi


3 commentaires

Liste de 26 caractères de la valeur de détention de type booléen. Chaque fois que vous devinez le personnage, tournez-les en vrais qui signifie qu'il ne peut pas être utilisé. Aussi simple.


Vous ne réaffectez pas la valeur de l'alphabet, n'imprimez qu'une copie de celui-ci sans une lettre, donc bien sûr que la lettre sera toujours présente dans la variable effective elle-même. Essayez de mettre alphabet = alphabet.translate (...) .


Traduire les retours Une modifiée Copie Il ne modifie pas alphabet lui-même. Vous devez le réaffecter.


3 Réponses :


0
votes

Vous pouvez également utiliser la méthode str.replace ( https://docs.python.org/3.6/Library/stdtypes.html#str.replace ), mais comme ci-dessus, vous devez réaffecter la valeur de l'alphabet.

alphabet = alphabet.replace ('a', '')


0 commentaires

0
votes

Vous avez un problème car les cordes de python sont immuables dans la nature. Cela signifie que vous ne pouvez pas les changer. N'oubliez pas que l'utilisation de la mise à jour, etc. modifie essentiellement l'adresse à laquelle votre variable référencie. Donc, je pense que vous avez probablement oublié de mettre à jour la variable d'alphabet dans votre code.

Voici ce que vous pouvez faire - strong> p>

alphabet = "abcdefghijklmnopqrstuvwxyz"
guess = input("Enter a letter: ")
  CONSOLE - Enter a letter: a
alphabet = alphabet.replace(guess, '')
print('These letters haven\'t been guessed yet:', alphabet)
  CONSOLE - These letters haven't been guessed yet: bcdefghijklmnopqrstuvwxyz
guess = input("Enter a letter: ")
  CONSOLE - Enter a letter: h
alphabet = alphabet.replace(guess, '')
print('These letters haven\'t been guessed yet:', alphabet)
  CONSOLE - These letters haven't been guessed yet: bcdefgijklmnopqrstuvwxyz


0 commentaires

1
votes

Vous pouvez utiliser des ensembles pour cela. Vous créez d'abord un ensemble contenant toutes les lettres de l'alphabet. De plus, vous voulez suivre qui sont les mots devinés dans un autre ensemble. Ensuite, chaque fois qu'un utilisateur devine une lettre, vous l'ajoutez à l'ensemble devineux. À la fin, vous pouvez simplement imprimer l'alphabet - deviné . À la fin, je viens d'utiliser ''. Rejoindre pour un meilleur format de sortie. XXX

Mise à jour de @MRFUPPES : Utilisez la fonction < Code> trié pour imprimer les éléments des ensembles de commande alphabétique xxx


3 commentaires

J'ajouterais trié pour la lisibilité et en créer un f-string : print (f "Ces lettres n'ont pas encore été devinées: {'' .Joing (trié (alphabet - devined))} ") ;-)


@MRFUPPES, je n'ai pas fait attention à ce détail, merci. Je vais également ajouter votre modification dans ma réponse.


Merci à tous pour l'aide! Exactement ce dont j'avais besoin, totalement masqué sur le fait que les cordes sont immuables en python