使用for循环计算平均分遇ValueError:无法将'absent'转为浮点数
问题原因
你报错的核心问题是先把输入内容强制转成float了——如果用户输入的是字符串'absent',这一步直接就会触发类型转换错误,后面判断'absent'的代码根本没机会运行。
修正后的代码
total = 0 counter = 0 for i in range(5): # 先获取原始输入,不直接转float input_str = input('enter your scores in order : \n') if input_str.strip().lower() == 'absent': number = 0 else: # 确认不是absent再转成float number = float(input_str) total += number counter += 1 average = total / counter print(average)
关键修改点
- 先获取原始输入字符串,避免直接转换导致报错
- 加了
strip().lower(),可以兼容用户输入带空格或者大小写的情况(比如'Absent'、' absent ') - 把判断逻辑放在类型转换之前,确保'absent'能被正确识别并转为0
内容的提问来源于stack exchange,提问作者Asal Abbassi
相关产品推荐
相关产品推荐

