Informatika2-2017/Gyakorlat10
(Új oldal, tartalma: „=Előadás= [http://math.bme.hu/~nyida/info2/e09_16i2.html 9. Előadás] =Feladatok= Ma is a Spyderben fogunk dolgozni. Viszont megtanuljuk, hogyan kell programozni, mi…”) |
(→Ponttáblázat) |
||
10. sor: | 10. sor: | ||
==Foci, újból== | ==Foci, újból== | ||
===Ponttáblázat=== | ===Ponttáblázat=== | ||
− | Töltsük le a [http://www. | + | Töltsük le a [http://www.football-data.co.uk/mmz4281/1617/E0.csv data] fájlunkat - Ez ugyanaz, amiből alőadáson dolgoztunk. Nyissunk meg egy új fájlt, legyen a neve '''tables.py''' és '''mentsük el az E0.csv mellé!''' |
* Olvassuk be a tartalmát a '''csv.DictReader'''-rel szótárakba! Ez könnyű, volt előadáson. | * Olvassuk be a tartalmát a '''csv.DictReader'''-rel szótárakba! Ez könnyű, volt előadáson. | ||
* Módosítsuk, hogy fájl nevét a --file vagy a -f argumentumon keresztül kérjük el és parancssoron olvassuk be! | * Módosítsuk, hogy fájl nevét a --file vagy a -f argumentumon keresztül kérjük el és parancssoron olvassuk be! |
A lap 2017. április 13., 08:26-kori változata
Tartalomjegyzék |
Előadás
Feladatok
Ma is a Spyderben fogunk dolgozni. Viszont megtanuljuk, hogyan kell programozni, mint a nagyok. Ehhez szükség lesz a Konsole-ra is. Ha kész egy fáljunk, mentsük el, keressük ki a helyét a Konsole-ban, majd a python script.py módon tudjuk futtatni.
Bevezető
- Írjunk egy write_to_file.py nevű scriptet, ami két poziciónális paramétert kap: az első a fájl neve, a másik pedig a szó, amit tároljon el a fájlban! Figyeljünk arra, hogy az első paraméter mindig a script neve!
- Módosítsuk úgy, hogy tetszőlegesen sok szót meg tudjunk adni a fájl után, ezeket továbbra is írja a fájlba, vesszővel elválasztva!
- Legyen egy opcionális --delimiter, vagy röviden -d paraméterünk, amivel az elválasztójelet tudjuk megváltoztatni (vessző helyett tetszőleges).
Foci, újból
Ponttáblázat
Töltsük le a data fájlunkat - Ez ugyanaz, amiből alőadáson dolgoztunk. Nyissunk meg egy új fájlt, legyen a neve tables.py és mentsük el az E0.csv mellé!
- Olvassuk be a tartalmát a csv.DictReader-rel szótárakba! Ez könnyű, volt előadáson.
- Módosítsuk, hogy fájl nevét a --file vagy a -f argumentumon keresztül kérjük el és parancssoron olvassuk be!
- Tároljuk el egy listában a csapatok neveit, minden csapatét egyszer!
Most ki fogjuk számolni az idény ponttáblázatát, persze lépésenként haladunk.
- Számoljuk ki, hogy hány gólt lőtt és hány gólt kapott egy adott csapat eddig. Az eredményt tároljuk el {"csapat":{"Goals Scored":lőtt, "Goals Conceded":kapott}} formában, azaz szótárak szótáraként!
- Számítsuk ki, hogy hány pontot szerzett egy csapat (győzelem 3, döntetlen 1, vereség 0 pont). Bővítsük az eddigi adatainkat egy {"Points":pont} rekorddal!
- Tároljuk el, hogy hány meccset játszott, hányat, nyert, hányat vesztett egy csapat és mennyi döntetlent játszott ({"Lose":l, "Draw":d, "Win":w}) bővítés!
- Számítsük ki a csapatok gólkülönbségeit! {"Goal Difference":diff} bővítés!
Most pedig elkészítjük a teljes táblázatot.
- Rendezzük sorba a csapatokat, aszerint, hogy hány pontot szereztek!
- Használjuk a sorted függvényt és lambda kifejezéseket, természetesen segítünk.
- Ha két csapat azonos pontszámmal áll, döntsön a gólkülönbség!
- Legyen egy opcionális parancssori argumentum, amivel módosítani tudjuk az előbbit. -t vagy --tiebreaker, értékei pedig a Win vagy a Goals legyenek. Előbbi esetében a döntetleneknél a több győzelem, második esetben a több lőtt gól számítson!
- Írjuk ki egy csv fájlba a rendezett táblázatot.
Bónusz feladat: döntetlen esetén döntsön az egymás elleni eredmény. Ha két mérkőzést játszottak, akkor az egymás elleni gólkülönbség. Hármas vagy nagyobb létszámú holtverseny esetén készítsük el a holtversenyben lévő csapatok saját tabelláját (csak azok a mérkőzések, ahol mindkét csapat a holtversenyben lévők közül való) és döntsön az azon elfoglalt helyezés.