所以最近我一直在做一些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 ""