Informatika1-2011/Gyakorlat6
Ador (vitalap | szerkesztései) (→Linux parancsok) |
Ador (vitalap | szerkesztései) a (→Első Python script írása) |
||
(egy szerkesztő 11 közbeeső változata nincs mutatva) | |||
1. sor: | 1. sor: | ||
=== Linux parancsok === | === Linux parancsok === | ||
− | # Hozz létre egy könyvtárat "gy6" néven (ebben fogunk végig dolgozni) | + | # Hozz létre egy könyvtárat "gy6" néven (ebben fogunk végig dolgozni) (''mkdir <könyvtárnév>'') |
− | # Lépj be az új könyvtárba! | + | # Lépj be az új könyvtárba! (''cd <könyvtárnév>'') |
− | # Próbáld ki az ''echo'' parancsot ( | + | # Próbáld ki az ''echo'' parancsot (''echo "alma"'') |
# Irányítsd át egy "elso.txt" nevű file-ba az ''echo'' kimenetét, hogy ne a képernyőre írjon hanem a megadott file-ba (a ''>'' jelet kell használni, utána a file nevét) | # Irányítsd át egy "elso.txt" nevű file-ba az ''echo'' kimenetét, hogy ne a képernyőre írjon hanem a megadott file-ba (a ''>'' jelet kell használni, utána a file nevét) | ||
# Nézd meg az "elso.txt" tartalmát a ''less'' paranccsal (q billentyűvel lehet kilépni a less-ből) | # Nézd meg az "elso.txt" tartalmát a ''less'' paranccsal (q billentyűvel lehet kilépni a less-ből) | ||
− | # Futtasd le újra az előző parancsot, majd újra nézd meg az "elso.txt" tartalmát! | + | # Futtasd le újra az előző előtti (átirányítós) parancsot, majd újra nézd meg az "elso.txt" tartalmát! |
# Futtasd le újra az előző parancsot, de ">" helyett ">>"-t írj, majd újra nézd meg az "elso.txt" tartalmát! | # Futtasd le újra az előző parancsot, de ">" helyett ">>"-t írj, majd újra nézd meg az "elso.txt" tartalmát! | ||
− | # Mi lehet a különbség a ">" és a ">>" között? | + | # Mi lehet a különbség a ">" és a ">>" között? (próbálkozz az előzőekkel néhányszor, mindig megnézve a fájlt amibe írsz, amíg rá nem jössz) |
# Írasd ki az "elso.txt" tartalmát a képernyőre a ''cat'' paranccsal! | # Írasd ki az "elso.txt" tartalmát a képernyőre a ''cat'' paranccsal! | ||
# Nézd meg az "elso.txt" jogosultságait! (''ls -l'') | # Nézd meg az "elso.txt" jogosultságait! (''ls -l'') | ||
+ | # Változtasd meg az "elso.txt" jogosultságait a ''chmod'' paranccsal! (például ''chmod a+x'' vagy ''chmod o-r'') | ||
− | === | + | === Shell script írás === |
− | # Nyisd meg a ''gedit'' szövegszerkesztőt! | + | # Nyisd meg a ''gedit'' szövegszerkesztőt! (Applications -> Accessories -> Text editor) |
# Írj az új fájlba egy echo-parancsot, majd mentsd el "masodik.sh" néven a "gy6" könyvtáradba! | # Írj az új fájlba egy echo-parancsot, majd mentsd el "masodik.sh" néven a "gy6" könyvtáradba! | ||
# A konzolban listázd ki a "gy6" tartalmát részletesen! | # A konzolban listázd ki a "gy6" tartalmát részletesen! | ||
36. sor: | 37. sor: | ||
* Mentsd el, és adj rá futtatási jogot csak magadnak! | * Mentsd el, és adj rá futtatási jogot csak magadnak! | ||
* Futtasd így: ''./kerdez.py'' | * Futtasd így: ''./kerdez.py'' | ||
− | |||
=== Számkitatálós játék === | === Számkitatálós játék === | ||
Írj egy python scriptet, amivel számkitalálósat lehet játszani. | Írj egy python scriptet, amivel számkitalálósat lehet játszani. | ||
− | A script " | + | A script "gondoljon" egy számra 1 és 10 között (a szám generálásához használd a "random" modult, lásd lentebb), és a felhasználó által beírt tippeknek megfelelően ("kisebbet / nagyobbat mondjon") segít kitalálni a számot, de ha 4. kör után sem találta ki a játékos, akkor kiírja hogy "Veszettél", és véget ér a futás. Ha a játékos nyert, vagyis eltalálta a számot akkor azt is írjuk ki hogy hányadik körben sikerült kitalálnia, és szintén érjen véget a futás. |
+ | |||
+ | ==== Segítség a véletlen számok generálásához ==== | ||
+ | |||
+ | A véletlen számok generálásához a "random" nevű python modult fogjuk használni.á | ||
+ | Egy python modult az ''import'' kulcsszóval importálhatsz, ezután használhatod majd az importált modul függvényeit. Általában a script elejére (de a script-futtató parancs és kódolás megadása után) írjuk az ''import'' utasításokat. Tehát a scripted így fog kezdődni: | ||
+ | <python> | ||
+ | #!/usr/bin/python | ||
+ | #coding=UTF-8 | ||
+ | |||
+ | import random | ||
+ | |||
+ | </python> | ||
+ | A random modulból [http://docs.python.org/library/random.html] pedig most csak arra a függvényre lesz szükségünk, ami egész számokat tud sorsolni egy megadott intervallumból. A mi esetünkben 1 és 10 közötti számot akarunk, tehát a kód: | ||
+ | <python> | ||
+ | szam = random.randint(1, 10) | ||
+ | </python> | ||
+ | A kódrészletben látszik, hogy egy - már importált - modul egy függvényére úgy hivatkozhatunk, hogy megadjuk a modul nevét, majd egy pontot írunk, és utána a függvényt. (A negyedik gyakorlaton a gráfok létrehozásánál is láttunk már ilyet, csak ott nem kellett importálni mert a Sage már induláskor importál egy csomó modult.) | ||
+ | |||
+ | === File kezelés Pythonban === | ||
+ | |||
+ | * Írj egy python scriptet "sorszamozo.py" néven, ami beolvas egy fájlt és kiírja annak a sorait 1-től kezdve sorszámozva egy másik fájlba! | ||
+ | |||
+ | ==== Segítség a file íráshoz és olvasáshoz ==== | ||
+ | Ahhoz hogy fájlokhoz hozzáférhessünk a python kódon belül, először meg kell nyitni a fájlt. Háromféleképpen lehet megnyitni egy fájlt: | ||
+ | * olvasásra ('r') | ||
+ | * írásra ('w') (ha volt ilyen fájl akkor felülírja a tartalmát, vagyis törli ami eddig volt benne!) | ||
+ | * hozzáfűzésre ('a') (ekkor a fájl végére lehet csak írni) | ||
+ | |||
+ | Például, ha az "elso.txt"-t szeretném olvasni, akkor így nyitom meg: | ||
+ | <python> | ||
+ | f = open('elso.txt', 'r') | ||
+ | </python> | ||
+ | Innentől kezdve az ''f'' nevű fájl-objektumot használhatjuk a soronkénti beolvasásra. Itt például a fájl első sorát beolvassuk egy "line" nevű változóba, ami egy string lesz: | ||
+ | <python> | ||
+ | line = f.readline() | ||
+ | </python> | ||
+ | Többször egymás után meghívva az ''f''-nek a ''readline()'' függvényét, az mindig a következő sort fogja visszaadni. | ||
+ | |||
+ | A ''for'' ciklust is használhatjuk arra hogy soronként végigolvassunk egy fájlt: | ||
+ | <python> | ||
+ | for line in f: | ||
+ | print line | ||
+ | </python> | ||
+ | |||
+ | A fájlba írás pedig így néz ki (persze itt is meg kell előtte nyitni a fájlt, figyeljünk a "w" paraméterre): | ||
+ | |||
+ | <python> | ||
+ | f_out = open('kimenet.txt', 'w') | ||
+ | f_out.write('Egy egy sor\n') # a "\n" jelenti az újsor karaktert | ||
+ | </python> | ||
+ | |||
+ | Fáljok olvasásakor és írásakor a python kódban néhány karaktert speciális módon kell beírni. Pl a tab karakter jele "\t", és az új sor jele (ami általában az enter billentyű leütésekor kerül a szövegbe) pedig "\n". | ||
+ | |||
+ | |||
+ | (Több infó itt a 7.2-es résznél: http://docs.python.org/tutorial/inputoutput.html) |
A lap jelenlegi, 2011. október 18., 10:34-kori változata
Tartalomjegyzék |
Linux parancsok
- Hozz létre egy könyvtárat "gy6" néven (ebben fogunk végig dolgozni) (mkdir <könyvtárnév>)
- Lépj be az új könyvtárba! (cd <könyvtárnév>)
- Próbáld ki az echo parancsot (echo "alma")
- Irányítsd át egy "elso.txt" nevű file-ba az echo kimenetét, hogy ne a képernyőre írjon hanem a megadott file-ba (a > jelet kell használni, utána a file nevét)
- Nézd meg az "elso.txt" tartalmát a less paranccsal (q billentyűvel lehet kilépni a less-ből)
- Futtasd le újra az előző előtti (átirányítós) parancsot, majd újra nézd meg az "elso.txt" tartalmát!
- Futtasd le újra az előző parancsot, de ">" helyett ">>"-t írj, majd újra nézd meg az "elso.txt" tartalmát!
- Mi lehet a különbség a ">" és a ">>" között? (próbálkozz az előzőekkel néhányszor, mindig megnézve a fájlt amibe írsz, amíg rá nem jössz)
- Írasd ki az "elso.txt" tartalmát a képernyőre a cat paranccsal!
- Nézd meg az "elso.txt" jogosultságait! (ls -l)
- Változtasd meg az "elso.txt" jogosultságait a chmod paranccsal! (például chmod a+x vagy chmod o-r)
Shell script írás
- Nyisd meg a gedit szövegszerkesztőt! (Applications -> Accessories -> Text editor)
- Írj az új fájlba egy echo-parancsot, majd mentsd el "masodik.sh" néven a "gy6" könyvtáradba!
- A konzolban listázd ki a "gy6" tartalmát részletesen!
- Adj mindenkinek futtatási jogot a "masodik.sh" fájlodra (chmod a+x <filenév>)
- Futtasd le a scriptedet! (a "gy6" könyvtárban állva ./masodik.sh , máshonnan meg kell adni az útvonalat is)
Első Python script írása
- Nyiss egy új file-t a gedit-ben, mentsd el "kerdez.py" néven a "gy6" könyvtáradba!
- Írd bele a következő python kódot (ne használj ékezeteket):
s = input("Mondj egy szamot:") print "Ennel eggyel kisebbet mondtal: ", str(s+1)
- Mentsd el, és futtasd a scriptedet! (python kerdez.py)
- Most kicsit kiegészítjük a scriptet, hogy tartalmazhasson ékezetes betűket, és hogy kényelmesebben futtatható legyen (a python parancs begépelése nélkül is):
#!/usr/bin/python #coding=UTF-8 s = input("Mondj egy számot:") print "Ennél eggyel kisebbet mondtál: ", str(s+1)
- Mentsd el, és adj rá futtatási jogot csak magadnak!
- Futtasd így: ./kerdez.py
Számkitatálós játék
Írj egy python scriptet, amivel számkitalálósat lehet játszani. A script "gondoljon" egy számra 1 és 10 között (a szám generálásához használd a "random" modult, lásd lentebb), és a felhasználó által beírt tippeknek megfelelően ("kisebbet / nagyobbat mondjon") segít kitalálni a számot, de ha 4. kör után sem találta ki a játékos, akkor kiírja hogy "Veszettél", és véget ér a futás. Ha a játékos nyert, vagyis eltalálta a számot akkor azt is írjuk ki hogy hányadik körben sikerült kitalálnia, és szintén érjen véget a futás.
Segítség a véletlen számok generálásához
A véletlen számok generálásához a "random" nevű python modult fogjuk használni.á Egy python modult az import kulcsszóval importálhatsz, ezután használhatod majd az importált modul függvényeit. Általában a script elejére (de a script-futtató parancs és kódolás megadása után) írjuk az import utasításokat. Tehát a scripted így fog kezdődni:
#!/usr/bin/python #coding=UTF-8 import random
A random modulból [1] pedig most csak arra a függvényre lesz szükségünk, ami egész számokat tud sorsolni egy megadott intervallumból. A mi esetünkben 1 és 10 közötti számot akarunk, tehát a kód:
szam = random.randint(1, 10)
A kódrészletben látszik, hogy egy - már importált - modul egy függvényére úgy hivatkozhatunk, hogy megadjuk a modul nevét, majd egy pontot írunk, és utána a függvényt. (A negyedik gyakorlaton a gráfok létrehozásánál is láttunk már ilyet, csak ott nem kellett importálni mert a Sage már induláskor importál egy csomó modult.)
File kezelés Pythonban
- Írj egy python scriptet "sorszamozo.py" néven, ami beolvas egy fájlt és kiírja annak a sorait 1-től kezdve sorszámozva egy másik fájlba!
Segítség a file íráshoz és olvasáshoz
Ahhoz hogy fájlokhoz hozzáférhessünk a python kódon belül, először meg kell nyitni a fájlt. Háromféleképpen lehet megnyitni egy fájlt:
- olvasásra ('r')
- írásra ('w') (ha volt ilyen fájl akkor felülírja a tartalmát, vagyis törli ami eddig volt benne!)
- hozzáfűzésre ('a') (ekkor a fájl végére lehet csak írni)
Például, ha az "elso.txt"-t szeretném olvasni, akkor így nyitom meg:
f = open('elso.txt', 'r')
Innentől kezdve az f nevű fájl-objektumot használhatjuk a soronkénti beolvasásra. Itt például a fájl első sorát beolvassuk egy "line" nevű változóba, ami egy string lesz:
line = f.readline()
Többször egymás után meghívva az f-nek a readline() függvényét, az mindig a következő sort fogja visszaadni.
A for ciklust is használhatjuk arra hogy soronként végigolvassunk egy fájlt:
for line in f: print line
A fájlba írás pedig így néz ki (persze itt is meg kell előtte nyitni a fájlt, figyeljünk a "w" paraméterre):
f_out = open('kimenet.txt', 'w') f_out.write('Egy egy sor\n') # a "\n" jelenti az újsor karaktert
Fáljok olvasásakor és írásakor a python kódban néhány karaktert speciális módon kell beírni. Pl a tab karakter jele "\t", és az új sor jele (ami általában az enter billentyű leütésekor kerül a szövegbe) pedig "\n".
(Több infó itt a 7.2-es résznél: http://docs.python.org/tutorial/inputoutput.html)