Informatika2-2016/Gyakorlat10
(→Ponttáblázat) |
(→Ponttáblázat) |
||
(egy szerkesztő 9 közbeeső változata nincs mutatva) | |||
2. sor: | 2. sor: | ||
[http://math.bme.hu/~nyida/info2/e09_16i2.html 9. Előadás] | [http://math.bme.hu/~nyida/info2/e09_16i2.html 9. Előadás] | ||
=Feladatok= | =Feladatok= | ||
− | Ma is a Spyderben fogunk dolgozni. Viszont megtanuljuk, hogyan kell programozni, mint a | + | 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ő== | ==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! | * Í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! | ||
11. sor: | 11. sor: | ||
===Ponttáblázat=== | ===Ponttáblázat=== | ||
Töltsük le a [http://www.math.bme.hu/~nyida/info2/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é!''' | Töltsük le a [http://www.math.bme.hu/~nyida/info2/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! | ||
* Tároljuk el egy listában a csapatok neveit, minden csapatét egyszer! | * 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. | 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":{" | + | * 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 {" | + | * 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. |
A lap jelenlegi, 2016. április 21., 10:44-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.