浮点操作编程任务遇ValueError错误,求代码修正方案
错误分析
- 输入逻辑错误:你把用户输入的数字内容直接强转成
int,但任务允许输入小数,且用户可能输入多数字或带小数点的内容,int()无法解析这类输入,直接触发ValueError。另外任务明确要求输入10个数,无需让用户输入数量,直接循环10次即可。 - 列表追加位置错误:
user_numbers.append(el)写在for循环外部,只会把最后一次输入的数字加入列表,前9次输入的数据全部丢失。
修正后的完整代码
user_numbers = [] # 循环10次获取用户输入的浮点数 for _ in range(10): while True: try: num = float(input("请输入一个数字(可整数或小数):")) user_numbers.append(num) break except ValueError: print("输入无效,请输入合法的数字!") print("你输入的10个数字列表:", user_numbers) # 1. 计算总和 total = sum(user_numbers) print(f"总和:{total}") # 2. 最大值的索引 max_value = max(user_numbers) max_index = user_numbers.index(max_value) print(f"最大值的索引:{max_index}") # 3. 最小值的索引 min_value = min(user_numbers) min_index = user_numbers.index(min_value) print(f"最小值的索引:{min_index}") # 4. 平均值(保留两位小数) average = total / 10 print(f"平均值:{average:.2f}") # 5. 计算中位数 sorted_numbers = sorted(user_numbers) median = (sorted_numbers[4] + sorted_numbers[5]) / 2 print(f"中位数:{median}")
关键修正说明
- 直接通过
range(10)循环10次获取输入,贴合任务要求的“输入10个浮点数”需求。 - 加入异常处理,避免用户输入非数字内容导致程序崩溃。
- 将
append操作移入循环内部,确保每一个输入的数字都被存入列表。 - 补充了任务要求的所有计算操作:总和、最大/最小值索引、保留两位小数的平均值、中位数计算。
内容的提问来源于stack exchange,提问作者Rdpcop
相关产品推荐
相关产品推荐

