簡體   English   中英

為什么我在 elif 行中收到無效的語法錯誤?

[英]Why am I getting an Invalid Syntax Error in the elif line?

有人可以告訴我為什么我在這里收到無效的語法錯誤(python 3):

a = input("Do you want the alphabets in the pattern in ascending order or descending order? (Yes/No) ")
if a == "Yes" or "yes":
    b = 65
    elif a == "No" or "no":
        b = 88
    else print("Invalid input")
for x in range (5,0,-1):
    for y in range (0,x):
        print(" ", chr(y+b), end = "")
    print()

第一個問題是縮進。 elifelse必須與它們各自的if對齊。 此外,在else之后:是預期的,結果在下面的行中。 在這里,我更改了您的代碼以使其正常運行:

a = input("Do you want the alphabets in the pattern in ascending order or descending order? (Yes/No) ")
if a.lower() == 'yes':
    b = 65
elif a.lower() == 'no':
    b = 88
else:
    print("Invalid input")
for x in range (5,0,-1):
    for y in range (0,x):
        print(" ", chr(y+b), end = "")
    print()

您問題的根源在於 else 語句不完整。 您缺少冒號 (:) 來結束 if-elif-else 語句的條件部分。 由於 else 語句是包羅萬象的條件,因此您只需要立即在 else 語句之后放置一個冒號。 因此,如果您要使用其他單行代碼(我不建議這樣做,因為它會略微降低代碼的可讀性),那么您可以執行以下操作:

a = input("Do you want the alphabets in the pattern in ascending order or descending order? (Yes/No) ")
if a == "Yes" or "yes":
    b = 65
elif a == "No" or "no":
    b = 88
else: print("Invalid input")

for x in range (5,0,-1):
    for y in range (0,x):
        print(" ", chr(y+b), end = "")
    print()

其次,條件的編寫方式不正確,因為它總是評估為 True。 這是因為等式運算符是一個二元運算符,而右邊的表達式可以讀作兩個獨立的表達式。 這是一個快速演示:

>>> a = "No"
>>> a == "Yes" or "yes"
>>> 'yes'

這是因為您的條件的結果將始終輸出 'yes' 並且 Python boolean 將始終為非空字符串輸出 True:

>>> bool(a == "Yes" or "yes")
>>> True

至少你應該在比較操作的右側加上括號,這樣它就可以評估整個右側。

>>> a == ("Yes" or "yes")
>>> False

附帶說明一下,如果 b 未在 if-else 語句之前聲明,則您的 for 循環可能會遇到問題。 它會提示一個錯誤,說明您在聲明之前使用了一個變量。 為了使其正常工作,您需要確保在所有條件下都聲明了 b。 所以我會做這樣的事情。

a = input("Do you want the alphabets in the pattern in ascending order or descending order? (Yes/No) ")
if a == "Yes" or "yes":
    b = 65
elif a == "No" or "no":
    b = 88
else: 
    b = 0
    print("Invalid input")

for x in range (5,0,-1):
    for y in range (0,x):
        print(" ", chr(y+b), end = "")
    print()

您需要完成您的or陳述。 Python 不會保留or之前部分的a == ,因此您在or之后編寫的部分基本上是在說“是”,這顯然沒有意義。 要更正它,您需要將if a == "Yes" or "yes":更改為if a == "Yes" or a == "yes":並對 elif 語句執行相同操作。

另外,請確保不要在 if 語句中留下縮進,因為它將 elif 和 else 語句作為 if 被觸發后發生的事情。 確保它們與 if 語句一致。 另外,請記住,else 語句類似於 if/elif 語句,因為您需要用冒號結束該語句,然后將您想要發生的事情縮進 - else: ,然后放在下一行。

if a == "Yes" or a == "yes":
    b = 88
elif a== "No" or "no":
    b == 88
else:
    print("Invalid input")

我希望這是有道理的,因為我不經常回答問題,但我會盡可能提供幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM