From 075460118417f0ba8609e2d7d33485bac2e5744d Mon Sep 17 00:00:00 2001 From: Vaibhav Singh Date: Sun, 15 Oct 2017 11:59:31 +0530 Subject: [PATCH] [WIP] Implement hangaman excercise --- exercises/hangman/README.md | 1 + exercises/hangman/example.py | 60 +++++++++++++++++++++++++++++++ exercises/hangman/hangman.py | 9 +++++ exercises/hangman/hangman_test.py | 11 ++++++ 4 files changed, 81 insertions(+) create mode 100644 exercises/hangman/README.md create mode 100644 exercises/hangman/example.py create mode 100644 exercises/hangman/hangman.py create mode 100644 exercises/hangman/hangman_test.py diff --git a/exercises/hangman/README.md b/exercises/hangman/README.md new file mode 100644 index 00000000000..3194efd3364 --- /dev/null +++ b/exercises/hangman/README.md @@ -0,0 +1 @@ +# Hangman diff --git a/exercises/hangman/example.py b/exercises/hangman/example.py new file mode 100644 index 00000000000..fdeb08e73bd --- /dev/null +++ b/exercises/hangman/example.py @@ -0,0 +1,60 @@ +import random + + +def main(): + while True: + words = ["python", "golang", "java", "assembly", "haskel", "emoji"] + chosen_word = random.choice(words).lower() + player_guess = None + guessed_letters = [] + word_guessed = [] + for letter in chosen_word: + word_guessed.append("*") + joined_word = None + chances = 10 + attempts = chances - 1 + while (attempts != 0 and "-" in word_guessed): + print(("\nYou have {} attempts remaining").format(attempts)) + joined_word = "".join(word_guessed) + print(joined_word) + + try: + player_guess = str( + input("\nPlease select a letter between A-Z" + "\n> ")).lower() + except: + print("please enter valid input and try again") + continue + else: + if not player_guess.isalpha(): + print("That is not a letter. Please try again.") + continue + elif len(player_guess) > 1: + print("That is more than one letter. Please try again.") + continue + elif player_guess in guessed_letters: + print("You have already guessed that letter. Please try again.") + continue + + guessed_letters.append(player_guess) + + for pos, letter in enumerate(chosen_word): + if player_guess == letter: + word_guessed[pos] = player_guess + + if player_guess not in chosen_word: + attempts -= 1 + + if "-" not in word_guessed: + print(("\nCongratulations! {} was the word").format(chosen_word)) + else: + print(("\nUnlucky! The word was {}.").format(chosen_word)) + + print("\nWould you like to play again?") + + response = input("> ").lower() + if response not in ("yes", "y"): + break + + +if __name__ == "__main__": + main() diff --git a/exercises/hangman/hangman.py b/exercises/hangman/hangman.py new file mode 100644 index 00000000000..e1271b0a056 --- /dev/null +++ b/exercises/hangman/hangman.py @@ -0,0 +1,9 @@ +import random + + +def main(): + pass + + +if __name__ == "__main__": + main() diff --git a/exercises/hangman/hangman_test.py b/exercises/hangman/hangman_test.py new file mode 100644 index 00000000000..1b9c3df7b9d --- /dev/null +++ b/exercises/hangman/hangman_test.py @@ -0,0 +1,11 @@ +import unittest +import hangman + + +class HangmanTest(unittest.TestCase): + def test(self): + self.assertEqual("hangman", "hangman") + + +if __name__ == '__main__': + unittest.main()