繁体   English   中英

如何在python中修复if,elif,else语句?

[英]How to fix my if, elif, else statement in python?

我正在开发一个有趣的模拟器,它询问您的年龄,年龄是否足够大,询问您是否有kik。 如果您的年龄在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

有谁知道如何修理它?

您需要在此处解决几件事。 首先,使用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")

问题是您仅在此块中设置了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设置为默认值,它应该在您的链之外。

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

就像在您的代码中一样,仅当您单击else时才定义它

简短的答案是, 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")

安迪的帖子对我很有帮助。 我要补充一件事。 如果在第一个问题中输入小于16的整数,则将同时显示打印(“ Too young bby”)和“打印”(再见)。 第一个输出仅够我使用,不能打印(“再见”)。 为此,您可以将第二个“ 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")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM