Python TypeError:列表索引必须是整数或切片,而不是浮点型

陶有为 149 0

使用索引号对列表进行索引。这些数字是整数值。如果您尝试使用浮点数访问列表中的项目,则会出现“ TypeError:列表索引必须是整数或切片,而不是浮点数”错误。

本指南讨论了此错误的含义以及为什么会遇到此错误。我们将逐步举例说明该错误,以便您学习如何解决。

TypeError:列表索引必须是整数或切片,而不是浮点型

将项目添加到列表时,将为该项目分配一个索引值。索引值从零开始,对于列表中的每个新项目,索引值递增一。这样可以轻松访问单个项目。列表中的第一项具有索引0,第二项具有索引1,依此类推。

您不能使用浮点数从列表中检索项目。浮点数是另一种数据类型。结果,Python对它们的处理方式有所不同。列表期望使用整数索引号,因为列表是使用整数索引的。

一个示例场景

我们将构建一个程序来检索有关网球比赛参与者的信息。首先,定义一个列表列表。此列表列表将包含有关锦标赛所有参与者的信息:

participants = [

["Alex Rogers", 5, 2],

["Linda Patterson", 3, 4],

["Ruby Spencer", 1, 6]

]

我们的参与者列表包含三个列表。这些中的每一个按顺序列出参与者的名称,他们赢得的游戏数量以及他们输掉的游戏数量。

这些值按玩家赢得的次数排序。

接下来,我们向用户询问要查看其信息的玩家。我们使用input()语句执行此操作:

player_to_find = float(input(“Enter the leaderboard position of the player you want to find: ”))

用户插入的数字应与玩家在排行榜上的位置相对应。亚历克斯·罗杰斯是第一位。为了了解他,用户可以输入1。

我们将用户插入的值转换为浮点数,因为稍后我们将在代码中使用索引。索引值是数字,因此我们需要一个数字来处理。

接下来,使用索引检索用户正在寻找的玩家:

player_info = participants[player_to_find - 1]

我们使用用户插入的值从participants列表中查找单个玩家的记录。我们将值减去1,player_to_find因为列表从零开始索引,并且排行榜上的第一个人将位于位置#1。

接下来,将有关此参与者的详细信息打印到控制台:

print("Name: {}".format(player_info[0]))

print("Wins: {}".format(player_info[1]))

print("Losses: {}".format(player_info[2]))

我们显示玩家的姓名,他们赢得了多少场比赛以及输给了控制台多少场比赛。让我们运行我们的程序:

输入您要查找的玩家的排行榜位置:2


Enter the leaderboard position of the player you want to find: 2

Traceback (most recent call last):

  File "main.py", line 9, in <module>

player_info = participants[player_to_find + 1]

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

将排行榜位置插入程序后,将引发错误。

我们将用户插入程序中的值转换为浮点数。我们使用float()方法执行此操作。

这是一个错误,因为当需要从participants列表中检索项目时,我们会尝试使用浮点数进行检索。这会导致错误。

要修复我们的程序,我们必须将用户插入的值转换为整数而不是浮点数。我们可以使用以下int()方法执行此操作:

player_to_find = int(input(“Enter the leaderboard position of the player you want to find: ”))

现在我们有了一个整数值,我们可以使用索引从列表中检索项目。运行我们的代码,看看会发生什么:

输入您要查找的播放器的编号:2

姓名:琳达·帕特森(Linda Patterson)

获胜:3

损失:4

我们的代码成功地向我们显示了排行榜上排名第二的个人的玩家记录。

结论

当您尝试使用浮点数访问列表中的项目时,发生“ TypeError:列表索引必须是整数或切片,而不是浮点数”错误。要解决此错误,请确保仅使用整数通过索引值访问列表中的项目。

标签: Python Python学习

发表评论 (已有0条评论)

还木有评论哦,快来抢沙发吧~