2016-10-02 1 views
0

Wenn ich eine einzelne Zahl oder Zahlen mit der gleichen ersten Ziffer (10, 11, 12, 13) eingeben, funktioniert der Code einwandfrei. Sobald diese Bedingung jedoch nicht erfüllt wird, denkt das Programm 7 ist größer als 12 ...Python Abschnitt Sortieren funktioniert nicht, wie es gesagt wird

Hier ist was ich versucht habe.

def main(): 
mark = 0 
file_name = input('Enter the name of the file: ') 
lst = [] 
for num in open(file_name): 
    lst.append(num.strip()) 
print(lst) 
lst = sort(lst, mark) 
print(lst) 


def sort(lst, mark): 
while mark <= len(lst) - 1: 
    minval = lst[mark] 
    for i in range(len(lst)): 
     if lst[i] > minval: 
      lst[i], lst[mark] = lst[mark], lst[i] 
    minval = lst[mark] 
    mark += 1 
    sort(lst, mark) 
return lst 

main() 
+0

Sie Strings vergleichen. String "7" ist * größer * als "12" (wird alphabetisch verglichen). – zvone

Antwort

0

Es klingt, als würden Sie die Zahlen als Strings anstatt als Ganzzahlen sortieren. Tatsächlich ist die Zeichenkette "7" größer als die Zeichenkette "12" in der gleichen Weise wie die Zeichenkette "g" nach der Zeichenkette "ab" im Wörterbuch.

Sie können dies vermeiden, indem Sie Ihre Eingaben Ints Gießen:

num = int(input_string) 
+0

oh mein Gott .. vielen Dank :( – Silentstorm

Verwandte Themen