Python3 控制流语句 elif 不允许在其之上工作



所以最近我一直在做一些Leetcode,我正在编写我的解决方案。我有一个这样的片段

def vowel_spellcheck(query):
query_lower = query.lower()
query_devoweled = devoweled(query.lower())
if query in word_ref: 
return query


elif query_lower in word_lower:
return word_lower[query_lower]

elif query_devoweled in word_vowel:
return word_vowel[query_devoweled]

return ""

这很好。但是当我尝试做

def vowel_spellcheck(query):
query_lower = query.lower()
query_devoweled = devoweled(query.lower())
if query in word_ref: 
return query

print("doing some work")
elif query_lower in word_lower:
return word_lower[query_lower]

elif query_devoweled in word_vowel:
return word_vowel[query_devoweled]

return ""

编译器抱怨。我试图看看为什么不允许这样做的原因。其他语言也是这样的吗?

我想不出一种编程语言具有if/else语句并且不能以这种方式工作。if/elif/else通常是一个语义单元,elif/else延续子句从属于if。允许在子句之间无条件执行通常会使else与以前的许多if中的任何一个相关联成为一个挑战。

特别是在 python 中,缩进会关闭if下的语句套件。如果下一个标记不是"elif"或"else",则整个if语句结束。不允许"ELIF"和"else"开始新语句,语法错误也是如此。请参阅复合语句。

在此示例中,每个条件返回,因此不需要elif

def vowel_spellcheck(query):
query_lower = query.lower()
query_devoweled = devoweled(query.lower())
if query in word_ref: 
return query
print("doing some work")
if query_lower in word_lower:
return word_lower[query_lower]

if query_devoweled in word_vowel:
return word_vowel[query_devoweled]

return ""

在 python 中,un缩进会导致 if 语句停止。 因此,只需使用多个 if 语句。 "elif"和"else"不允许启动新语句,语法错误也是如此.
你向每个语句添加了返回,然后它返回并停止函数。所以你不需要做额外的elif

def vowel_spellcheck(query):
query_lower = query.lower()
query_devoweled = devoweled(query.lower())
if query in word_ref: 
return query

print("doing some work")
if query_lower in word_lower:
return word_lower[query_lower]

if query_devoweled in word_vowel:
return word_vowel[query_devoweled]

return ""

最新更新