Feedback k domácím projektům

Načítání obsahu souboru

S cyklem for

In [1]:
radky = []
with open('basen.txt') as soubor_s_basni:
    for radek in soubor_s_basni:
        radky.append(radek)
    
print(radky)
['Sněží, sněží,\n', 'u Stalingradu němci leží. \n', 'Je jim zima, mají hlad,\n', 'nedobudou Stalingrad!\n']

Bez něj

metodou read()

In [4]:
with open('basen.txt') as soubor_s_basni:
    obsah_souboru = soubor_s_basni.read()
    radky = obsah_souboru.split('\n')
    
print(radky)
['Sněží, sněží,', 'u Stalingradu němci leží. ', 'Je jim zima, mají hlad,', 'nedobudou Stalingrad!', '']

metodou readlines()

In [5]:
with open('basen.txt') as soubor_s_basni:
    radky = soubor_s_basni.readlines()
    
print(radky)
['Sněží, sněží,\n', 'u Stalingradu němci leží. \n', 'Je jim zima, mají hlad,\n', 'nedobudou Stalingrad!\n']

Hledání slova v seznamu

In [6]:
seznam = ['pes', 'kočka', 'králík', 'had']

Nejsložitější varianta - průchod celým seznamem

In [8]:
def hledej_slovo(slovo,seznam):
    for prvek in seznam:
        if prvek != slovo:
            continue
        return True
    return False

print(hledej_slovo('pes', seznam))
print(hledej_slovo('andulka', seznam))
True
False

Lepší, ale stále zbytečně dlouhá varianta

In [10]:
def hledej_slovo(slovo,seznam):
    vysledek = None
    if slovo in seznam:
        vysledek = True
    else:
        vysledek = False
    
    return vysledek

print(hledej_slovo('pes', seznam))
print(hledej_slovo('andulka', seznam))
True
False

Pravděpodobně nejlepší z domácích projektů

In [12]:
def hledej_slovo(slovo,seznam):
    if slovo in seznam:
        return True
    else:
        return False

print(hledej_slovo('pes', seznam))
print(hledej_slovo('andulka', seznam))
True
False

Nejkratší možná

In [13]:
def hledej_slovo(slovo,seznam):
    return slovo in seznam

print(hledej_slovo('pes', seznam))
print(hledej_slovo('andulka', seznam))
True
False

Jiný přístup k řazení podle druhého znaku

Tento postup neodpovídá zadání, ale je o hodně jendodužší a kratší. Existuje mnoho způsobů jak napsat tutéž funkci a proto je programování umění.

Pomocí operátoru z modulu operator

In [14]:
from operator import itemgetter

zvirata = ['pes', 'kočka', 'andulka', 'králík', 'had']

def serad(s):
    s.sort(key=itemgetter(1))
    return s

print(serad(zvirata))
['had', 'pes', 'andulka', 'kočka', 'králík']

Pomocí anonymní funkce tzv. lambda

In [15]:
def serad(s):
    s.sort(key=lambda x: x[1])
    return s

print(serad(zvirata))
['had', 'pes', 'andulka', 'kočka', 'králík']

Obecné

  • Pokud musíte odevzdat nefungující projekt, napište někde nahoru do komentářů, co je podle Vás důvod nefunkčnosti a jak jste se jej pokusili řešit
  • Hledání snazších řešení je možné spíše jako bonus. Zkuste se držet zadání. K jejich napsání v konkrétní podobě jsme měli dobrý důvod.
  • Složitější příklady pro Vás prozatím nemáme, protože domácí projekty musí být vhodné pro všechny - zkušenější i méně zkušené. Fantazii se ale meze nekladou a pokud budete chtít, můžete se už v průběhu kurzu zapojit do Advanced PyLadies. Podrobnosti u Lumíra
In [ ]: