Python Hangman Replacing "_" with letters. - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: General Coding Help (https://python-forum.io/forum-8.html) +--- Thread: Python Hangman Replacing "_" with letters. (/thread-11130.html) |
Python Hangman Replacing "_" with letters. - 2skywalkers - Jun-24-2018 I have been working my way through projects on Python and now I want to start on hangman. I have not started the code yet because of an issue I am having trouble finding a solution. I want a hangman game where there is a list of random words and a random word is chosen. I want the person to be able to guess a letter and then replace the "_" with that letter at the correct index. For example: The word is "apple" so "_____" but if you guess a then "a____": I would also like to be able to place a letter in all the times it is in the word like "p" is in apple twice so if guess is "p" it would be "_pp__". I want to try and do all the rest of code myself I just would like to know how to do this small part so I can then apply it. RE: Python Hangman Replacing "_" with letters. - gontajones - Jun-24-2018 I did it starting the word 'apple' as a list ['a','p','p','l','e'] and every time a letter is a match I change it for '*'. Try by yourself first and then I'll post my solution. My solution: def checkLetter(letter, word, guess_word): for c in word: if c == letter: guess_word[word.index(c)] = c word[word.index(c)] = '*' return guess_word word = list('apple') guess_word = ['_' for x in word] print(guess_word) while '_' in guess_word: guess = input('Letter: ') print(checkLetter(guess, word, guess_word)) RE: Python Hangman Replacing "_" with letters. - 2skywalkers - Jun-24-2018 Thanks for the help but if you don't mind, could you please elaborate on: while '_' in guess_word: guess = input('Letter: ') print(checkLetter(guess, word, guess_word))Particularly: while '_' in guess_word:Thanks. RE: Python Hangman Replacing "_" with letters. - volcano63 - Jun-24-2018 (Jun-24-2018, 01:00 AM)gontajones Wrote: I did it starting the word 'apple' as a list ['a','p','p','l','e'] and every time a letter is a match I change it for '*'.That would not work for letters that show more than once in a word. And why are you using camelCase ? - it's un-Pythonicdef check_letter(letter, word, guess_word): for idx, c in enumerate(word): if c == letter: guess_word[idx] = c .... RE: Python Hangman Replacing "_" with letters. - gontajones - Jun-24-2018 Quote:while '_' in guess_word: This will keep asking for new guess(letter) until there is no more '_' in the guess_word (the word is formed). Quote:That would not work for letters that show more than once in a word. And why are you using camelCase? - it's un-PythonicDid you check it? I tested with some words and it's ok. Thanks for the camelCase tip. RE: Python Hangman Replacing "_" with letters. - volcano63 - Jun-25-2018 (Jun-24-2018, 05:05 PM)gontajones Wrote:Quote:while '_' in guess_word: OK, sorry, my mistake - I missed the part that you change the original word (I was talking about checkLetter function) - but calling word.index( c ) is unneeded if you use enumerate - and calling it twice is wasteful. You are building a mechanism that Python provides you under the hood.
RE: Python Hangman Replacing "_" with letters. - gruntfutuk - Jun-25-2018 I wrote a console hangman game a while ago as part of my learning, and came up with this approach: msg = ''.join([c if c in guesses else '_' for c in word])where guesses contains all of the letters entered by the players so far and, of course, word is the word they are trying to guess.After the above process, found = msg == word will indicate whether the player has guessed the word or not.
|