Informatika2-2016/Gyakorlat10

A MathWikiből
(Változatok közti eltérés)
(Ponttáblázat)
(Ponttáblázat)
 
(egy szerkesztő 6 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 nagyon. 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 sctipr.py módon tudjuk futtatni
+
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!
23. sor: 23. sor:
 
** Használjuk a '''sorted''' függvényt és lambda kifejezéseket, természetesen segítünk.
 
** 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!
 
** 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