2016-11-18 3 views
0

Ich versuche eine sortierte Liste in eine Datei zu schreiben. Ich habe 1000 ganze Zahlen, die ich in aufsteigender Reihenfolge sortiert habe, aber ich kann die neue Liste der aufsteigenden Zahlen nicht in meine neue Datei 'results' schreiben. Ich bin neu im Programmieren und jede Hilfe würde sehr geschätzt werden. Dies ist mein Code so weit:Die sortierte Liste kann nicht in eine neue Datei geschrieben werden.

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

ich versucht habe, dass aber es sagt, dass: Traceback (jüngste Aufforderung zuletzt): Datei „C: \ Benutzer \ Octavian Rosca \ Desktop \ Programming \ Assignmen t4 \ insertionSort.py.py ", Zeile 19, in value = sort (Ergebnisse) NameError: Name 'sort' ist nicht definiert –

+0

mein Fehler, die Funktion ist' sorted() ', nicht' sort() ' , so können Sie 'sorted (results)' verwenden, aber wie Sie 'results.sort()' verwendet haben, funktioniert auch. – davedwards

Antwort

0

Ihr Problem aus dieser Linie ist

value = results.sort()

die Sortiermethode einer Liste gibt nichts zurück, ändert er die Liste an seinem Platz.

Stattdessen sollten Sie sorted

value = sorted(results) 

oder die Liste verwenden, um direkt als results ohne den Rückgabewert der Lagerung ist eine Art Methode

results.sort()` 
+0

Vielen Dank! –

0

Sie insertion_sort() sind aufrufen, die eine Funktion ist, die die durchführt Operation, aber gibt noch nichts zurück. Sie werden zurückkehren wollen die results, indem einfach die Return-Anweisung am Ende Ihrer Funktion:

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 

Verwenden Sie dann die zurückgegebene Liste durch Ändern: versuchen
insertion_sort()-value = insertion_sort()

0

Sie sollten Verwendung Funktion sortiert

value = sorted(results) 

Und Sie können nicht verwenden Liste (Karte (int, Linien))) Sie können Kartenobjekt zum sortiert passieren, so wird der Code wie folgt sein:

results = sorted(map(int,lines)) 

Und voll Beispiel so sein wird:

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

Zunächst einmal wäre es toll, wenn Sie Ihre Funktion ändern würde einen Parameter (Liste der Ints) zu empfangen, und das Rück sortierte Liste statt None (wie es jetzt ist)

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() 
Verwandte Themen