user3307366
user3307366

Reputation: 327

python programming with multiple functions

I am trying to write a program that asks the user to enter two colors and then display the resulting color. This is what I have so far:

#Define function that prompts user to enter data
def ask():
    color1=input('Enter name of first primary color:')
    color2=input('Enter name of second primary color:')
    mixColors(color1,color2)
#Write function that displays the different color combinations
def mixColors(color1,color2):
    if color1==red and color2==blue:
        print('Mixing red and blue, you get purple.')
    elif color1==blue and color2==red:
        print('Mixing blue andred, you get purple.')
    elif color1==red and color2==yellow:
        print('Mixing red and yellow, you get orange.')
    elif color1==yellow and color2==red:
        print('Mixing yellow and red, you get orange.')
    elif color1==blue and color2==yellow:
        print('Mixing blue and yellow you get green.')
    elif color1==yellow and color2==blue:
        print('Mixing yellow and blue, you get green.')
    else:
        print("I don't know what you get by mixing", color1,'and',color2,'.')
ask()

When I run the program, this error message appears:

Traceback (most recent call last):
  File "/Users/Lin/Documents/Spring Semester 2013/Computer Programming/yuan_linCh0405", line 23, in <module>
    ask()
  File "/Users/Lin/Documents/Spring Semester 2013/Computer Programming/yuan_linCh0405", line 6, in ask
    mixColors(color1,color2)
  File "/Users/Lin/Documents/Spring Semester 2013/Computer Programming/yuan_linCh0405", line 9, in mixColors
    if color1==red and color2==blue:
NameError: global name 'red' is not defined

Upvotes: 1

Views: 1304

Answers (1)

thefourtheye
thefourtheye

Reputation: 239653

In Python, strings have to be enclosed with single or double quotes (' or "). Otherwise they will be treated as variables.

In this case, red is neither a variable nor a string. Since red is not a string, Python searches for red in the current namespace, parent namespace and the global namespace. But the variable red is NOT found in any of them. So, it gives up and throws that error message.

So, all the if conditions should have been

if color1=="red" and color2=="blue":
...
elif color1=="blue" and color2=="red":
...
elif color1=="red" and color2=="yellow":
...
elif color1=="yellow" and color2=="red":
...
elif color1=="blue" and color2=="yellow":
...
elif color1=="yellow" and color2=="blue":
...

Upvotes: 6

Related Questions