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

Python实现输入空白停止的列表去重(禁用set())及报错修复

问题分析与修复方案

嘿,我来帮你搞定这个问题!首先看你遇到的TypeError,原因特别清楚——你代码里写了x=x+1,但x是用户输入的字符串类型,字符串和整数1根本没法直接拼接,而且这行代码完全是多余的,直接删掉就能解决这个报错。

不过你的代码还有其他几个逻辑小问题,我一起帮你梳理修复:

1. 输入循环的逻辑漏洞

你一开始先执行了x = input('Type anything'),但进入while循环后又立刻重新调用input,导致第一次输入的内容根本没被添加到列表里。我们可以调整循环结构,让每次输入都被正确捕获。

2. 去重逻辑完全无效

你原来的去重代码:

for i in random_list:
    if i not in random_list:
        random_list.append(i)

这完全不会生效,因为i本来就是从random_list里遍历出来的,i not in random_list永远是False,根本不会添加任何元素。我们需要新建一个空列表,遍历原列表时只把没出现过的元素加进去。


修正后的完整代码

def assignment():
    random_list = []
    while True:
        x = input('Type anything (press Enter to stop): ')
        # 输入空白时终止循环
        if x == '':
            break
        random_list.append(x)
    
    # 手动去重(不使用set())
    unique_list = []
    for item in random_list:
        if item not in unique_list:
            unique_list.append(item)
    
    print("原始列表:", random_list)
    print("去重后的列表:", unique_list)

assignment()

关键改动说明

  • 删掉了多余的x=x+1,直接解决TypeError
  • 改用while True无限循环配合break终止,逻辑更清晰,不会漏掉第一次输入的内容
  • 新建unique_list存储去重结果,遍历原列表时仅添加未在新列表中出现过的元素,实现手动去重
  • 添加了友好的输入提示,同时输出原始列表和去重后的结果,方便验证效果

测试示例:依次输入apple、banana、apple、orange,然后按回车,会得到:

原始列表: ['apple', 'banana', 'apple', 'orange']
去重后的列表: ['apple', 'banana', 'orange']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:08:37