Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 插入排序给出相同的数组_Python_Insertion Sort_Insertion - Fatal编程技术网

Python 插入排序给出相同的数组

Python 插入排序给出相同的数组,python,insertion-sort,insertion,Python,Insertion Sort,Insertion,嗨,我正在创建一个小小的乐透程序,该程序需要使用插入排序对字典的前6个数字进行排序,使用选择排序对最后2个数字进行排序。我已经完成了代码并编写了代码,但它给出了以下结果集,最后一个列表不断重复,而不是将其排序并打印。我可以知道为什么以及如何修复它吗 Player 1 has numbers [17, 21, 0, 3, 25, 22, 4, 10] Player 2 has numbers [13, 22, 11, 20, 24, 28, 20, 7] Player 3 has numbers

嗨,我正在创建一个小小的乐透程序,该程序需要使用插入排序对字典的前6个数字进行排序,使用选择排序对最后2个数字进行排序。我已经完成了代码并编写了代码,但它给出了以下结果集,最后一个列表不断重复,而不是将其排序并打印。我可以知道为什么以及如何修复它吗

Player 1 has numbers [17, 21, 0, 3, 25, 22, 4, 10]
Player 2 has numbers [13, 22, 11, 20, 24, 28, 20, 7]
Player 3 has numbers [8, 11, 16, 22, 14, 9, 11, 1]
Player 4 has numbers [8, 23, 28, 30, 6, 19, 12, 24]
Player 5 has numbers [22, 10, 2, 13, 4, 7, 15, 27]
Player 6 has numbers [5, 20, 10, 11, 5, 2, 27, 13]
Player 7 has numbers [25, 9, 22, 5, 14, 8, 25, 20]
Player 8 has numbers [16, 19, 25, 6, 17, 18, 13, 13]
Player 9 has numbers [8, 18, 16, 8, 1, 14, 4, 8]
Sorted array is:
[8, 18, 16, 8, 1, 14, 4, 8]
[8, 18, 16, 8, 1, 14, 4, 8]
[8, 18, 16, 8, 1, 14, 4, 8]
[8, 18, 16, 8, 1, 14, 4, 8]
[8, 18, 16, 8, 1, 14, 4, 8]
[8, 18, 16, 8, 1, 14, 4, 8]
[8, 18, 16, 8, 1, 14, 4, 8]
[8, 18, 16, 8, 1, 14, 4, 8]
the 8 winning numbers are
[9, 12, 5, 17, 14, 17] [16, 4]

似乎您的大部分问题都是排序函数。我调整了一些其他问题,最终得出以下结论:

import random


def random_generator():
    randomNumber = random.randint(0, 30)
    return randomNumber


def winningNumbers():
    winningPwn = []
    winningSwn = []
    for currentPwn in range(6):
        randomPWN = random_generator()
        winningPwn.append(randomPWN)
    for currentSwn in range(2):
        randomSwn = random_generator()
        winningSwn.append(randomSwn)

    return winningPwn, winningSwn


def printWinningNumber(lotteryNumbers):
    for currentLotteryIndex in range(len(lotteryNumbers)):
        print(lotteryNumbers[currentLotteryIndex], end=" ")


def draw():
    winning = winningNumbers()
    print("the 8 winning numbers are")
    printWinningNumber(winning)


def generatePlayers():
    players = {}

    for player_id in range(1, 10):
        player_list = []
        for i in range(8):
            player_list.append(random_generator())
        players[player_id] = player_list

    for player_id in players:
        print("Player {} has numbers {}".format(player_id, players[player_id]))
        insertionsort(players[player_id])
        print("     Sorted array is {}".format(players[player_id]))

    return players


def insertionsort(players):
    for i in range(1, len(players)):
        value = players[i]
        while i > 0:
            if value >= players[i-1]:
                break
            players[i] = players[i-1]
            i -= 1
        players[i] = value


generatePlayers()
draw()
这就产生了:

Player 1 has numbers [21, 26, 9, 14, 7, 11, 24, 19]
     Sorted array is [7, 9, 11, 14, 19, 21, 24, 26]
Player 2 has numbers [22, 10, 28, 23, 2, 25, 14, 21]
     Sorted array is [2, 10, 14, 21, 22, 23, 25, 28]
Player 3 has numbers [18, 4, 5, 17, 24, 7, 16, 28]
     Sorted array is [4, 5, 7, 16, 17, 18, 24, 28]
Player 4 has numbers [4, 8, 13, 5, 16, 7, 14, 23]
     Sorted array is [4, 5, 7, 8, 13, 14, 16, 23]
Player 5 has numbers [19, 17, 26, 19, 24, 29, 24, 2]
     Sorted array is [2, 17, 19, 19, 24, 24, 26, 29]
Player 6 has numbers [29, 7, 9, 18, 1, 7, 16, 21]
     Sorted array is [1, 7, 7, 9, 16, 18, 21, 29]
Player 7 has numbers [26, 12, 19, 5, 30, 19, 6, 21]
     Sorted array is [5, 6, 12, 19, 19, 21, 26, 30]
Player 8 has numbers [2, 9, 3, 0, 7, 7, 17, 10]
     Sorted array is [0, 2, 3, 7, 7, 9, 10, 17]
Player 9 has numbers [29, 28, 25, 24, 1, 23, 6, 27]
     Sorted array is [1, 6, 23, 24, 25, 27, 28, 29]
the 8 winning numbers are
[10, 23, 1, 30, 21, 9] [19, 1] 
我注意到的一件事是,这些数字可以而且确实以单一的顺序重复。彩票号码不是这样的,对吧


祝您顺利完成您的程序。

提示:请仔细检查您的打印代码:对于玩家中的i[player\u id]:打印玩家[player\u id]您的insertionsort永远不会做任何事情。它将立即中断while循环,因为您设置了value=players[i],然后执行,实际上,如果value>=players[i]:break,则执行该操作。您进行过任何调试吗?请看。
Player 1 has numbers [21, 26, 9, 14, 7, 11, 24, 19]
     Sorted array is [7, 9, 11, 14, 19, 21, 24, 26]
Player 2 has numbers [22, 10, 28, 23, 2, 25, 14, 21]
     Sorted array is [2, 10, 14, 21, 22, 23, 25, 28]
Player 3 has numbers [18, 4, 5, 17, 24, 7, 16, 28]
     Sorted array is [4, 5, 7, 16, 17, 18, 24, 28]
Player 4 has numbers [4, 8, 13, 5, 16, 7, 14, 23]
     Sorted array is [4, 5, 7, 8, 13, 14, 16, 23]
Player 5 has numbers [19, 17, 26, 19, 24, 29, 24, 2]
     Sorted array is [2, 17, 19, 19, 24, 24, 26, 29]
Player 6 has numbers [29, 7, 9, 18, 1, 7, 16, 21]
     Sorted array is [1, 7, 7, 9, 16, 18, 21, 29]
Player 7 has numbers [26, 12, 19, 5, 30, 19, 6, 21]
     Sorted array is [5, 6, 12, 19, 19, 21, 26, 30]
Player 8 has numbers [2, 9, 3, 0, 7, 7, 17, 10]
     Sorted array is [0, 2, 3, 7, 7, 9, 10, 17]
Player 9 has numbers [29, 28, 25, 24, 1, 23, 6, 27]
     Sorted array is [1, 6, 23, 24, 25, 27, 28, 29]
the 8 winning numbers are
[10, 23, 1, 30, 21, 9] [19, 1]