Python:TypeError: list indices must be integers or slices, not float

博客分享了在处理Python代码时遇到的一个问题,即在计算列表中位数时出现类型错误。作者通过将除法操作符从'/'改为'//'解决了索引必须为整数的问题。修正后的代码成功计算并输出了列表的前三名、后三名成绩、中位数以及从大到小排序的成绩,并展示了正确运行的结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

发现了一个问题,写出来解决方法分享给小伙伴!!!嘿嘿~

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

欧克,成功解决,开心开心!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_55638680

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值