Informatika2-2016/Gyakorlat10

A MathWikiből
(Változatok közti eltérés)
(Új oldal, tartalma: „=Előadás= [9. Előadás|http://math.bme.hu/~nyida/info2/e09_16i2.html]”)
 
(Ponttáblázat)
 
(egy szerkesztő 20 közbeeső változata nincs mutatva)
1. sor: 1. sor:
 
=Előadás=
 
=Előadás=
[9. Előadás|http://math.bme.hu/~nyida/info2/e09_16i2.html]
+
[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, 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 [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.
 +
* 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.

A lap jelenlegi, 2016. április 21., 09:44-kori változata

Tartalomjegyzék

Előadás

9. 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.

Személyes eszközök