2017-10-13 4 views
0

Je viens donc de commencer à expérimenter avec Python et j'ai appris quelques commandes avec lesquelles je tente de créer un jeu de pendu. Si le joueur trouve une lettre pour la première fois, le programme fonctionne bien et affiche les lettres manquantes comme '_', montrant la lettre au bon endroit. Cependant, si le joueur trouve une 2ème lettre, le mot se réinitialisera et affichera seulement la 2ème lettre de sa potion et les lettres manquantes comme '_'. Y at-il une commande qui peut m'aider à faire face à cela. Ive utilisé ce code pour cette sectionPython-Comment empêcher une variable de se réinitialiser dans une boucle while

word = input('Give word:\n') 
word = word[0].upper()+word[1:] 
wordC =word[1:-1] 
wordUkn = ' _ '*len(wordC) 


while '_' in wordUkn and mist < 3 :  
    ans=input('Give a letter:\n') 
    if ans in wordC : 
      pos=wordC.index(ans) 
      wordUkn=(' _ '*pos)+str(ans)+' _ '*(len(wordC)-(pos+1)) 
      print(word[0]+wordUkn+word[-1]) 

brouillard = erreurs ans = répondent

également Si Im nouveau ici donc s'il y a quelque chose que je devrais faire différemment des questions me informer l'affichage s'il vous plaît. Je voudrais aussi l'apprécier, Si quelqu'un pouvait me dire comment traiter le cas que le monde contient la même lettre 2 fois. Merci pour votre temps. :)

+1

Connexes: https://stackoverflow.com/questions/11122291/python-find-char-in-string-can-i-get-all-indexes – jarmod

Répondre

0

Je comprends que vous voulez remplir une variable wordUkn, car l'utilisateur trouve chaque lettre. Pour remplacer un caractère dans une chaîne en Python, il existe un moyen plus simple: Vous pouvez changer la chaîne en liste, changer le caractère dans l'index de liste que vous avez déjà, puis transformer la liste en chaîne, un petit exemple est ici:

pos = 5 
s = 'good dye' 
li = list(s) 
li[pos] = 'b' 
s = "".join(li) 

Si vous remplacez « b » avec la lettre trouvée en cours que vous avez terminé!

+0

Merci beaucoup, ce fut vraiment utile. Malheureusement, je ne peux pas vous surpasser en raison de mon niveau de réputation. –

+0

Pas de soucis, je suis heureux d'aider :) – agelakis