Informatika1-2013/Gyakorlat4

A MathWikiből
(Változatok közti eltérés)
142. sor: 142. sor:
  
 
*Írj Sage függvényt (legyen a neve ''ar_szamolo''), amely megkapja a fenti két szótárat (első paramétere legyen az árakat tartalmazó), és kiszámolja, hogy mennyit kell fizetnünk a gyümölcsökért!
 
*Írj Sage függvényt (legyen a neve ''ar_szamolo''), amely megkapja a fenti két szótárat (első paramétere legyen az árakat tartalmazó), és kiszámolja, hogy mennyit kell fizetnünk a gyümölcsökért!
 +
 +
=== Osztók száma ===
 +
 +
Írd át az ismétlésben felírt '''titok''' függvényt (amirõl ugye már tudjuk, hogy kiírja az adott szám osztóit) úgy, hogy ne írjon ki semmit, csak adja vissza, hogy hány osztója van a kapott számnak.
  
 
=== A 3n+1 probléma ===
 
=== A 3n+1 probléma ===

A lap 2013. október 1., 10:49-kori változata

Tartalomjegyzék

Ismétlés az elõzõ gyakról

  • String: 'kutya'
  • Lista: [1, 8, 'ketto', 1, 9]
  • Lista indexek 0-tól kezdõdnek, így az utolsó eleme egy n elemû listának n - 1
  • Listák 3. elemének lekérdezése, feltéve, hogy l a lista: l[2]
  • Listák hosszának lekérdezése: len(l)
  • Új elem hozzáadása: l.append('nyolc')
  • stb.

Ismétlés az elõadásról

3. elõadás

  • Szótár: {'one':1,'two':2}
  • Szótár elemének lekérdezése (d a szótár): d['one']
  • Elágazás:
if feltétel1:
    mûvelet1
elif feltétel2:
    mûvelet2
else:
    mûvelet3
  • Minden aminek igaz-hamis értéke van lehet feltétel. Pl: x > 5, vagy akár x * 6 + 16 == 15 * y + 1
  • For ciklus:
l = [4, 5, 2]
for e in l:
    print e * 2
  • Ennek az eredménye:
8
10
4
  • While ciklus:
i = 1
x = 254
while i <= x:
    if x % i == 0:
        print i
    i = i + 1
  • Ezt találjátok ki mit csinál!
  • Függvény definiálás:
def titok(x):
    i = 1
    while i <= x:
        if x % i == 0:
            print i
        i = i + 1
  • Függvény meghívása:
titok(4752)
  • Függvényeknek akárhány paramétere (bemenete) lehet, akár 0 is.
  • Nagy különbség van a kiírás és érték visszaadás közt:
def fv1(x):
    print x * x + 2 * x - 1
 
def fv2(x):
    return x * x + 2 * x - 1
 
ertek1 = fv1(5)
ertek2 = fv2(5)
  • Az ertek1 értéke None mivel a fv1 nem ad vissza semmilyen értéket, csak kiírja.
  • Az ertek2 értéke 34, mert a fv2 visszaadta azt az értéket (return) és nem kiírta
  • Függvény csak egy értéket tud visszaadni, de akárhányat ki tud írni:
def pelda():
    print 22
    return 5
    print 15
 
x = pelda()
  • A 15 nem lesz kiírva, mert a return 5 paranccsal visszatér a függvény, azaz ezt az értéket visszaadja és értékül adódik az 5 x-nek

Feladatok

Lista ismétlés

  • Készítsétek el a 2, 4, 'tizenot', 4 elemeket tartalmazó listát
  • Kérdezzétek le a méretét
  • Kérdezzétek le a 3. elemét
  • Fûzzétek a lista végére a 'negy' stringet
  • Kérdezzétek most le a 2. elemtõl utolsó elemig tartó részlistát, mentsétek ezt egy másik változóba
  • A részlistának is kérjétek le a méretét

Elágazások

Vezérlési szerkezetek (if, for, while)

  • Egészítsd ki a függvényt, hogy ha az elsõ paraméter kisebb mint a második, akkor azt a karakterláncot adja vissza, hogy "kisebb", ha nagyobb, akkor azt, hogy "nagyobb" és ha egyenlõ akkor "egyenlo"-t!
<!> hasonlit(a, b):
    if a < b:
        <!> "kisebb"
    elif a > b:
        <!> "nagyobb"
    <!>:
        <!> "egyenlo"
  • Definiálj egy Sage függvényt elojel néven, amelynek egy bemenete van (a), és a "pozitiv" karakterláncot (vagyis stringet) írja ki ha a kapott paraméter pozitív, "negativ"-at ad vissza ha a szám negatív, és "nulla"-ta ad ha nulla volt a paraméter értéke.


Listák kezelése

  • Egészítsd ki a kódot, hogy a függvény a kapott lista legkisebb elemét adja vissza:
def minimum(l):
    minelem = <!>
    <!> e in l:
        if e < <!>:
            minelem = e
    <!> e
  • Írj függvényt ami a kapott lista elemeinek a szummáját visszaadja. (Ne használjátok a sum beépített függvényt.)
  • Írj függvényt sokszorozo néven, amely bemenetként kap egy számot (n) és még egy paramétert, a-t (ennek a típusa bármi lehet). A függvény adjon vissza egy listát, amiben n-szer szerepel az a értéke.
    Például: sokszorozo(3, "bla") kimenete ["bla", "bla", "bla"] legyen.
  • Írj Sage függvényt amely megfordít egy bemenetként kapott listát!

Szótárak kezelése

  • Legyen egy gyumolcs_arak nevű szótárunk, a következő kulcs-érték párokkal:
'alma': 150
'szilva': 190
'ananász': 450
'banán': 300
  • És legyen egy másik, vasarlas nevű szótár, amely azt tárolja, miből mennyit vettünk:
'banán': 0.6
'alma': 1.5
'ananász': 2
  • Írj Sage függvényt (legyen a neve ar_szamolo), amely megkapja a fenti két szótárat (első paramétere legyen az árakat tartalmazó), és kiszámolja, hogy mennyit kell fizetnünk a gyümölcsökért!

Osztók száma

Írd át az ismétlésben felírt titok függvényt (amirõl ugye már tudjuk, hogy kiírja az adott szám osztóit) úgy, hogy ne írjon ki semmit, csak adja vissza, hogy hány osztója van a kapott számnak.

A 3n+1 probléma

A híres 3x+1 probléma (Collatz-sejtés) : végy egy számot, ha páratlan, szorozd meg 3-mal és adj hozzá 1-et, ha páros, oszd el 2-vel. Az az állítás, hogy így bármilyen pozitív egész számból indulva előbb-utóbb eljutunk 1-ig.

Írj Sage függvényt, amely x-et kap bemenetként, és sorban kiírja a lépéseket 1-ig!

Személyes eszközök