Informatika2-2013/Gyakorlat08
176. sor: | 176. sor: | ||
random.randint(1, 6) # a végpontok is kiosztódnak | random.randint(1, 6) # a végpontok is kiosztódnak | ||
</python> | </python> | ||
+ | |||
+ | === Euklideszi alg === | ||
+ | Valosítsd meg az algoritmust egy függvénnyel. Használj segéd fv-t vagy rekurziót ha kell. | ||
+ | [http://hu.wikipedia.org/wiki/Euklideszi_algoritmus Algoritmus leírása] |
A lap jelenlegi, 2013. április 2., 04:53-kori változata
Tartalomjegyzék |
Sage/Python Ismétlés
- Mûveletek mint C-ben, ami itt még pluszban van: ** (hatványozás)
- Függvényeknek nem kell visszatérési értéket adni:
def fv_neve(x, y): return x + y fv_neve(2, 10)
- Több dologra is emlékeztet az elõzõ 2 sor kód:
- Általában nem kell változóknak a típusát megadnunk
- A def kulcsszóval tudunk függvényt definiálni
- Fontos a formázás, itt nincs kapcsos zárójel, a szóközök jelzik, hogy melyik blokkon belül vagyunk (itt a return a def-en belül van, de a függvényhívás már nem)
- Nincs pontosvesszõ, így értelemszerûen a sortörés számít
- függvényhívás mint C-ben.
- Tömbök helyett vannak listáink, melyek hasonlóan mûködnek:
l = [4, 5, 7, 8, 9, 4, 6] b = l[1] + l[0] l[2] = 8 print l[2:5]
- Észrevételek:
- Változókat nem kell deklarálni, mint ahogy C-ben kellett (nem kell int b, ahhoz hogy használhassam b-t)
- Listák szintén 0-tól indexelendõk
- Részlistát lekérhetünk a fenti módon
- print-el tudunk írni a kimenetre (terminálba a mi esetünkben)
- További adatszerkezetek:
s = "The quick brown fox jumps over the lazy dog." # string t = (4, 5) # tuple d = {"alma":6, "korte":8, "banan":24} # dictionary print d["korte"]
- Észrevételek:
- Stringek és tuple-ök megváltoztathatatlanok, tehát nem írhatom, hogy t[0] = 7, vagy s[2] = 'c', de írhatom, hogy s = "Valami mas"
- Dictionary, azaz szótárak nem 0-tól n-ig indexelnek, hanem valamilyen kulcs szerint indexelnek, új elemet könnyû rakni hozzájuk pl: d["eper"] = 34
- Kommenteket a # jellel írhatunk, a sor végéig hatnak, több soros kommentet pl a """Tobbsoros""" módon lehet
- Beépített függvények az adatszerkezeteken:
l = range(5) # [0, 1, 2, 3 ,4] len(l) # 5 d = {"alma":6, "korte":8, "banan":24} d.keys() # ["alma", "korte", "banan"] d.values() # [6, 8, 24] "korte" in d # True
- Észrevételek:
- range függvénnyel megkapjuk az adott hosszú tömb indexeinek a listáját
- len függvény visszaadja a megadott lista hosszát (ilyen ugye C-ben nem volt)
- szótár függvények magukért beszélne
- Vezérlési szerkezetek:
x = 6 y = 43 if y > 21: print "y nagyobb" elif y == 21: print "y egyenlo" else: print "y kisebb" l = [5, 4, 6, 2] for i in l: print i ** 2 # 25 16 36 4 for i in range(len(l)): print l[i] ** 2 # 25 16 36 4 i = 0 while i < 5: print i ** 3 # 0 1 8 27 64
- Észrevételek:
- Nem kellenek zárójelek a feltételek köré
- A vezérlési szerkezet feje után (a blokk kezdete jelzéseként) kettõspont kell
- Van elif
- A for ciklus nem úgy megy mint C-ben, itt egy listán halad végig a ciklusváltozóval
- A range függvény segíthet a listaindexeken való haladáson, így már inkább C szerû for-t kapunk
- A while ciklus mint C-ben
- Vannak dolgok amikre lehet emlékeztek, de nem fog mûködne, mert csak sage-ben volt és nem python-ban, ezekre pár példa:
- 28.factor()
- x = var('x')
- expand, solve, plot, is_prime
Python script futtatása
Interaktív
- Amit kevésbé fogunk használni, de néha hasznos lehet az az interaktív python:
- Terminálba írjátok be, hogy python
- Itt bármilyen parancsot irogathattok, az adott sor eredményét kiírja mindig, vagy print-elhettek is
- exit()-el lehet kilépni
Script file
- Nyissatok egy gedit-et (terminálba: gedit& [az és jel azért kell, hogy tudjunk tovább dolgozni a terminálban])
- Mentsétek el ezt az üres file-t valahova proba.py néven (a kiterjesztés a fontos)
- Terminálban navigáljatok el oda ahova mentettétek (cd mappa, cd ..)
- Írjátok be terminálba hogy python proba.py
- Remélhetõleg semmi nem történt, akkor minden oké
- Most írjátok a file-ba (gedit-ben), hogy print "Hello World"
- Mentsétek el, majd terminálba újra python proba.py
Feladatok
Kiegészítés 1
Egészítsd ki az alábbi kódot, hogy a függvény az adott l lista azon elemeibõl álló listát adja vissza, melyek kisebbek az adott n számnál!
def kisebbek(l, n): l2 = [] for <!>: <!>: l2.append(i) return l2 print kisebbek([1,5,54,7,3,5,75,3,6,3,43], 10)
Lista 1
Csinálj függvényt ami megfordítja a kapott lista elemeit. Ne a reverse függvényt használd!
Példa be és kimenet:
l = range(4) print fordit(l) # [3,2,1,0]
Lista 2
Csinálj függvényt ami két listából csinál egy szótárat. Egyik lista a kucsokat tartalmazza, a másik az értékeket.
Példa be és kimenet:
l = [5, "macska", 8] l2 = [2, [2, 5], "c"] print szotar(l, l2) # {5:2, "macska":[2,5], 8:"c"}
Kiegészítés 2
Egészítsd ki az alábbi kódot, hogy egy olyan kódot kapjunk, mely megfordítja majd kiírja az adott s string-et!
s = "Volt egyszer egy kiskutya, elment a vasarba" s2 = "" for <!>: s2 = i + s2 <!>
String 1
Írasd ki minden második betűjét egy kapott stringnek!
String 2
írasd ki egy string karaktereit úgy, hogy az i. sorban az első i darab betűje van
Random
Dobj n-szer dobókockával és utána írd ki az esetek számát és az átlag értéket.
Használd:
import random random.randint(1, 6) # a végpontok is kiosztódnak
Euklideszi alg
Valosítsd meg az algoritmust egy függvénnyel. Használj segéd fv-t vagy rekurziót ha kell. Algoritmus leírása