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

Python书籍/电影信息查询程序循环重复输出问题求助

问题分析与修复

你的程序出现重复输出和逻辑错误,核心问题集中在输入处理、循环逻辑和索引安全三个方面:

1. 输入拆分逻辑混乱

你用split()直接拆分用户输入,会把所有空格作为分隔符,导致原本按逗号分隔的作品条目被拆成零散单词,完全破坏了「标题-作者-年份」的结构。比如输入Tell-Tale Heart Poe 1843,会被拆成['Tell-Tale', 'Heart', 'Poe', '1843,'],无法区分每个字段的归属。

2. 重复输出的直接原因

  • author分支:找到匹配作者后未终止循环,会继续遍历整个列表,若因拆分错误导致作者名多次出现,就会重复打印结果;
  • year分支:先直接打印一次目标内容,之后又用循环重复打印同一段内容,且循环条件i<=len(list1)会触发索引越界(当i=len(list1)时,list1[i]不存在)。

3. 索引越界风险

当匹配的作者在列表第一个位置时,i-1会变成-1触发IndexError;同理,匹配项在最后一个位置时,i+1会超出列表长度。


修复后的代码

def find_similar(choice1, items_list):
    if choice1 == 'author':
        name = input('输入要查找的作者姓名: ')
        found = False
        for item in items_list:
            if item[1] == name:
                print(f"标题: {item[0]}")
                print(f"作者: {item[1]}")
                print(f"年份: {item[2]}")
                found = True
        if not found:
            print('未找到该作者的作品')
        
    elif choice1 == 'year':
        target_year = input('输入要查找的年份: ')
        found = False
        for item in items_list:
            if item[2] == target_year:
                print(f"标题: {item[0]}")
                print(f"作者: {item[1]}")
                print(f"年份: {item[2]}")
                found = True
        if not found:
            print('未找到该年份的作品')            

# 处理用户输入,先按逗号拆分条目,再整理结构化数据
user_info = input('输入书籍/电影信息,格式为「标题 作者 年份,」,多个条目用逗号分隔,输入!结束: ')
entries = [entry.strip() for entry in user_info.replace('!', '').split(',') if entry.strip()]
items_list = []
for entry in entries:
    parts = entry.split()
    # 标题可能包含多个单词,取前n-2个拼接,最后两个为作者和年份
    title = ' '.join(parts[:-2])
    author = parts[-2]
    year = parts[-1]
    items_list.append([title, author, year])

print('整理后的输入列表:', items_list)
choice = input('你想搜索什么?(author或year)')
find_similar(choice, items_list)

关键修复点

  • 结构化输入处理:先按逗号拆分每个作品条目,再将条目拆分为支持多单词的标题、作者、年份,形成清晰的结构化列表;
  • 消除重复输出:遍历结构化列表,匹配时直接打印结果,遍历结束后统一提示未找到,避免重复打印;
  • 规避索引越界:直接通过结构化子列表访问字段,不需要偏移索引;
  • 优化交互体验:输入提示更明确,输出结果可读性更强。

内容的提问来源于stack exchange,提问作者ObeseCheetoh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 03:46:11