Python成绩统计程序执行报错求助:TypeError类型错误
问题分析与解决方案
嘿,这个报错很好解决,咱们来一步步捋清楚:
错误根源
你碰到的TypeError: object of type 'int' has no len(),问题出在计算平均分的那行代码avg=sum1/(len(score)-1)里——这里的score是你每次输入的单个整数成绩,整数类型根本没有len()方法呀!
你本来应该用存储所有有效成绩的列表stu的长度,而且你前面已经正确用len(stu)统计学生人数了,这里明显是手滑写错了~另外,你也不需要写len(...) -1,因为输入-1时程序直接跳出循环,并没有把-1加入stu列表,len(stu)就是准确的学生人数。
修正后的完整代码
stu = list() sum1 = 0 while True: score = int(input("Please enter the student's score:")) if score == -1: break stu.append(score) sum1 += score # 增加空输入判断,避免除以0的报错 if len(stu) == 0: print("No student scores entered!") else: print(f"Total {len(stu)} students") avg = sum1 / len(stu) print(f"Class total score {sum1} points, average grade: {avg} points")
额外优化说明
我还加了一个小判断:如果用户一开始就输入-1,此时stu列表是空的,直接计算平均分就会触发除以0的错误,提前判断后给用户友好提示,能让程序更健壮~
内容的提问来源于stack exchange,提问作者user14719773
相关产品推荐
相关产品推荐

