Informatika2-2016/Gyakorlat10Megold
A MathWikiből
(Változatok közti eltérés)
(→Foci, újból) |
(→Foci, újból) |
||
74. sor: | 74. sor: | ||
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. | ||
+ | <python> | ||
+ | import csv | ||
+ | L=[] | ||
+ | with open('E0.csv', 'rb') as csvfile: | ||
+ | reader = csv.DictReader(csvfile) | ||
+ | for row in reader: | ||
+ | L.append(row) | ||
+ | </python> | ||
* 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! | ||
+ | <python> | ||
+ | import csv | ||
+ | import argparse | ||
+ | parser = argparse.ArgumentParser() | ||
+ | parser.add_argument("-f", "--filename", action="store", type=str) | ||
+ | args = parser.parse_args() | ||
+ | L=[] | ||
+ | with open(args.filename, 'rb') as csvfile: | ||
+ | reader = csv.DictReader(csvfile) | ||
+ | for row in reader: | ||
+ | L.append(row) | ||
+ | </python> | ||
+ | |||
+ | futtatás: | ||
+ | python tables.py -f E0.csv | ||
+ | |||
* 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":{"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 2016. május 16., 13:31-kori változata
Tartalomjegyzék |
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!
import sys filename = sys.argv[1] word = sys.argv[2] with open(filename, "w") as f: f.write(word)
vagy
import sys filename = sys.argv[1] word = sys.argv[2] f = open(filename, "w") f.write(word) f.close()
futtatás:
python write_to_file.py kutya.txt kuty
- 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!
import sys filename = sys.argv[1] with open(filename, "w") as f: f.write(",".join(sys.argv[2:]))
vagy
import sys filename = sys.argv[1] with open(filename, "w") as f: s = "" for word in sys.argv[2:]: s += word + "," f.write(s[:-1])
futtatás:
python write_to_file.py kutya.txt kuty macs sajt
- Legyen egy opcionális --delimiter, vagy röviden -d paraméterünk, amivel az elválasztójelet tudjuk megváltoztatni (vessző helyett tetszőleges).
(Lehet erre volt egyszerûbb megoldás...de nem emlékszem, az is lehet, hogy kihagytuk.)
import argparse parser = argparse.ArgumentParser() parser.add_argument("-f", "--filename", action="store", type=str) parser.add_argument("-w", "--words", action="store", type=str) parser.add_argument("-d", "--delimiter", action="store", type=str, default=',') args = parser.parse_args() with open(args.filename, "w") as f: words = args.words.split() f.write(args.delimiter.join(words))
futtatás:
python write_to_file.py -d . -f kutya.txt -w "kuty macs eger"
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.
import csv L=[] with open('E0.csv', 'rb') as csvfile: reader = csv.DictReader(csvfile) for row in reader: L.append(row)
- Módosítsuk, hogy fájl nevét a --file vagy a -f argumentumon keresztül kérjük el és parancssoron olvassuk be!
import csv import argparse parser = argparse.ArgumentParser() parser.add_argument("-f", "--filename", action="store", type=str) args = parser.parse_args() L=[] with open(args.filename, 'rb') as csvfile: reader = csv.DictReader(csvfile) for row in reader: L.append(row)
futtatás:
python tables.py -f E0.csv
- 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!