This is for a game. The game asks the user if s/he would like to play again. If not, the program should just exit. If yes, the entire game is repeated and asks to play again, and so on.
while True:
print "*game being played*"
# prompt to play again:
while True:
replay = raw_input("Play again? ")
print replay
if replay.lower == "yes" or "y":
break
elif replay.lower == "no" or "n":
sys.exit()
else:
print "Sorry, I didn't understand that."
However, when I actually execute this code it acts as if every answer input is a yes (even "aksj;fakdsf"), so it replays the game again.
.
When I changed the code to first consider no instead of yes:
if replay.lower == "no" or "n":
sys.exit()
I get the error
Traceback (most recent call last):
File "C:/Python27/Programs/replay game.py", line 18, in <module>
sys.exit()
NameError: name 'sys' is not defined
This might have something to do with the fact I don't actually know what sys.exit() does but just found it while googling "how to exit program python".
lower
is a function in python.
Be sure to include the elipses ()
. It should look like string.lower()
Also, try putting it at the end of your input so you don't have to type it every time
replay = raw_input('Play again? ').lower()
As Jon Clements pointed out, something that I looked over and missed in your code, consider the following statement:
if replay.lower() == "yes" or "y":
#execute
To the human eye, this looks correct, but to the computer it sees:
if replay.lower() is equal to "yes" or if 'y' is True...execute
Your game will always replay because "y" is a string and always true. You must replace the code with something like this (my above advice included):
if replay == 'yes' or replay == 'y':
#execute
finally, import sys
at the top of your program. This is where the error is occurring, because sys
is a module that must be imported to the program.
Here is an article on operators that you might benefit reading from