簡體   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