2014-02-16 77 views
1

我想写一个程序,要求用户输入两种颜色,然后显示结果颜色。这是我到目前为止有:python多功能编程

#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() 

当我运行程序,出现此错误消息:

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 
+0

你应该使用键的字典(“红”,“蓝”),(“蓝”,“红”),(“红” ,'yellow')等 – eyquem

+0

如果使用frozensets作为键,则可以减少字典中的项目数 – Matt

回答

6

在Python中,字符串必须用单或双引号('"封闭)。否则,他们将被视为变量。

在这种情况下,red既不是变量也不是字符串。由于red不是字符串,因此Python在当前名称空间,父名称空间和全局名称空间中搜索red。但变数red不在其中任何一个。所以,它放弃并抛出错误信息。

所以,所有的如果条件应该已经

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": 
... 
+0

现在可以使用。谢谢! – user3307366

+1

@ user3307366很酷。请考虑[接受此答案](http://meta.stackexchange.com/a/5235/235416),如果它可以帮助你。 – thefourtheye