Python使用while循环查找代词名词后紧邻动词输出异常求助
问题排查与代码修正
错误原因
- 打印语句位置错误:
print被放在while循环内部,每次寻找动词的过程中,每移动一次下标就会打印当前位置的元素,导致所有中间的非动词词性内容也被输出。 - 打印对象错误:
while循环的终止条件是找到词性为VERB的元素,跳出循环时i+iterate对应的才是目标动词,你当前没有在循环结束后打印目标位置的内容,反而打印了循环过程中的中间元素。 - 存在数组越界风险:如果代词/名词后面没有后续动词,下标不断累加会超出列表长度触发报错,需要补充边界判断。
修正后代码
points = [('I', 'PRON', 'nsubj'), ('don', 'AUX', 'aux'), ('t', 'PART', 'neg'), ('hope', 'VERB', 'ROOT'), ('that', 'SCONJ', 'mark'), ('the', 'DET', 'det'), ('salary', 'NOUN', 'nsubj'), ('will', 'AUX', 'aux'), ('change', 'VERB', 'ccomp'), ('.', 'PUNCT', 'punct')] for i, (word, pos, dep) in enumerate(points): if pos == "PRON" or pos == "NOUN": iterate = 1 # 增加边界判断,避免越界 while i + iterate < len(points) and points[i+iterate][1] != "VERB": iterate += 1 # 循环结束后判断是否找到动词再打印 if i + iterate < len(points): # 如需输出英文动词保留下面这行 # print(points[i+iterate][0]) # 如需输出中文释义使用下面这行 print("希望" if points[i+iterate][0] == "hope" else "调整")
输出结果
英文原始输出:
hope change
中文释义输出:
希望 调整
内容的提问来源于stack exchange,提问作者lookers
相关产品推荐
相关产品推荐

