编写用户输入数字处理函数,返回浮点型列表并修正代码问题
修正后的函数实现及问题分析
这里是完全符合需求的函数实现:
def num_print(): output_list = [] while True: user_input = input('Enter the digit\n') # 输入Stop时终止并返回转换后的浮点型列表 if user_input == 'Stop': return [float(num) for num in output_list] # 按逗号分割输入的内容 items = user_input.split(',') # 遍历每个分割后的元素 for item in items: # 去除元素前后的空格,兼容带空格的输入格式 cleaned_item = item.strip() # 判断是否为纯数字,符合条件则加入列表 if cleaned_item.isdigit(): output_list.append(cleaned_item)
原代码的核心问题:
- 分割逻辑错误:原代码用
split()(默认按空格分割),但需求中输入是逗号分隔(比如1,2,3),应改为split(',')才能正确拆分元素。 - 数字判断逻辑错误:直接对整个输入字符串调用
isdigit(),如果输入包含逗号(比如1,2),整个字符串不是纯数字会被直接跳过,正确做法是分割后逐个判断每个元素。 - 提前返回导致转换不完整:原代码在
Stop分支的循环里,刚转换第一个元素就执行return,导致仅第一个元素被转成浮点型就返回,循环根本无法完成全部转换。 - 未处理输入空格:如果用户输入
1 , 2这类带空格的格式,原代码无法正确识别数字,需要先去除每个元素的前后空格。
测试输入1,2,3,4,h,5,Stop,函数会返回[1.0, 2.0, 3.0, 4.0, 5.0],完全匹配预期效果。
内容的提问来源于stack exchange,提问作者Shox
相关产品推荐
相关产品推荐

