Učíme sa Python – časť 3. Domáca úloha – RIEŠENIE

0

Domáce úlohy A riešenia:

1. Na ulici kódu sídli zvláštny zmrzlinový stánok. Ak si zákazník objedná párne číslo kopčekov, tak za jeden platí 1 euro, ale ak si objedná nepárny počet kopčekov, tak za jeden platí 1,5 eura. Pomôžte zmrzlinárovi a spravte funkciu, ktorá mu na základe počtu objednaných kopčekov zistí, koľko má zákazník zaplatiť.

Riešenie:

def sumaKopcekov(pocetKopcekov):
    if (pocetKopcekov % 2 == 0): # zvysok po deleni 2 nula, to znamena ze cislo je parne
        return pocetKopcekov # ak je cislo parne, tak mozem vratit rovno pocet kopcekov, pretoze jeden kopcek stoji 1 euro
    else:
        return pocetKopcekov * 1.5 # kedze cislo nie je parne, tak je neparne, a teda vratim pocet kopcekov * 1.5

print(sumaKopcekov(2)) # vypise 2
print(sumaKopcekov(3)) # vypise 4.5

 

2. Zadaním domácej úlohy je pomôcť Janovi, Miške a Marekovi. Snažia sa prísť na to, ktorý z nich je najstarší, ale fakt na to nevedia prísť. Napíšte funkciu, ktorá má na vstupe vek každého z nich (vek_jano, vek_miska, vek_marek) a vráti vek toho najstaršieho.

Riešenie:

Úloha sa dá spraviť viacerými spôsobmi. Ukážeme si 2 spôsoby:
Prvý spôsob je komplikovanejší na pochopenie, ale efektívnejší pre počítač, pretože počet porovnaní je menší ako pri druhom riešení

def ktoJeNajstarsi(vek_jano, vek_miska, vek_marek):
    if (vek_jano > vek_miska):
        if (vek_jano > vek_marek):
            print("Jano je najstarsi")
            return vek_jano
        else:
            print("Marek je najstarsi")
            return vek_marek
    elif (vek_miska > vek_marek):
        print("Miska je najstarsia")
        return vek_miska
    else:
        print("Marek je najstarsi")
        return vek_marek


print(ktoJeNajstarsi(15,16,17)) # Marek je najstarsi
print(ktoJeNajstarsi(18,16,17)) # Jano je najstarsi
print(ktoJeNajstarsi(15,18,17)) # Miska je najstarsia

Druhý spôsob je pramočiary

def ktoJeNajstarsi(vek_jano, vek_miska, vek_marek):
    if (vek_jano > vek_miska and vek_jano > vek_marek):
            print("Jano je najstarsi")
            return vek_jano
    elif (vek_miska > vek_marek and vek_miska > vek_jano):
        print("Miska je najstarsia")
        return vek_miska
    else:
        print("Marek je najstarsi")
        return vek_marek


print(ktoJeNajstarsi(15,16,17)) # Marek je najstarsi
print(ktoJeNajstarsi(18,16,17)) # Jano je najstarsi
print(ktoJeNajstarsi(15,18,17)) # Miska je najstarsia

 

3. Ferko si povedal, že ak nie je matka od dcéry aspoň o 15 rokov staršia, tak to nebude jej matka. Vytvorte funkciu, ktorá bude mať 3 parametre: (vek_vnucky, vek_matky, vek_babky). Zistite, či podľa Ferka platí, že toto sú skutočne 3 generácie.

Riešenie:

Aj táto úloha sa dá samozrejme vyriešiť viacerými spôsobmi, najprv si ukážeme ten jednoduchší na porozumenie, ale za to má viacej riadkov.

def suToTriGeneracie(vek_vnucky, vek_matky, vek_babky):
    if ((vek_matky - vek_vnucky) - 15 >= 0):  # Matka je aspon o 15 rokov starsia ako vnucka, resp. jej dcera
        if ((vek_babky - vek_matky) - 15 >= 0): # Babka je aspon o 15 rokov starsia ako matka, resp. jej dcera
            return True
        else:
            return False
    else:
        return False

print(suToTriGeneracie(5, 19, 50)) # False (Matka je iba o 14 rokov starsia)
print(suToTriGeneracie(5, 20, 50)) # True (Matka je o 15 rokov starsia a Babka je o 30 rokov starsia ako Matka)
print(suToTriGeneracie(5, 20, 25)) # False (Babka je o 5 rokov starsia ako Matka, nemozu byt 3 generacie nie len podla Ferka)

Riešenie sa dá spraviť aj na jeden riadok. Neveríte? Tak pozrite na to.

def suToTriGeneracie(vek_vnucky, vek_matky, vek_babky):
    return ((vek_matky - vek_vnucky) - 15 >= 0 and (vek_babky - vek_matky) - 15 >= 0)

print(suToTriGeneracie(5, 19, 50)) # False (Matka je iba o 14 rokov starsia)
print(suToTriGeneracie(5, 20, 50)) # True (Matka je o 15 rokov starsia a Babka je o 30 rokov starsia ako Matka)
print(suToTriGeneracie(5, 20, 25)) # False (Babka je o 5 rokov starsia ako Matka, nemozu byt 3 generacie nie len podla Ferka)

 

 

 

 


Pridaj komentár

Vaša e-mailová adresa nebude zverejnená.