Zoznam v Pythone

Mám daný program - binárne vyhľadávanie v načítanom zozname čísel. Mojou úlohou je doplniť ho tak, aby mi program vypísal, na ktorej pozícii sa nachádza hľadané číslo (ktoré si určím) v mojom zozname, ale iba v prípade, že je zoznam čísel usporiadaný buď vzostupne alebo zostupne. Ak sú čísla všelijak poprehadzované, program vypíše, že zoznam nie je usporiadaný. Program mi celkom funguje, no vždy, keď je hľadané číslo na 0. pozícii a zoznam je usporiadaný, vypíše mi, že zoznam usporiadaný nie je. :( Prosím, poraďte mi, čo s tým.
Ďalej mám doplniť program, ktorý vypíše 2. najväčšie číslo, tak ak máte nápady, píšte.

Ďakujem

Program:
import random

def menu():
print('1) Nacitaj zoznam')
print('2) Generuj zoznam')
print('4) Binarne vyhladavanie')
print('8) Druhe najvacsie cislo')
print('9) Koniec')
vypis_zoznam(zoznam)
volba = int(input('Tvoj vyber: '))
return volba

def vypis_zoznam(zoznam):
print(zoznam)

def nacitaj_zoznam(zoznam):
pocet = int(input('Zadaj pocet prvkov: '))
zoznam = []
for i in range(pocet):
z = int(input('Zadaj hodnotu: '))
zoznam.append(z)
return zoznam

def generuj_zoznam(zoznam):
pocet = int(input('Zadaj pocet prvkov: '))
zoznam = []
for i in range(pocet):
z = random.randrange(1, 21)
zoznam.append(z)
return zoznam

def binarne(zoznam):
usporiadane = True
def usporiadanie():
if zoznam[0] > zoznam[0 + 1]:
for i in range(len(zoznam) - 1):
if zoznam[i] < zoznam[i + 1]:
usporiadane = False
return usporiadane
elif zoznam[0] < zoznam[0 + 1]:
for i in range(len(zoznam) - 1):
if zoznam[i] > zoznam[i + 1]:
usporiadane = False
return usporiadane
else:
usporiadane = True
return usporiadane

hladane = int(input('Zadaj hladanu hodnotu: '))
l = 0 #lava hranica
p = len(zoznam) - 1 #prava hranica -1 lebo indexy od 0
vysl = (usporiadanie())
stred = 0
if vysl == False:
usporiadane = False
return usporiadane
else:
while l <= p:
stred = (l + p) // 2 #celociselne delenie!
if zoznam[stred] > hladane:
if zoznam[0] > zoznam[1]:
l = stred + 1
elif zoznam[0] < zoznam[1]:
p = stred - 1
elif zoznam[stred] < hladane:
if zoznam[0] > zoznam[1]:
p = stred - 1
elif zoznam[0] < zoznam[1]:
l = stred + 1
elif zoznam[stred] == hladane:
return stred
else:
return -1

volba = 0
zoznam = []
while volba != 9:
volba = menu()
if volba == 1:
zoznam = nacitaj_zoznam(zoznam)
elif volba == 2:
zoznam = generuj_zoznam(zoznam)
elif volba == 3:
linearne(zoznam)
elif volba == 4:
result = binarne(zoznam)
if result == -1:
print('Hodnota sa v zozname nenachadza')
elif result == False:
print('Zoznam nie je usporiadany')
else:
print('Hodnota sa v zozname nachadza na', result+1,'. pozicii')
elif volba == 5:
zoznam = tried_vyberom(zoznam)
print(zoznam)
elif volba == 6:
zoznam = tried_vkladanim(zoznam)
print(zoznam)
elif volba == 7:
zoznam = tried_vymenou(zoznam)
elif volba == 8:
zoznam = druha_najvacsia_hodnota(zoznam)
print('Dovidenia')

1 odpoveď
Nie je to čitateľné, keďže odsadenie (4 medzery na každý level odsadenia) je v Pythone kľúčové. (https://www.python.org/dev/peps/pep-0008/#indentation)
Ak chceš, napíš mi súkromnú správu a môžeme sa na to spolu pozrieť.