Informatika2-2015/Gyakorlat04
A MathWikiből
Tartalomjegyzék |
4. gyakorlat - opcionális paraméter és könyvtárak
Ezen a gyakorlaton az előző heti előadás anyagát dolgozzuk fel.
Feladatok
Feladatok a CloudCoder-en megtalálhatóak. Ajánlott sorrend:
- buli
- polarbol_sima
- matrixlog
- huto
Feladatok megoldása
buli
Megoldás listaértelmezés nélkül:
import calendar def buli(napok, honap, ev=2015): hetvegek = [] for nap in napok: if calendar.weekday(ev, honap, nap) > 4: hetvegek.append(True) else: hetvegek.append(False) return hetvegek
Megoldás listaértelmezéssel:
import calendar def buli(napok, honap, ev=2015): return [calendar.weekday(ev, honap, nap) > 4 for nap in napok]
polarbol_sima
Megoldás listaértelmezéssel:
import math def polarbol_sima(polarok): return [(round(hossz*math.cos(szog)), round(hossz*math.sin(szog))) for hossz, szog in polarok]
matrixlog
Egy olyan megoldás ami nem módosítja a paraméterként kapott mutable listákat:
import math def matrixlog(n, M): if n == 0: uj_szam = round(math.log(M, 2), 2) return uj_szam else: uj_M = [] for elem in M: uj_elem = matrixlog(n-1, elem) uj_M.append(uj_elem) return uj_M
huto
import calendar def huto(ev, honap, felir): honaphossz = calendar.monthrange(ev, honap)[1] return [szam - (honaphossz - nap) for nap, szam in felir]
Házi feladatok megoldása
cegesbuli
import calendar def cegesbuli(ev, honap, nap=1): temak = [ "Hepi Hetfo", "Kellemes Kedd", "Szerelmes Szerda", "Csaloka Csutortok", "Perverz Pentek", "Szomoru Szombat", "Vidam Vasarnap"] return temak[calendar.weekday(ev, honap, nap)]
teki
import math def teki(k, lepeshossz, fi): x, y = 0, 0 szog = 0 for i in range(k): x = x + lepeshossz*math.cos(szog * math.pi / 180) y = y + lepeshossz*math.sin(szog * math.pi / 180) szog += fi return (round(x), round(y))