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
相关产品推荐
相关产品推荐

