Informatika2-2015/Gyakorlat04

A MathWikiből
(Változatok közti eltérés)
(Új oldal, tartalma: „= 4. gyakorlat - opcionális paraméter és könyvtárak = Ezen a gyakorlaton az [[Informatika2-2015/Eloadas 3 Python-3 Opcionalis parameter Dokumentacio|előző heti …”)
 
 
7. sor: 7. sor:
 
Feladatok a CloudCoder-en megtalálhatóak. Ajánlott sorrend:
 
Feladatok a CloudCoder-en megtalálhatóak. Ajánlott sorrend:
 
# buli
 
# buli
# polarbol_sim
+
# polarbol_sima
 
# matrixlog
 
# matrixlog
 
# huto
 
# huto
 +
 +
== Feladatok megoldása ==
 +
 +
=== buli ===
 +
 +
Megoldás listaértelmezés nélkül:
 +
 +
<python>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</python>
 +
 +
Megoldás listaértelmezéssel:
 +
 +
<python>import calendar
 +
 +
def buli(napok, honap, ev=2015):
 +
    return [calendar.weekday(ev, honap, nap) > 4 for nap in napok]</python>
 +
 +
=== polarbol_sima ===
 +
 +
Megoldás listaértelmezéssel:
 +
 +
<python>import math
 +
 +
def polarbol_sima(polarok):
 +
    return [(round(hossz*math.cos(szog)), round(hossz*math.sin(szog))) for hossz, szog in polarok]</python>
 +
 +
=== matrixlog ===
 +
 +
Egy olyan megoldás ami nem módosítja a paraméterként kapott ''mutable'' listákat:
 +
 +
<python>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</python>
 +
 +
=== huto ===
 +
 +
<python>import calendar
 +
 +
def huto(ev, honap, felir):
 +
    honaphossz = calendar.monthrange(ev, honap)[1]
 +
 +
    return [szam - (honaphossz - nap) for nap, szam in felir]</python>
 +
 +
== Házi feladatok megoldása ==
 +
 +
=== cegesbuli ===
 +
 +
<python>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)]</python>
 +
 +
=== teki ===
 +
 +
<python>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))</python>

A lap jelenlegi, 2015. március 19., 14:13-kori változata

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