在python中使用插入排序时给出key error=0
在我的彩票游戏中,我需要创建1000名玩家,每个玩家都有一个号码集,需要与中奖号码集进行比较。所有的数字集都来自一桶0-30个数字。这一部分我已经做了,但是现在我需要把球员的人数分为两组,分别是PWN和SWN。PWN是前6个数字,SWN是最后两个数字。Im需要使用插入排序对PWN进行排序,使用选择排序对SWN进行排序。我仍然没有参加SWN部分,因为我仍然在努力找出PWN排序在python中使用插入排序时给出key error=0,python,insertion-sort,Python,Insertion Sort,在我的彩票游戏中,我需要创建1000名玩家,每个玩家都有一个号码集,需要与中奖号码集进行比较。所有的数字集都来自一桶0-30个数字。这一部分我已经做了,但是现在我需要把球员的人数分为两组,分别是PWN和SWN。PWN是前6个数字,SWN是最后两个数字。Im需要使用插入排序对PWN进行排序,使用选择排序对SWN进行排序。我仍然没有参加SWN部分,因为我仍然在努力找出PWN排序 for example my program create something like below Winning nu
for example my program create something like below
Winning number
19, 27, 23, 18, 1, 3, 2, 24
Player ID | Player Numbers
1 | 8, 14, 3, 4, 10, 21, 2, 22
2 | 13, 22, 9, 11, 23, 29, 16, 27
3 | 10, 25, 22, 26, 8, 5, 23, 18
but I need to sort them like
Winning number
PWN | SWN
19, 27, 23, 18, 1, 3 | 2, 24
Player ID | Player Numbers PWN | Player Numbers SWN
1 | 8, 14, 3, 4, 10, 21 | 2, 22
2 | 13, 22, 9, 11, 23, 29 | 16, 27
3 | 10, 25, 22, 26, 8, 5 | 23, 18
随机导入
#在程序中生成数据的主代码从这里开始
def GeneratorDomainNumber():
randomNumber=random。randint(0,30)#可以返回0到30之间的数字,包括0到30
返回随机数#返回随机数
def drawinninglotterynumber():#此函数生成中奖号码
LotteryDrawNumber=[]#列出生成的彩票号码的容器
对于范围(8)中的currentLotteryNumber:#对于保持生成8个计数的循环
randomNumber=GeneratorAndomNumber()#调用函数生成随机数
LotteryDrawNumber.append(randomNumber)#添加到列表的后面
返回乐透抽签号码#返回列表
def printWinningLotteryNumber(LotteryDrawNumber):#此函数用于打印中奖号码
对于范围内的currentLotteryNumberIndex(len(LotteryDrawNumber)):#对于循环,运行列表长度的打印功能
打印(LotteryDrawNumber[currentLotteryNumberIndex],end=”“)#打印数字
def draw():#此函数用于获取绘图函数并打印它
lotteryNumbers=drawWinningLotteryNumber()#调用函数绘制中奖号码
打印(“今天的8号彩票号码是:”)
printWinningLotteryNumber(LotteryNumber)#调用函数打印生成的号码
def generateID():#此函数用于创建乐透玩家及其号码
玩家={}
对于范围(11001)内的玩家id:
玩家列表=[]
对于范围(8)中的i:
player_list.append(generateRandomNumber())
玩家[玩家id]=玩家列表
#对于玩家中的玩家id:
#打印(“玩家{}有数字{}”。格式(玩家id,玩家[玩家id]))
普沃斯特(球员)
打印(“排序数组为:”)
对于范围内的i(len(玩家)):
打印(玩家[i])
#数据生成代码到此结束
def pwnSort(玩家):
对于范围内的i(1,len(玩家)):
key=玩家[i]
j=i-1
当j>0和key
当我运行这段代码时,它会创建数据并卡住,并在pwnSort()处给出以下内容
播放器984有数字[14,8,16,9,29,21,3,9]
玩家985有数字[28,15,1,19,30,23,29,2]
玩家986有数字[6,8,13,0,19,5,13,2]
玩家987有数字[29,13,9,16,28,8,15,20]
玩家988有数字[6,0,13,20,18,26,22,15]
玩家989有数字[29,13,17,16,18,13,14,8]
玩家990有数字[12,22,29,5,13,16,16,23]
玩家991有数字[18,0,12,11,11,6,19,24]
玩家992有数字[4,0,19,24,17,20,19,3]
玩家993有数字[24,28,10,4,8,13,19,6]
玩家994有数字[19,17,10,14,7,15,14,6]
玩家995有数字[1,18,24,5,29,19,20,2]
玩家996有数字[26,9,0,28,7,2,18,20]
玩家997有数字[19,8,8,30,14,0,5,8]
玩家998有数字[19,16,7,14,16,25,0,21]
玩家999有数字[15,27,29,10,4,28,12,30]
玩家1000有数字[8,18,6,6,17,25,6,16]
排序数组是:
回溯(最近一次呼叫最后一次):
文件“E:/User Profile/Documents/ACBT/Data-structures/assignment.py”,第86行,在
generateID()
文件“E:/User Profile/Documents/ACBT/Data-structures/assignment.py”,第40行,在generateID中
打印(玩家[i])
关键错误:0
所以基本上我想做的是打印插入排序的PWN编号,但是当我运行它时,它抛出了上面的错误。我能知道为什么以及如何修复这个问题吗?你用错误的键在字典上迭代 下面是正确的代码:
for key in players:
print(players[key])
对于映射(如字典),
。\uuuu iter\uuuu()
应该迭代键。这意味着,如果您将字典直接放入for循环,Python将自动调用该字典上的。\uuuu iter\uuuu()
,您将在其键上得到一个迭代器。您使用错误的键在字典上进行迭代
下面是正确的代码:
for key in players:
print(players[key])
对于映射(如字典),
。\uuuu iter\uuuu()
应该迭代键。这意味着,如果您将一个字典直接放入for循环,Python将自动调用该字典上的。\uuuu iter\uuuu()
,您将在其键上获得一个迭代器。注意:我还没有检查排序算法的正确性。这个答案只解决了关键错误
是因为您试图在dict中查找不存在的密钥而引发的
def generateID():
...
for player_id in range(1, 1001): # Populates player IDs from 1, 2, 3...
players[player_id] = ...
for i in range(len(players)): # Searches player IDs from 0, 1, 2...
print (players[i])
一般来说,只需在球员身上打圈。由于它是一个字典,您可以使用.items()
检索键和值:
def generateID():
...
for id, player_list in players.items():
print (player_list)
注意:我没有检查您的排序算法的正确性。这个答案只解决了关键错误 是因为您试图在dict中查找不存在的密钥而引发的
def generateID():
...
for player_id in range(1, 1001): # Populates player IDs from 1, 2, 3...
players[player_id] = ...
for i in range(len(players)): # Searches player IDs from 0, 1, 2...
print (players[i])
一般来说,只需在球员身上打圈。由于它是一个字典,您可以使用.items()
检索键和值:
def generateID():
...
for id, player_list in players.items():
print (player_list)
这回答了你的问题吗?这回答了你的问题吗?