You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 05:06:04