[英]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()
第一個問題是縮進。 elif
和else
必須與它們各自的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.