发现了一个问题,写出来解决方法分享给小伙伴!!!嘿嘿~
number=[94,89,96,88,92,86,69,95,78,85]
averge=sum(number)/len(number)
number1=sorted(number)
mid=0
print("前三名成绩为:",end=" ")
for i in range(-1,-4,-1):
# print(i)
print(number1[i],end=" ")
print("\n后三名成绩为:",end=" ")
for i in range(0,3,1):
print(number1[i],end=" ")
if len(number)%2==0:
mid=(number1[len(number1)/2-1]+number1[len(number1)/2])/2#这里报错
print("\n中位数为:",mid)
else:
mid=number1[len(number1)/2+1]
print("\n中位数为:",mid)
print("从大到小的排序为:",number1)
print("平均成绩为:",averge)
运行结果:
Traceback (most recent call last):
File "C:\Pythonproject\分析成绩.py", line 13, in <module>
mid=(number1[len(number1)/2-1]+number1[len(number1)/2])/2
TypeError: list indices must be integers or slices, not float
解决办法:原因是由于对列表索引的除法不能使用“/”,因为索引必须是整数,所以要用“//”,然后后面那个求平均数那个2前面的除,需要为浮点数所以用“/”
number=[94,89,96,88,92,86,69,95,78,85]
averge=sum(number)/len(number)
number1=sorted(number)
mid=0
print("前三名成绩为:",end=" ")
for i in range(-1,-4,-1):
# print(i)
print(number1[i],end=" ")
print("\n后三名成绩为:",end=" ")
for i in range(0,3,1):
print(number1[i],end=" ")
if len(number)%2==0:
mid=(number1[len(number1)//2-1]+number1[len(number1)//2])/2#修改了这里
print("\n中位数为:",mid)
else:
mid=number1[len(number1)/2+1]
print("\n中位数为:",mid)
print("从大到小的排序为:",number1)
print("平均成绩为:",averge)
运行结果:
前三名成绩为: 96 95 94
后三名成绩为: 69 78 85
中位数为: 88.5
从大到小的排序为: [69, 78, 85, 86, 88, 89, 92, 94, 95, 96]
平均成绩为: 87.2
欧克,成功解决,开心开心!!!