如何修复python中的if、elif和else语句?

如何修复python中的if、elif和else语句?,python,if-statement,Python,If Statement,我正在做一个omegle模拟器,它会问你的年龄,如果你足够大,会问你是否有kik。如果你的年龄在16岁或16岁以上,它可以正常工作,但如果你说的年龄小于16岁,它就会出错。代码如下: 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") eli

我正在做一个omegle模拟器,它会问你的年龄,如果你足够大,会问你是否有kik。如果你的年龄在16岁或16岁以上,它可以正常工作,但如果你说的年龄小于16岁,它就会出错。代码如下:

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")
出现的错误是:

 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
回溯(最近一次呼叫最后一次):
文件“C:/Users/Public/Documents/python/omegle.py”,第36行,在
如果kik==是:
NameError:未定义名称“kik”

有人知道如何修复它吗?

kik
设置为默认值,它应该在您的链之外

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

因为它在代码中,所以只有当您点击
else

kik
设置为默认值时,才会对其进行定义

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

由于它存在于代码中,因此只有当您点击
else

时,才会定义它。这里有几件事情您需要解决。首先,使用
int()
将年龄存储为一个数字:

然后做一个小于:

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")
if(年龄<16岁):
打印(“太年轻的bby”)
其他:
kik=输入(“您有kik吗?\n”)
如果kik==“是”:
打印(“添加我bby”)
其他:
打印(“再见”)

这里有几件事需要解决。首先,使用
int()
将年龄存储为一个数字:

然后做一个小于:

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")
if(年龄<16岁):
打印(“太年轻的bby”)
其他:
kik=输入(“您有kik吗?\n”)
如果kik==“是”:
打印(“添加我bby”)
其他:
打印(“再见”)

简单的回答是
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")
age=int(输入(“年龄?\n”))
kik=“否”
如果年龄<16岁:
打印(“太年轻的bby”)
其他:
kik=输入(“您有kik吗?\n”)
如果kik==是:
打印(“添加我bby”)
其他:
打印(“再见”)

简单的回答是
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")
age=int(输入(“年龄?\n”))
kik=“否”
如果年龄<16岁:
打印(“太年轻的bby”)
其他:
kik=输入(“您有kik吗?\n”)
如果kik==是:
打印(“添加我bby”)
其他:
打印(“再见”)

问题是您在此块中仅设置了
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")
kik=“否”
年龄=输入(“年龄?\n”)
如果int(年龄)<16:
打印(“太年轻的bby”)
其他:
kik=输入(“您有kik吗?\n”)
yes=“yes”
如果kik==是:
打印(“添加我bby”)
其他:
打印(“再见”)

问题是您在此块中仅设置了
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")
kik=“否”
年龄=输入(“年龄?\n”)
如果int(年龄)<16:
打印(“太年轻的bby”)
其他:
kik=输入(“您有kik吗?\n”)
yes=“yes”
如果kik==是:
打印(“添加我bby”)
其他:
打印(“再见”)

安迪的帖子对我很有帮助。我想补充一点。如果在第一个问题中输入一个小于16的整数,则会得到print(“太年轻的bby”)和print(“再见”)。第一次输出仅可供我使用,不可打印(“再见”)。 要实现这一点,请将第二个“if”语句缩进到第一个“else”语句。 如果你不缩进我的代码,你会得到两次“你没有资格在爱尔兰投票”。这是我的例子

Citizen = "No"
Yes = "Yes"
Age = int(input("What is your age?: \n"))
if (Age) < 18:
    print("You are not eligible to vote in Ireland.\n")
else:
    Citizen = input("Do you hold Irish Citizenship? Yes/No: \n")
    if Citizen == Yes:
        print("You are eligible to vote in Ireland.\n")
    else:
        print("You are not eligible to vote in Ireland.\n")
Citizen=“否”
Yes=“Yes”
年龄=int(输入(“您的年龄是多少?:\n”))
如果(年龄)<18岁:
打印(“您没有资格在爱尔兰投票。\n”)
其他:
公民=输入(“您是否拥有爱尔兰公民身份?是/否:\n”)
如果公民==是:
打印(“您有资格在爱尔兰投票。\n”)
其他:
打印(“您没有资格在爱尔兰投票。\n”)

安迪的帖子对我很有帮助。我想补充一点。如果在第一个问题中输入一个小于16的整数,则会得到print(“太年轻的bby”)和print(“再见”)。第一次输出仅可供我使用,不可打印(“再见”)。 要实现这一点,请将第二个“if”语句缩进到第一个“else”语句。 如果你不缩进我的代码,你会得到两次“你没有资格在爱尔兰投票”。这是我的例子

Citizen = "No"
Yes = "Yes"
Age = int(input("What is your age?: \n"))
if (Age) < 18:
    print("You are not eligible to vote in Ireland.\n")
else:
    Citizen = input("Do you hold Irish Citizenship? Yes/No: \n")
    if Citizen == Yes:
        print("You are eligible to vote in Ireland.\n")
    else:
        print("You are not eligible to vote in Ireland.\n")
Citizen=“否”
Yes=“Yes”
年龄=int(输入(“您的年龄是多少?:\n”))
如果(年龄)<18岁:
打印(“您没有资格在爱尔兰投票。\n”)
其他:
公民=输入(“您是否拥有爱尔兰公民身份?是/否:\n”)
如果公民==是:
打印(“您有资格在爱尔兰投票。\n”)
其他:
打印(“您没有资格在爱尔兰投票。\n”)

看在上帝的份上,请将年龄转换为整数,如果年龄<16,只需使用
。您需要更多缩进;这在Python中很重要。看在上帝的份上,请将年龄转换为整数,如果年龄<16:,只需使用
;这在Python中很重要,“简短的回答是yes需要加引号”。我不知道。无论您使用字符串literal
“yes”
还是名为
yes
的变量,该条件都应该同样有效。是的,您是对的。我认为回溯是在抱怨
超出范围,而不是
kik
。我更新了我的答案。“简短的回答是是的,需要加引号。”。我不知道。无论您使用字符串literal
“yes”
还是名为
yes
的变量,该条件都应该同样有效。是的,您是对的。我认为回溯是在抱怨
超出范围,而不是
kik
。我更新了我的答案。