Aug-18-2020, 05:37 PM
I'm using the following code:
How do I fix this and avoid this in the future?
import random
def get_data():
colours = ["red","yellow","orange","green","blue","purple"]
c1 = random.choice(colours)
c2 = random.choice(colours)
c3 = random.choice(colours)
c4 = random.choice(colours)
print("The colours to choose from are: red, yellow, orange, green, blue and purple")
guess1 = input("Please enter your choice for the 1st colour: ")
guess2 = input("Please enter your choice for the 2nd colour: ")
guess3 = input("Please enter your choice for the 3rd colour: ")
guess4 = input("Please enter your choice for the 4th colour: ")
if guess1 != "red" and guess1 != "yellow" and guess1 != "orange" and guess1 != "green" and guess1 != "blue" and guess1 != "purple":
print("Incorrect choice for guess1 please try again") # this block of code makes sure user enters colours from the list
guess1 = input("Please enter your choice for the 1st colour: ")
if guess2 != "red" and guess2 != "yellow" and guess2 != "orange" and guess2 != "green" and guess2 != "blue" and guess2 != "purple":
print("Incorrect choice for guess2 please try again")
guess2 = input("Please enter your choice for the 2nd colour: ")
if guess3 != "red" and guess3 != "yellow" and guess3 != "orange" and guess3 != "green" and guess3 != "blue" and guess3 != "purple":
print("Incorrect choice for guess3 please try again")
guess3 = input("Please enter your choice for the 3rd colour: ")
if guess4 != "red" and guess4 != "yellow" and guess4 != "orange" and guess4 != "green" and guess4 != "blue" and guess4 != "purple":
print("Incorrect choice for guess4 please try again")
guess4 = input("Please enter your choice for the 4th colour: ")
data = (guess1,guess2,guess3,guess4)
answers = (c1,c2,c3,c4)
return data
return answers
def quiz(data,answers):
correct = 0
attempts = 0
while correct < 4:
answer1 = False
while answer1 == False:
if guess1 == c1: # if answer is correct
print("Colour in position 1 correct") # print this message
correct = correct + 1 # adds 1 to correct total
attempts = attempts + 1 # adds 1 to attempts total
answer1 = True # closes while loop
elif guess1 == c2 or guess1 == c3 or guess1 == c4: # if answer is correct but in wrong place
print("Colour correct but in wrong place position 1") # prints this message
attempts = attempts + 1 # adds 1 to attempts total
guess1 = input("Please enter your choice for the 1st colour: ") # asks user for another guess
else: # if answer is wrong
print("Wrong colour chosen") # print this message
attempts = attempts + 1 # adds 1 to attempts total
guess1 = input("Please enter your choice for the 1st colour: ") # asks user for another guess
answer2 = False # code repeats this process for the other 3 answers
while answer2 == False:
if guess2 == c2:
print("Colour in position 2 correct")
correct = correct + 1
attempts = attempts + 1
answer2 = True
elif guess2 == c1 or guess1 == c3 or guess1 == c4:
print("Colour correct but in wrong place position 2")
attempts = attempts + 1
guess2 = input("Please enter your choice for the 2nd colour: ")
else:
print("Wrong colour chosen")
attempts = attempts + 1
guess2 = input("Please enter your choice for the 2nd colour: ")
answer3 = False
while answer3 == False:
if guess3 == c3:
print("Colour in position 3 correct")
correct = correct + 1
attempts = attempts + 1
answer3 = True
elif guess3 == c1 or guess1 == c2 or guess1 == c4:
print("Colour correct but in wrong place position 3")
attempts = attempts + 1
guess3 = input("Please enter your choice for the 3rd colour: ")
else:
print("Wrong colour chosen")
attempts = attempts + 1
guess3 = input("Please enter your choice for the 3rd colour: ")
answer4 = False
while answer4 == False:
if guess4 == c4:
print("Colour in position 2 correct")
correct = correct + 1
attempts = attempts + 1
answer4 = True
elif guess4 == c1 or guess1 == c2 or guess1 == c3:
print("Colour correct but in wrong place position 4")
attempts = attempts + 1
guess2 = input("Please enter your choice for the 4th colour: ")
else:
print("Wrong colour chosen")
attempts = attempts + 1
guess4 = input("Please enter your choice for the 4th colour: ")
print("Well done! You got all the colours right") # prints this message when all colours are correct
print("The number of guesses taken was: ", attempts) # tells them how many guesses they took
data2 = (correct,attempts) # stores these variables as data2
return data2 # returns data2 for use in other subprograms
def main():
(guess1,guess2,guess3,guess4) = get_data() # gets these variables from get_data
(data,answers) = quiz # runs quiz subprogram with these variables
quiz()
main() # runs main subprogramBut I get the following errorError: File "c:/Users/djwil/Documents/python/learning python/Chapter 19 - Chunky Challenges/Mastermind.py", line 105, in <module>
main() # runs main subprogram
File "c:/Users/djwil/Documents/python/learning python/Chapter 19 - Chunky Challenges/Mastermind.py", line 102, in main
(data,answers) = quiz # runs quiz subprogram with these variables
TypeError: cannot unpack non-iterable function objectWhy am I getting this error? How do I fix this and avoid this in the future?
