2016-11-18 4 views
0

Я пытаюсь написать отсортированный список в файл. У меня 1000 целых чисел, которые я отсортировал в порядке возрастания, но не могу написать новый список восходящих чисел в свой новый «результат» файла. Я новичок в программировании, и любая помощь будет очень признательна. Это мой код до сих пор:Невозможно записать отсортированный список в новый файл.

def insertion_sort(): 
    f = open("integers.txt", "r") 

    lines = f.read().splitlines() 
    print(lines) 
    print(type(lines[0])) 
    results = list(map(int, lines)) 
    print(type(results[0])) 
    results.sort() 
    print(results) 


f=open("integers.txt", "r") 
lines = f.read().splitlines() 
results = list(map(int,lines)) 
insertion_sort() 

value = results.sort() 

file_to_save_to = open("results.txt", "w") 
file_to_save_to.write(str(value)) 
file_to_save_to.close() 
+0

Я попытался это, но он говорит, что: TraceBack (самый последний вызов последнего): Файл «C: \ Users \ Октавиана Рошка \ Desktop \ Программирование \ Assignmen t4 \ insertionSort.py.py ", строка 19, в value = sort (results) NameError: имя 'sort' не определено –

+0

моя ошибка, функция' sorted() ', а не' sort() ' , поэтому вы можете использовать 'sorted (results)', но так как вы использовали 'results.sort()' также работает. – davedwards

ответ

0

Ваша проблема с этой линии

value = results.sort()

метод сортировки списка не возвращает ничего, он изменяет список на месте.

Вместо этого вы должны использовать sorted

value = sorted(results) 

или список непосредственно как results без сохранения возвращаемого значения это метод сортировки

results.sort()` 
+0

Большое вам спасибо! –

0

Вы звоните insertion_sort(), которая является функцией, которая выполняет но еще ничего не возвращает. Вы хотите, чтобы вернуть results, просто добавив оператор возврата в конце вашей функции:

def insertion_sort(): 
    f = open("integers.txt", "r") 

    lines = f.read().splitlines() 
    print(lines) 
    print(type(lines[0])) 
    results = list(map(int, lines)) 
    print(type(results[0])) 
    results.sort() 
    print(results) 
    return results # <- Add this line 

Затем использовать возвращаемый список путем изменения:
insertion_sort() в value = insertion_sort()

0

Вы должны попробовать использование функции сортировки

value = sorted(results) 

И вы не можете использовать список (карту (ИНТ, строка))) вы можете передать объект карты к сортируют, так код будет выглядеть следующим образом:

results = sorted(map(int,lines)) 

И полный пример будет выглядеть следующим образом:

f=open("integers.txt", "r") 
lines = f.read().splitlines() 
sorted_lines = sorted(map(int,lines)) 
file_to_save_to = open("results.txt", "w") 
for line in sorted_lines: 
    file_to_save_to.write(str(line)) 
file_to_save_to.close() 
0

Прежде всего, это было бы здорово, если бы вы изменить свою функцию, чтобы получить параметр (список целых чисел), и возвратить отсортированный список вместо None (как это прямо сейчас)

def insertion_sort(T): 
    return sorted(T) 


f=open("integers.txt", "r") 
lines = f.read().splitlines() 
results = list(map(int,lines)) 
value = insertion_sort(results) 

file_to_save_to = open("results.txt", "w") 
file_to_save_to.write(str(value)) 
file_to_save_to.close() 
Смежные вопросы