gpt4 book ai didi

Python:可以在 "elif"之前评估 "if"吗?

转载 作者:太空宇宙 更新时间:2023-11-04 01:32:59 27 4
gpt4 key购买 nike

<分区>

我使用的是 Python 2.6,我很难理解为什么以下代码会在它被抛出的位置抛出 IndexError。将此版本的 Porter Stemmer 合并到 Web 服务中时会发生错误(非常罕见)。

该代码涉及一系列“if-elif-elif-else”语句,这些语句检查一系列场景的输入词索引。请注意,self.k 是一个整数值(占位符),self.ends(val) 返回 0 或 1。

if self.b[self.k - 1] == 'a':
if self.ends("al"): pass
else: return
elif self.b[self.k - 1] == 'c':
if self.ends("ance"): pass
elif self.ends("ence"): pass
else: return

...additional "elifs" appear here, but none modify self.b or self.k ...

elif self.b[self.k - 1] == 's':
if self.ends("ism"): pass
else: return

但是,很少(输入是高度可变的),“elif”语句之一会抛出 IndexError。例如:

line 290, in step4
elif self.b[self.k - 1] == 's':
IndexError: string index out of range

我无法理解的是,为什么对“elif”的评估抛出一个 IndexError 而不是最初的“if”语句?我还没有关于什么输入引发错误的数据(同样,这种情况非常罕见)。也有可能词干分析器正在接收某种类型的“错误”输入……关于 Python if-elifs 有什么我遗漏/应该注意的吗? (我知道“elif”不能放在“if”之前...)。

谢谢,如果我可以提供任何其他信息,请告诉我。

此外,如果您对(大部分)完整代码感兴趣,我使用的是此代码的修改版本:http://tartarus.org/~martin/PorterStemmer/python.txt ,但我认为这与我的问题无关。

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com