Informatika2-2015/Gyakorlat04

A MathWikiből
A lap korábbi változatát látod, amilyen Csirke (vitalap | szerkesztései) 2015. március 19., 14:13-kor történt szerkesztése után volt.
(eltér) ←Régebbi változat | Aktuális változat (eltér) | Újabb változat→ (eltér)

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:

  1. buli
  2. polarbol_sima
  3. matrixlog
  4. 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))
Személyes eszközök