I am trying to write a game of rock, paper, scissors, and I am getting an error about a file I imported not having an attribute of "quitGame
", even though I should have that variable imported along with the others.
Here is the function that has the quitGame
variable (uneeded parts filtered out):
def playRps():
game = "".join([playerAction, computerAction])
global quitGame
outcomes = {
"rr": tied,
"pp": tied,
"ss": tied,
"rp": playerLoss,
"ps": playerLoss,
"sr": playerLoss,
"rs": playerWin,
"pr": playerWin,
"sp": playerWin,
}
if playerAction == "q":
quitGame = True # TODO: Figure out why this isn't working in the main.py file
else:
action = outcomes.get(game)
if action:
action()
else:
print("Invalid input!")
You can also find the entire functions.py
file here.
Here is the main.py
file that should runs the program (uneeded parts filtered out):
import functions # Imports the functions.py file
while True:
playGame = str(input('Would you like to play "Rock, Paper, Scissors"? (Y/n): '))
if playGame == "y":
while True:
functions.playerChoice()
functions.computerChoice()
functions.playRps()
if functions.quitGame == True:
break
elif playGame == "n":
print("Terminating program...")
quit()
else:
print("Unknown input. Please enter a valid answer.")
continue
You can also find the entire main.py
file here.
Here is the interaction that gave me the error I am trying to fix:
(.venv) johnny@lj-laptop:rock_paper_scissors$ /home/johnny/Projects/rock_paper_scissors/.venv/bin/python /home/johnny/Projects/rock_paper_scissors/main.py
Would you like to play "Rock, Paper, Scissors"? (Y/n): y
Rock, paper, or scissors?
Acceptable responses are...
"r": Chooses rock.
"p": Chooses paper.
"s": Chooses scissors.
"q": Quits the game.
r
Tied! No points awarded.
Traceback (most recent call last):
File "/home/johnny/Projects/rock_paper_scissors/main.py", line 18, in <module>
if functions.quitGame == True:
AttributeError: module 'functions' has no attribute 'quitGame'
I find this very odd, because other variables such as playerScore
and computerScore
work as expected. I have functions.
added before each variable and function, so it makes no sense as to why it's telling me I don't have it.
I even added global quitGame
in the function that creates the variable. I don't see why this isn't working.
My question to you guys is:
- Why am I getting an error when I call that variable? What am I doing wrong?