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 error
Error: 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 object
Why am I getting this error? How do I fix this and avoid this in the future?