Hangman game, written after taking a Python course
I have recently finished a course on Python 3 and I really learned a lot, but every time I write a script, it is messy and I often feel like there must be shorter, more efficient ways to write and structure my scripts.
So my question is: How could I rewrite the below script to be shorter and more efficient, and what advice would you guys give me to improve my coding skills in general (maybe a way of thinking about the program that will make it easier to define the structure of what my script should look like...)
I am really enthused about the possibilities that coding bring and I would really like to improve, so don't hesitate to be harsh with your comments ;)
Here below is one of the scripts I wrote. This one is a hangman game: (The word list for the game are being picked from a .txt file that lives in the same directory as my script)
import string
import random
class Main:
def __init__(self):
self.place_holder =
self.wrong_guesses = 10
self.guesses =
with open('./words.txt', mode='r') as f:
self.word = random.choice(f.readlines())
self.word = self.word.strip()
print(self.word, end='')
return self.place_holders()
def place_holders(self):
# creates the placeholders for the word
for char in self.word:
if char != " ":
self.place_holder.append(' _ ')
elif char == " ":
self.place_holder.append(' ')
print("".join(self.place_holder)) # prints initial placeholder
return self.is_letter()
@staticmethod
def guess():
# Prompts the user for a guess
while True:
guessed_letter = input(str('Give a guess: ')).lower()
if guessed_letter not in string.ascii_lowercase or len(guessed_letter) > 1:
print(
'You have inputted more than one character or the character entered was not recognized.nPlease try again.')
else:
break
return guessed_letter
def is_letter(self):
# finds out if the letter belongs to the word, and if so, places it on the right placeholder
guessed_letter = self.guess()
if guessed_letter in self.word and guessed_letter not in self.guesses:
for i in range(len(self.word)):
if guessed_letter == self.word[i]:
self.place_holder[i] = f' {self.word[i]} '
elif guessed_letter in self.guesses:
print('You already said that..n')
else:
self.wrong_guesses -= 1
print(f'Sorry, missed.nYou have {self.wrong_guesses} guesses left.n')
self.guesses.append(guessed_letter)
print("".join(self.place_holder)) # prints the updated placeholder
return self.is_over()
def is_over(self):
# Checks if the players has guessed the full word or if the player ran out of guesses
if ' _ ' in self.place_holder and self.wrong_guesses > 0:
self.is_letter()
elif ' _ ' in self.place_holder and self.wrong_guesses == 0:
print(f'Sorry, Game Over!nThe word to guess was: {self.word}')
self.play_again()
else:
self.play_again()
@staticmethod
def play_again():
# Prompts the player if he wants to play again or not
if input('Do you want to play again? (y/n): ').lower().startswith('y'):
Main()
else:
print('Fair enough.. Thanks for playing!')
quit()
Main()
python python-3.x hangman
New contributor
add a comment |
I have recently finished a course on Python 3 and I really learned a lot, but every time I write a script, it is messy and I often feel like there must be shorter, more efficient ways to write and structure my scripts.
So my question is: How could I rewrite the below script to be shorter and more efficient, and what advice would you guys give me to improve my coding skills in general (maybe a way of thinking about the program that will make it easier to define the structure of what my script should look like...)
I am really enthused about the possibilities that coding bring and I would really like to improve, so don't hesitate to be harsh with your comments ;)
Here below is one of the scripts I wrote. This one is a hangman game: (The word list for the game are being picked from a .txt file that lives in the same directory as my script)
import string
import random
class Main:
def __init__(self):
self.place_holder =
self.wrong_guesses = 10
self.guesses =
with open('./words.txt', mode='r') as f:
self.word = random.choice(f.readlines())
self.word = self.word.strip()
print(self.word, end='')
return self.place_holders()
def place_holders(self):
# creates the placeholders for the word
for char in self.word:
if char != " ":
self.place_holder.append(' _ ')
elif char == " ":
self.place_holder.append(' ')
print("".join(self.place_holder)) # prints initial placeholder
return self.is_letter()
@staticmethod
def guess():
# Prompts the user for a guess
while True:
guessed_letter = input(str('Give a guess: ')).lower()
if guessed_letter not in string.ascii_lowercase or len(guessed_letter) > 1:
print(
'You have inputted more than one character or the character entered was not recognized.nPlease try again.')
else:
break
return guessed_letter
def is_letter(self):
# finds out if the letter belongs to the word, and if so, places it on the right placeholder
guessed_letter = self.guess()
if guessed_letter in self.word and guessed_letter not in self.guesses:
for i in range(len(self.word)):
if guessed_letter == self.word[i]:
self.place_holder[i] = f' {self.word[i]} '
elif guessed_letter in self.guesses:
print('You already said that..n')
else:
self.wrong_guesses -= 1
print(f'Sorry, missed.nYou have {self.wrong_guesses} guesses left.n')
self.guesses.append(guessed_letter)
print("".join(self.place_holder)) # prints the updated placeholder
return self.is_over()
def is_over(self):
# Checks if the players has guessed the full word or if the player ran out of guesses
if ' _ ' in self.place_holder and self.wrong_guesses > 0:
self.is_letter()
elif ' _ ' in self.place_holder and self.wrong_guesses == 0:
print(f'Sorry, Game Over!nThe word to guess was: {self.word}')
self.play_again()
else:
self.play_again()
@staticmethod
def play_again():
# Prompts the player if he wants to play again or not
if input('Do you want to play again? (y/n): ').lower().startswith('y'):
Main()
else:
print('Fair enough.. Thanks for playing!')
quit()
Main()
python python-3.x hangman
New contributor
1
Why do you print the word immediately after choosing it? That takes all the challenge out of the game.
– 200_success
4 hours ago
1
oh yeah sorry about that, that was just for testing purposes, I guess I forgot to take it out lol
– iAmWaldo
3 hours ago
add a comment |
I have recently finished a course on Python 3 and I really learned a lot, but every time I write a script, it is messy and I often feel like there must be shorter, more efficient ways to write and structure my scripts.
So my question is: How could I rewrite the below script to be shorter and more efficient, and what advice would you guys give me to improve my coding skills in general (maybe a way of thinking about the program that will make it easier to define the structure of what my script should look like...)
I am really enthused about the possibilities that coding bring and I would really like to improve, so don't hesitate to be harsh with your comments ;)
Here below is one of the scripts I wrote. This one is a hangman game: (The word list for the game are being picked from a .txt file that lives in the same directory as my script)
import string
import random
class Main:
def __init__(self):
self.place_holder =
self.wrong_guesses = 10
self.guesses =
with open('./words.txt', mode='r') as f:
self.word = random.choice(f.readlines())
self.word = self.word.strip()
print(self.word, end='')
return self.place_holders()
def place_holders(self):
# creates the placeholders for the word
for char in self.word:
if char != " ":
self.place_holder.append(' _ ')
elif char == " ":
self.place_holder.append(' ')
print("".join(self.place_holder)) # prints initial placeholder
return self.is_letter()
@staticmethod
def guess():
# Prompts the user for a guess
while True:
guessed_letter = input(str('Give a guess: ')).lower()
if guessed_letter not in string.ascii_lowercase or len(guessed_letter) > 1:
print(
'You have inputted more than one character or the character entered was not recognized.nPlease try again.')
else:
break
return guessed_letter
def is_letter(self):
# finds out if the letter belongs to the word, and if so, places it on the right placeholder
guessed_letter = self.guess()
if guessed_letter in self.word and guessed_letter not in self.guesses:
for i in range(len(self.word)):
if guessed_letter == self.word[i]:
self.place_holder[i] = f' {self.word[i]} '
elif guessed_letter in self.guesses:
print('You already said that..n')
else:
self.wrong_guesses -= 1
print(f'Sorry, missed.nYou have {self.wrong_guesses} guesses left.n')
self.guesses.append(guessed_letter)
print("".join(self.place_holder)) # prints the updated placeholder
return self.is_over()
def is_over(self):
# Checks if the players has guessed the full word or if the player ran out of guesses
if ' _ ' in self.place_holder and self.wrong_guesses > 0:
self.is_letter()
elif ' _ ' in self.place_holder and self.wrong_guesses == 0:
print(f'Sorry, Game Over!nThe word to guess was: {self.word}')
self.play_again()
else:
self.play_again()
@staticmethod
def play_again():
# Prompts the player if he wants to play again or not
if input('Do you want to play again? (y/n): ').lower().startswith('y'):
Main()
else:
print('Fair enough.. Thanks for playing!')
quit()
Main()
python python-3.x hangman
New contributor
I have recently finished a course on Python 3 and I really learned a lot, but every time I write a script, it is messy and I often feel like there must be shorter, more efficient ways to write and structure my scripts.
So my question is: How could I rewrite the below script to be shorter and more efficient, and what advice would you guys give me to improve my coding skills in general (maybe a way of thinking about the program that will make it easier to define the structure of what my script should look like...)
I am really enthused about the possibilities that coding bring and I would really like to improve, so don't hesitate to be harsh with your comments ;)
Here below is one of the scripts I wrote. This one is a hangman game: (The word list for the game are being picked from a .txt file that lives in the same directory as my script)
import string
import random
class Main:
def __init__(self):
self.place_holder =
self.wrong_guesses = 10
self.guesses =
with open('./words.txt', mode='r') as f:
self.word = random.choice(f.readlines())
self.word = self.word.strip()
print(self.word, end='')
return self.place_holders()
def place_holders(self):
# creates the placeholders for the word
for char in self.word:
if char != " ":
self.place_holder.append(' _ ')
elif char == " ":
self.place_holder.append(' ')
print("".join(self.place_holder)) # prints initial placeholder
return self.is_letter()
@staticmethod
def guess():
# Prompts the user for a guess
while True:
guessed_letter = input(str('Give a guess: ')).lower()
if guessed_letter not in string.ascii_lowercase or len(guessed_letter) > 1:
print(
'You have inputted more than one character or the character entered was not recognized.nPlease try again.')
else:
break
return guessed_letter
def is_letter(self):
# finds out if the letter belongs to the word, and if so, places it on the right placeholder
guessed_letter = self.guess()
if guessed_letter in self.word and guessed_letter not in self.guesses:
for i in range(len(self.word)):
if guessed_letter == self.word[i]:
self.place_holder[i] = f' {self.word[i]} '
elif guessed_letter in self.guesses:
print('You already said that..n')
else:
self.wrong_guesses -= 1
print(f'Sorry, missed.nYou have {self.wrong_guesses} guesses left.n')
self.guesses.append(guessed_letter)
print("".join(self.place_holder)) # prints the updated placeholder
return self.is_over()
def is_over(self):
# Checks if the players has guessed the full word or if the player ran out of guesses
if ' _ ' in self.place_holder and self.wrong_guesses > 0:
self.is_letter()
elif ' _ ' in self.place_holder and self.wrong_guesses == 0:
print(f'Sorry, Game Over!nThe word to guess was: {self.word}')
self.play_again()
else:
self.play_again()
@staticmethod
def play_again():
# Prompts the player if he wants to play again or not
if input('Do you want to play again? (y/n): ').lower().startswith('y'):
Main()
else:
print('Fair enough.. Thanks for playing!')
quit()
Main()
python python-3.x hangman
python python-3.x hangman
New contributor
New contributor
edited 4 hours ago
200_success
128k15150412
128k15150412
New contributor
asked 5 hours ago
iAmWaldo
232
232
New contributor
New contributor
1
Why do you print the word immediately after choosing it? That takes all the challenge out of the game.
– 200_success
4 hours ago
1
oh yeah sorry about that, that was just for testing purposes, I guess I forgot to take it out lol
– iAmWaldo
3 hours ago
add a comment |
1
Why do you print the word immediately after choosing it? That takes all the challenge out of the game.
– 200_success
4 hours ago
1
oh yeah sorry about that, that was just for testing purposes, I guess I forgot to take it out lol
– iAmWaldo
3 hours ago
1
1
Why do you print the word immediately after choosing it? That takes all the challenge out of the game.
– 200_success
4 hours ago
Why do you print the word immediately after choosing it? That takes all the challenge out of the game.
– 200_success
4 hours ago
1
1
oh yeah sorry about that, that was just for testing purposes, I guess I forgot to take it out lol
– iAmWaldo
3 hours ago
oh yeah sorry about that, that was just for testing purposes, I guess I forgot to take it out lol
– iAmWaldo
3 hours ago
add a comment |
2 Answers
2
active
oldest
votes
Your code structure is one of infinite recursion. Main()
calls placeholder()
, which calls is_letter()
which calls is_over()
which calls is_letter()
(recursive), or play_again()
which calls Main()
(recursive)! Eventually, you will end up with a Stack Overflow if you play long enough!
What you want is a loop. Two loops, actually. Your program should be structured to operate something like:
play_again = True
while play_again:
# initialize game state
while not solved and guesses_left:
# get guess
# update game state
play_again = ask_play_again()
No recursive calls are necessary.
You read all lines of the file to choose a random puzzle. When you play again, you again read all lines in the file. Perhaps you could read and store all the puzzles, and each time a game is played, you just select one randomly from the list.
Your placeholders are complicated, 3 character entities. They could just be single characters, and spaces could be added during printing.
self.placeholder = [ "_" if ch != " " else " " for ch in self.word ]
To print:
print("".join(f" {ch} " for ch in self.placeholder))
Or simply:
print("", " ".join(self.placeholder))
You should allow for punctuation in the puzzles. Like spaces, these should be directly shown, not converted to underscores.
_ _ _ _ _ ’ _ _ _ _ _
Thanks! that helps a lot! These are things I didn't even think about, very thoughtful!
– iAmWaldo
3 hours ago
The list comprehension forself.placeholder
in this answer is an especially valuable Pythonic technique when you are looking to trim your code. Also, be cautious withquit()
as this resets the kernel in some IDEs, such as Spyder (reference here).
– Miller
3 hours ago
add a comment |
Don't unconditionally call Main()
from global scope - if someone else imports your file, you want to leave it up to them what should be executed. This is why you should use the if __name__ == '__main__'
pattern that we see so often elsewhere.
self.guesses
shouldn't be a list. Since you need fast lookup, even though it won't make a noticeable difference, you should be using a set.
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
return StackExchange.using("mathjaxEditing", function () {
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix) {
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["\$", "\$"]]);
});
});
}, "mathjax-editing");
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "196"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
iAmWaldo is a new contributor. Be nice, and check out our Code of Conduct.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f210455%2fhangman-game-written-after-taking-a-python-course%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
Your code structure is one of infinite recursion. Main()
calls placeholder()
, which calls is_letter()
which calls is_over()
which calls is_letter()
(recursive), or play_again()
which calls Main()
(recursive)! Eventually, you will end up with a Stack Overflow if you play long enough!
What you want is a loop. Two loops, actually. Your program should be structured to operate something like:
play_again = True
while play_again:
# initialize game state
while not solved and guesses_left:
# get guess
# update game state
play_again = ask_play_again()
No recursive calls are necessary.
You read all lines of the file to choose a random puzzle. When you play again, you again read all lines in the file. Perhaps you could read and store all the puzzles, and each time a game is played, you just select one randomly from the list.
Your placeholders are complicated, 3 character entities. They could just be single characters, and spaces could be added during printing.
self.placeholder = [ "_" if ch != " " else " " for ch in self.word ]
To print:
print("".join(f" {ch} " for ch in self.placeholder))
Or simply:
print("", " ".join(self.placeholder))
You should allow for punctuation in the puzzles. Like spaces, these should be directly shown, not converted to underscores.
_ _ _ _ _ ’ _ _ _ _ _
Thanks! that helps a lot! These are things I didn't even think about, very thoughtful!
– iAmWaldo
3 hours ago
The list comprehension forself.placeholder
in this answer is an especially valuable Pythonic technique when you are looking to trim your code. Also, be cautious withquit()
as this resets the kernel in some IDEs, such as Spyder (reference here).
– Miller
3 hours ago
add a comment |
Your code structure is one of infinite recursion. Main()
calls placeholder()
, which calls is_letter()
which calls is_over()
which calls is_letter()
(recursive), or play_again()
which calls Main()
(recursive)! Eventually, you will end up with a Stack Overflow if you play long enough!
What you want is a loop. Two loops, actually. Your program should be structured to operate something like:
play_again = True
while play_again:
# initialize game state
while not solved and guesses_left:
# get guess
# update game state
play_again = ask_play_again()
No recursive calls are necessary.
You read all lines of the file to choose a random puzzle. When you play again, you again read all lines in the file. Perhaps you could read and store all the puzzles, and each time a game is played, you just select one randomly from the list.
Your placeholders are complicated, 3 character entities. They could just be single characters, and spaces could be added during printing.
self.placeholder = [ "_" if ch != " " else " " for ch in self.word ]
To print:
print("".join(f" {ch} " for ch in self.placeholder))
Or simply:
print("", " ".join(self.placeholder))
You should allow for punctuation in the puzzles. Like spaces, these should be directly shown, not converted to underscores.
_ _ _ _ _ ’ _ _ _ _ _
Thanks! that helps a lot! These are things I didn't even think about, very thoughtful!
– iAmWaldo
3 hours ago
The list comprehension forself.placeholder
in this answer is an especially valuable Pythonic technique when you are looking to trim your code. Also, be cautious withquit()
as this resets the kernel in some IDEs, such as Spyder (reference here).
– Miller
3 hours ago
add a comment |
Your code structure is one of infinite recursion. Main()
calls placeholder()
, which calls is_letter()
which calls is_over()
which calls is_letter()
(recursive), or play_again()
which calls Main()
(recursive)! Eventually, you will end up with a Stack Overflow if you play long enough!
What you want is a loop. Two loops, actually. Your program should be structured to operate something like:
play_again = True
while play_again:
# initialize game state
while not solved and guesses_left:
# get guess
# update game state
play_again = ask_play_again()
No recursive calls are necessary.
You read all lines of the file to choose a random puzzle. When you play again, you again read all lines in the file. Perhaps you could read and store all the puzzles, and each time a game is played, you just select one randomly from the list.
Your placeholders are complicated, 3 character entities. They could just be single characters, and spaces could be added during printing.
self.placeholder = [ "_" if ch != " " else " " for ch in self.word ]
To print:
print("".join(f" {ch} " for ch in self.placeholder))
Or simply:
print("", " ".join(self.placeholder))
You should allow for punctuation in the puzzles. Like spaces, these should be directly shown, not converted to underscores.
_ _ _ _ _ ’ _ _ _ _ _
Your code structure is one of infinite recursion. Main()
calls placeholder()
, which calls is_letter()
which calls is_over()
which calls is_letter()
(recursive), or play_again()
which calls Main()
(recursive)! Eventually, you will end up with a Stack Overflow if you play long enough!
What you want is a loop. Two loops, actually. Your program should be structured to operate something like:
play_again = True
while play_again:
# initialize game state
while not solved and guesses_left:
# get guess
# update game state
play_again = ask_play_again()
No recursive calls are necessary.
You read all lines of the file to choose a random puzzle. When you play again, you again read all lines in the file. Perhaps you could read and store all the puzzles, and each time a game is played, you just select one randomly from the list.
Your placeholders are complicated, 3 character entities. They could just be single characters, and spaces could be added during printing.
self.placeholder = [ "_" if ch != " " else " " for ch in self.word ]
To print:
print("".join(f" {ch} " for ch in self.placeholder))
Or simply:
print("", " ".join(self.placeholder))
You should allow for punctuation in the puzzles. Like spaces, these should be directly shown, not converted to underscores.
_ _ _ _ _ ’ _ _ _ _ _
answered 4 hours ago
AJNeufeld
4,347318
4,347318
Thanks! that helps a lot! These are things I didn't even think about, very thoughtful!
– iAmWaldo
3 hours ago
The list comprehension forself.placeholder
in this answer is an especially valuable Pythonic technique when you are looking to trim your code. Also, be cautious withquit()
as this resets the kernel in some IDEs, such as Spyder (reference here).
– Miller
3 hours ago
add a comment |
Thanks! that helps a lot! These are things I didn't even think about, very thoughtful!
– iAmWaldo
3 hours ago
The list comprehension forself.placeholder
in this answer is an especially valuable Pythonic technique when you are looking to trim your code. Also, be cautious withquit()
as this resets the kernel in some IDEs, such as Spyder (reference here).
– Miller
3 hours ago
Thanks! that helps a lot! These are things I didn't even think about, very thoughtful!
– iAmWaldo
3 hours ago
Thanks! that helps a lot! These are things I didn't even think about, very thoughtful!
– iAmWaldo
3 hours ago
The list comprehension for
self.placeholder
in this answer is an especially valuable Pythonic technique when you are looking to trim your code. Also, be cautious with quit()
as this resets the kernel in some IDEs, such as Spyder (reference here).– Miller
3 hours ago
The list comprehension for
self.placeholder
in this answer is an especially valuable Pythonic technique when you are looking to trim your code. Also, be cautious with quit()
as this resets the kernel in some IDEs, such as Spyder (reference here).– Miller
3 hours ago
add a comment |
Don't unconditionally call Main()
from global scope - if someone else imports your file, you want to leave it up to them what should be executed. This is why you should use the if __name__ == '__main__'
pattern that we see so often elsewhere.
self.guesses
shouldn't be a list. Since you need fast lookup, even though it won't make a noticeable difference, you should be using a set.
add a comment |
Don't unconditionally call Main()
from global scope - if someone else imports your file, you want to leave it up to them what should be executed. This is why you should use the if __name__ == '__main__'
pattern that we see so often elsewhere.
self.guesses
shouldn't be a list. Since you need fast lookup, even though it won't make a noticeable difference, you should be using a set.
add a comment |
Don't unconditionally call Main()
from global scope - if someone else imports your file, you want to leave it up to them what should be executed. This is why you should use the if __name__ == '__main__'
pattern that we see so often elsewhere.
self.guesses
shouldn't be a list. Since you need fast lookup, even though it won't make a noticeable difference, you should be using a set.
Don't unconditionally call Main()
from global scope - if someone else imports your file, you want to leave it up to them what should be executed. This is why you should use the if __name__ == '__main__'
pattern that we see so often elsewhere.
self.guesses
shouldn't be a list. Since you need fast lookup, even though it won't make a noticeable difference, you should be using a set.
answered 58 mins ago
Reinderien
2,789719
2,789719
add a comment |
add a comment |
iAmWaldo is a new contributor. Be nice, and check out our Code of Conduct.
iAmWaldo is a new contributor. Be nice, and check out our Code of Conduct.
iAmWaldo is a new contributor. Be nice, and check out our Code of Conduct.
iAmWaldo is a new contributor. Be nice, and check out our Code of Conduct.
Thanks for contributing an answer to Code Review Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
Use MathJax to format equations. MathJax reference.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f210455%2fhangman-game-written-after-taking-a-python-course%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
Why do you print the word immediately after choosing it? That takes all the challenge out of the game.
– 200_success
4 hours ago
1
oh yeah sorry about that, that was just for testing purposes, I guess I forgot to take it out lol
– iAmWaldo
3 hours ago