Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.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 Perksort不返回已排序列表_Python_File_Loops_Python 3.x - Fatal编程技术网

Python Perksort不返回已排序列表

Python Perksort不返回已排序列表,python,file,loops,python-3.x,Python,File,Loops,Python 3.x,我有这个,我不知道如何返回排序列表 def perkSort(lst): for i in range(1, len(lst)): number = lst[i] j = i - 1 while (j >= 0) and (lst[j] > number): lst[j+1] = lst[j] j -= 1 lst[j+1] = number def create

我有这个,我不知道如何返回排序列表

def perkSort(lst):
    for i in range(1, len(lst)):
        number = lst[i]
        j = i - 1
        while (j >= 0) and (lst[j] > number):
            lst[j+1] = lst[j]
            j -= 1
        lst[j+1] = number

def createList (x):
    lst = []
    lst = [num.split(',') for num in x.readlines()]
    return lst

def main ():
    x = open(input('Enter File Name (Example - test.txt): '))
    lst = [createList (x)]
    sort = perkSort(lst)
    print(sort)

main ()

我不知道你在问什么。但这里有一些东西可能会对你有所帮助:

def perkSort(lst):
    for i in range(1, len(lst)):
        number = lst[i]
        j = i - 1
        while (j >= 0) and (lst[j] > number):
            lst[j+1] = lst[j]
            j -= 1
        lst[j+1] = number
    return lst #<-------------- 

与内置Python
sort()
一样,您的
perkSort()
也会修改列表,因此不需要返回它。但是,您的
createList()
有点混乱

我想我已经正确猜测了test.txt文件中的数据布局。下面是一个生成随机测试数据的简短程序:

import random

random.seed(42) 
r = range(10)
data = '\n'.join([', '.join([str(random.randint(0,100)) for i in r]) for j in r])
with open('test.txt', 'w') as f:
    f.write(data + '\n')
这是我对你的程序的修改版本,它对数据进行排序:

def perkSort(lst):
    for i in range(1, len(lst)):
        number = lst[i]
        j = i - 1
        while (j >= 0) and (lst[j] > number):
            lst[j+1] = lst[j]
            j -= 1
        lst[j+1] = number

def createList(x):
    lst = []
    for line in x:
        lst += [int(s) for s in line.split(',')]
    return lst

def main():
    fname = input('Enter File Name (Example - test.txt): ')
    #fname = 'test.txt'
    x = open(fname, 'r')
    lst = createList(x)
    x.close()

    print('Unsorted')
    print(lst)

    perkSort(lst) 
    print('\nSorted')
    print(lst)

if __name__ == '__main__':
    main()

你在问什么?如果这是我认为您要问的问题,那么您只需将
return lst
放在该函数的最后一行。我认为问题很清楚:一个Python新手正在问如何做错误的事情。pm2ring给出了正确的答案:“模仿list.sort,不要返回任何东西,忽略默认值”。请不要鼓励新手使用globals。
def perkSort(lst):
    for i in range(1, len(lst)):
        number = lst[i]
        j = i - 1
        while (j >= 0) and (lst[j] > number):
            lst[j+1] = lst[j]
            j -= 1
        lst[j+1] = number

def createList(x):
    lst = []
    for line in x:
        lst += [int(s) for s in line.split(',')]
    return lst

def main():
    fname = input('Enter File Name (Example - test.txt): ')
    #fname = 'test.txt'
    x = open(fname, 'r')
    lst = createList(x)
    x.close()

    print('Unsorted')
    print(lst)

    perkSort(lst) 
    print('\nSorted')
    print(lst)

if __name__ == '__main__':
    main()