有人可以告诉我为什么我在这里收到无效的语法错误(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()
答案 0 :(得分:1)
第一个问题是缩进。 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()
答案 1 :(得分:0)
问题的根源是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布尔值对于非空字符串将始终输出True:
>>> bool(a == "Yes" or "yes")
>>> True
至少,您应该在比较操作的右侧加上括号,以便可以评估整个右侧。
>>> a == ("Yes" or "yes")
>>> False
另一方面,如果未在if-else语句之前声明b,则可能会导致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()
答案 2 :(得分:0)
您需要完成or
语句。 Python不会保留a ==
之前的部分中的or
,因此您在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")
我希望这是有道理的,因为我不经常回答问题,但是我会尽可能地提供帮助。