2014-10-27 57 views
0

我在一个有趣的模拟器上工作,在那里询问你的年龄,如果你足够老,会问你是否有kik。如果你的年龄在16岁以上,那么它就可以正常工作,但如果你说的话少于这个数字,就会出现错误。这是代码:如何解决我在Python中的if,elif,else语句?

Traceback (most recent call last): 
    File "C:/Users/Public/Documents/python/omegle.py", line 36, in <module> 
    if kik == yes: 
NameError: name 'kik' is not defined 

有谁知道如何解决它:

age = input("age?\n") 
if age == "1": 
    print ("Too young bby") 
elif age == "2": 
    print ("Too young bby") 
elif age == "3": 
    print ("Too young bby") 
elif age == "4": 
    print ("Too young bby") 
elif age == "5": 
    print ("Too young bby") 
elif age == "6": 
    print ("Too young bby") 
elif age == "7": 
    print ("Too young bby") 
elif age == "8": 
    print ("Too young bby") 
elif age == "9": 
    print ("Too young bby") 
elif age == "10": 
    print ("Too young bby") 
elif age == "11": 
    print ("Too young bby") 
elif age == "12": 
    print ("Too young bby") 
elif age == "13": 
    print ("Too young bby") 
elif age == "14": 
    print ("Too young bby") 
elif age == "15": 
    print ("Too young bby") 
else: 
    kik = input("Do you have kik?\n") 
yes = "yes" 
if kik == yes: 
    print ("add me bby") 
else: 
    print ("bye") 

,来了是错误?

+10

在上帝的面上,请演员年龄为整数,只是使用'如果年龄<16:'。 – Matthias 2014-10-27 17:54:35

+0

你需要更多的缩进;这在Python中很重要。 – jonrsharpe 2014-10-27 17:56:07

回答

2

的问题是,你只能在这个块设置kik

else: 
    kik = input("Do you have kik?\n") 

如果没有达到这个块, kik不存在。一个选项是在你的if/elif块之前设置它。


此外,还可以让这个更短:

kik = "no" 
age = input("age?\n") 
if int(age) < 16: 
    print ("Too young bby") 
else: 
    kik = input("Do you have kik?\n") 
yes = "yes" 
if kik == yes: 
    print ("add me bby") 
else: 
    print ("bye") 
1

设置为kik默认情况下,它应该在您的链条之外。

age = input("age?\n") 
kik = "no" #assuming no is default 
... 

因为它是在你的代码,它只会如果你打else

2

有一对夫妇的事情,你应该在这里修复定义。首先,使用int()存储时代数字:

age = int(input("age?\n")) 

然后做一个小于:

if(age < 16): 
    print ("Too young bby") 
else: 
    kik = input("Do you have kik?\n") 
    if kik == "yes": 
    print ("add me bby") 
    else: 
    print ("bye") 
1

简短的回答是,kik超出范围,并把kik = "no"之初你的程序应该摆脱那个错误。

但是,这里有一个更好的方式做这件事:

age = int(input("age?\n")) 
kik = "no" 

if age < 16: 
    print ("Too young bby") 
else: 
    kik = input("Do you have kik?\n") 

if kik == yes: 
    print ("add me bby") 
else: 
    print ("bye") 
+1

_“简短的回答是,需要用引号”_。我不知道这一点。无论您使用字符串文字'“yes”'还是名为'yes'的变量,条件都应同样有效。 – Kevin 2014-10-27 17:56:54

+0

是的,你说得对。我认为追溯是在抱怨“是”超出范围,而不是“kik”。我更新了我的答案。 – RPGillespie 2014-10-27 17:59:06