Portál AbcLinuxu, 26. dubna 2024 08:05


Dotaz: Python - syntax error

9.4.2014 09:40 Igor
Python - syntax error
Přečteno: 206×
Odpovědět | Admin
Ahoj, učím se python a chtěl jsem si napsat vlastní funkci na seřazení polí. Problém je v tom, že mi to ale tady na x: while list[i] < list[i]-x hází syntax error. To nemohu od čísla na místě i odečíst x? proč? taby a mezery jsem radši zkontroloval, jsou v pořádku.
list = [1,7,21,6,8]
def serad(list):
    for i in range(1, len(list)):
        x = 1
        while list[i] < list[i]-x
            x = x+1
		list[list.index(i)], list[list.index(i-x)] = list[list.index(i-x)], list[list.index(i)]
print(list)
print(serad(list))
Díky moc, jsem bezradný.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Tarmaq avatar 9.4.2014 09:47 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: Python - syntax error
Odpovědět | | Sbalit | Link | Blokovat | Admin
chybi ti tam dvojtecka na konci radku
Don't panic!
9.4.2014 10:48 Igor
Rozbalit Rozbalit vše Re: Python - syntax error
Díky, teď mi to ale pro změnu háže ValueError: 0 is not in list, že by chyba v algoritmu?
Tarmaq avatar 9.4.2014 10:56 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: Python - syntax error
ano, cely ten algoritmus mas nejak spatne. O co ma jit? Neco na zpusob bublinkoveho trideni?
Don't panic!
Tarmaq avatar 9.4.2014 11:21 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: Python - syntax error
pokud ma jit o bubble sort, mohlo by to vypadat nejak takhle:
def serad(list):
    n = len(list)
    while True:
        swapped = False
        for i in range(1, n):
            if list[i-1] > list[i]:
                list[i-1], list[i] = list[i], list[i-1]
                swapped = True
        n -= 1
        if not swapped:
            break;
    return list

Don't panic!
9.4.2014 11:58 Igor
Rozbalit Rozbalit vše Re: Python - syntax error
Aha, díky. Ano, mělo se jedna o třídění

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.