Informatika2-2017/Gyakorlat10

A MathWikiből
(Változatok közti eltérés)
(Ponttáblázat)
(Ponttáblázat)
 
14. sor: 14. sor:
 
* 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. [http://www.football-data.co.uk/notes.txt Itt] találunk segítséget a csv értelmezéséhez.
 
* 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á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!
 
* 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!

A lap jelenlegi, 2017. április 13., 08:30-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. Itt találunk segítséget a csv értelmezéséhez.

  • 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