Python实现带字符串校验的无定长主题字符串列表创建问题
代码问题分析与修正方案
现有代码的缺陷
- 硬编码循环次数为5,无法支持无固定长度的输入收集
if planets == str(planets)逻辑完全冗余:input()原生返回字符串,该判断永远为真,无任何校验作用- 未设置终止触发条件,必须输满5次才能结束流程,不符合用户自定义结束的需求
修正后实现代码
# 可自定义修改的配置 COLLECT_TARGET = "行星" # 要收集的主题 END_KEYWORD = "quit" # 终止输入的标识 result_list = [] # 提前告知用户输入规则 print(f"请输入{COLLECT_TARGET}名称,每输完一项按回车,输入{END_KEYWORD}即可结束收集:") while True: # 去除输入前后的多余空格,避免误判 current_input = input().strip() # 触发终止条件直接跳出收集循环 if current_input == END_KEYWORD: break # *如果不需要去重,直接删除下方的if判断,直接执行append即可 if current_input not in result_list: result_list.append(current_input) else: print(f"该{COLLECT_TARGET}已存在,未重复添加") # 输出最终结果 print(f"\n你收集的{COLLECT_TARGET}列表为:") print(result_list)
代码符合需求的特性
- 无硬编码容量:只要不输入终止关键词,可无限添加输入项
- 输入规则明确:启动后第一时间告知用户收集主题、输入方式、终止条件
- 无无效校验逻辑:删除了冗余的字符串判断,新增了入参去空格的实用处理
- 灵活适配需求:需要保留所有重复输入时,删除去重判断即可实现“每一条非终止输入对应列表一个元素”的要求
内容的提问来源于stack exchange,提问作者Viper
相关产品推荐
相关产品推荐

