Informatika1-2013/Gyakorlat4

A MathWikiből
(Változatok közti eltérés)
108. sor: 108. sor:
  
 
* 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.
 
* 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:
 +
<python>
 +
def minimum(l):
 +
    minelem = <!>
 +
    <!> e in l:
 +
        if e < <!>:
 +
            minelem = e
 +
    <!> e
 +
</python>
 +
 +
* Í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. <br/>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:<br/>
 +
: 'alma': 150<br/>
 +
: 'szilva': 190<br/>
 +
: 'ananász': 450<br/>
 +
: 'banán': 300<br/>
 +
 +
* És legyen egy másik, ''vasarlas'' nevű szótár, amely azt tárolja, miből mennyit vettünk:<br/>
 +
: 'banán': 0.6<br/>
 +
: 'alma': 1.5<br/>
 +
: 'ananász': 2<br/>
 +
 +
*Í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!
 +
 +
=== A 3n+1 probléma ===
 +
 +
A híres 3x+1 probléma ([http://mathworld.wolfram.com/CollatzProblem.html 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!

A lap 2013. október 1., 10:47-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!

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