A Python (mint minden más programnyelv) szigorú nyelvtani szabályokkal bír, ezt szintaxisnak hívjuk. Ha a program szintaktikailag hibás, akkor az nem futhat le, mert a számítógép által nem értelmezhető.
"Case sensitive"
A Python érzékeny a kis- és nagybetűkre, ezért mindig oda kell figyelni, hogy mit milyen betűvel kell írni.
Kódsorok
A Pythonban minden utasítás külön sorba kerül. Az utasítások végére nem kell pontosvessző, mert a sortörés egyértelműen megmutatja, hol van vége az utasításnak. Emiatt viszont nem lehetséges több utasítást egy sorba tenni, de ez inkább csak elősegíti a kód olvashatóságát.
Olvashatóság
A kódot olvashatóan kell írni, hiszen alapvető tapasztalat, hogy míg a programot csak egyszer gépeled be, sokkal többször olvasod/olvassák. A javítótanár is könnyebben dolgozik, te is könnyebben tudod javítani a hibáidat és a közös projektmunkákhoz is nélkülözhetetlen.
Egyszerű adatok kiírása
Az első fejezetben már megismerkedhettél a print fügvénnyel, ebben a fejezetben viszont kivesézzük minden funkcióját. A print függvény kiírja azt, amit megkap paraméternek és új sort kezd. A paraméter bármi lehet, ahogy azt az alábbi példa mutatja:
# szövegek (sztringek)
print("Hello World!")
print("árvíztűrő tükörfúrógép") # ékezetekkel
# számok
print(36)
print(6.9742) # törtek
print(6e23) # normál alakban
Amennyiben több paramétert adunk meg a print függvénynek, akkor az összeset kiírja egymás után, szóközzel elválasztva. A paraméterek típusa egymástól független, bármi lehet. A kiírás végére ebben ez esetben is kerül sortörés.
print("A nevem", "Kovács", "Béla")
print("életkorom:",33,"testmagasságom:", 183.7, "cm")
A változók olyan szimbólumok, amelyekkel egy konkrét adatra utalsz. Rendelkezik egy névvel (amivel hivatkozni tudsz rá) és egy értékkel. Így a változók mint adattárolásra alkalmas eszközök állnak rendelkezésedre. A program futása közben értékük megváltozhat.
Változók létrehozása, értékadása
Sok programozási nyelvvel ellentétben nem kell a változókat használat előtt deklarálni, egyszerűen csak egy értékadással hozhatod létre őket. Az értékadás az = (egyenlőségjel) operátorral történik.
valtozonev = "ertek"
a = 5
b = 3
# Több értékadás egy sorban vesszők segítségével.
# A sorrend számít!
alfa, beta, gamma = 90, 6.8721, "árvíztűrő tükörfúrógép"
A változók elnevezése
A változóknak bármilyen nevet adhatsz (leszámítva a Python saját kulcsszavait), akár még ékezeteset is! A jobb átláthatóság miatt viszont érdemes néhány formai szabályt betartani:
NE tartalmazzon ékezetes karaktereket
legyen kisbetűs
utaljon a változó funkciójára
legyen tömör, de érthető
A változók használata
Egy változó használata mindig legyen indokolt és logikus. Egy változónak csak egy funkciója legyen, máskülönben zavaros lesz tőle a program. Változók mennyiségére nincsen korlát, ezért nyugodtan használj változót ott, ahol az szükséges.
Változók kiértékelése, kiírása
A változók értékét úgy "olvashatod ki", hogy egyszerűen a változónevet írod le. Például a Print függvény paraméterének megadod egy változó nevét.
kor, nev = 55, "Árpád"
print(nev, kor, "éves.") # a változóneveknél nincs idézőjel!!!
A Python gyenge típusossága
A változók bármilyen típusú adatot tárolhatnak. Ezenfelül gond nélkül kaphat már létező változó más típusú értéket, mint amit eddig tartalmazott. Ezt a tulajdonságát gyenge típusosságnak nevezzük.
szam = 8 # itt számértéket kapott
print("A szám:", szam)
szam = "nyolc" # itt sztring értéket kapott
print("Betűvel leírva:", szam)
A Pythonban a számokat különböző módokon lehet leírni. Ezeket a számokat kiírathatjuk a print függvény segítségével, műveleteket végezhetünk velük illetve változókba írhatjuk őket.
Egész számok
#ugyanúgy mint papíron
4312
0
#negatív számok is ugyanígy
-2
-5234
Tizedes törtek
#a tizedes vessző helyett szigorúan PONT
3.141592
0.0000001
-8.5
-0.25
Normál alak
Lehetőség van a számokat normálalakban leírni. Ennek formája az, hogy először a mantissza következik (a számjegyek), utána az e betű, majd a karakterisztika (a nagyságrend).
6e23 #hatszor tíz a huszonharmadikon
6E23 #nagy E betű is helyes
-6e-23 #a mantissza és a karakterisztika is lehet negatív szám
6.67e-11 # a mantissza természetesen tört is lehet
Műveletek számokkal
Alapműveletek
Ahogyan már említettem, ugyanolyan matematikai műveletek elvégezhetőek Pythonban, amiket egy számológépnek is tudnia kell.
5 + 3 #összeadás
6.9 - 23 #kivonás
624.12 * -8 #szorzás
9 / 2 #osztás
2 ** 4 #hatványozás
#a műveleti jelek egybeírhatók a számokkal, csak az olvashatóság miatt van külön
Maradékos osztás
Sok programnyelvben ha két egész számot osztunk el, az eredmény tizedes jegyei le lesznek vágva. Ez a Python 2-es verziójában is így volt, viszont mi a 3-masat használjuk, amiben nem kell erre külön figyelni. Van mód viszont a maradékos osztásra is.
7 / 2 #osztás, értéke: 3.5
7 // 2 #maradékos osztás hányadosa, értéke: 3
7 % 2 #maradékos osztás maradéka, értéke: 1
Műveleti sorrend, zárójelek
A műveleti sorrend megegyezik a matematika szabályaival, ezen felül ugyanúgy használhatunk zárójeleket is.
Műveletek változókkal
Ha egy változó értéke egy szám, ugyanúgy bánhatunk vele, mint egy számmal. A műveletek eredményeit pedig betölthetjük a változókba, vagy kiírathatjuk őket. Nézzünk meg néhány példát.
print(6+5*2) #kiírja: 16
a,b = 9,-3
print(a/b) #kiírja: -3
c = a+b+0.0123
print(c) #kiírja: 6.0123
Feltételes elágazás
A feltételes elágazásban egy feltétel igaz vagy hamis volta határozza meg, hogy a benne lévő kódrészlet lefusson.
if
s = 4
if(s == 4):
print("s változó értéke négy")
print("ez nem sok, de pont ennyi kell")
print(":)")
A kódot végrehajtva látható, hogy megtörténik a két kiírás, azonban ha s értékét megváltoztatjuk, már csak a második megy végbe. Általánosítsuk ezt az alakot:
if(feltétel):
#igaz ág
#...
#ez a rész már a feltételen kívül van
Ha a feltétel igaz, akkor az igaz ág utasításai végre lesznek hajtva. Az igaz ág addig tart, amíg beljebb vannak tagolva a kódsorok. A beljebbtagolás lehet szóközzel vagy tabulátorral, de több sor esetén mindig ugyanúgy legyenek a sorok tagolva! Figyeljünk a kettőspontra is!
Mindig tagoljunk 4 szóközzel, ugyanis ennyi pont átláthatóvá teszi a kódot, a tabulátor szélessége pedig máshol más lehet. Az IDLE szerkesztő a TAB lenyomására szóközöket ír, így nem kell a space-t nyomkodni.
else
Opcionálisan megadhatunk egy hamis ágat is - ez akkor fut le, ha a feltétel hamis. Általános alakja:
if(feltétel):
#igaz ág
#...
else:
#hamis ág
#...
elif
Ha a hamis ágban újabb feltételt szeretnénk, akkor az elif kulcsszó teszi ezt lehetővé.
if(feltétel):
#igaz ág
#...
elif(feltétel):
#első feltétel hamis, második igaz
#...
Az if után bármennyi elif következhet, és a végén egy else is:
if(feltétel):
#igaz ág
#...
elif(feltétel):
#első feltétel hamis, második igaz
#...
elif(feltétel):
#első két feltétel hamis, harmadik igaz
#...
else:
#egyik feltétel sem igaz
#...
A bool típus
A fenti pédában lehetett látni a == jelet. Ez jelenti az egyenlőség letesztelését - de valójában ez is egy olyan művelet, mint az összeadás vagy bármely eddigi: el lehet végezni, van eredménye is. Egy összehasonlítás eredménye vagy igaz, vagy hamis. A Pythonban van erre is egy típus, a bool. Két értéke van:
True #igaz
False #hamis
if(True):
#mindig lefut, mert mindig igaz
if(False):
#sosem fut le, mert mindig hamis
Összehasonlító műveletek
Az összehasonlító műveletek kapnak két értéket, és egy bool értéket vesznek fel (igaz vagy hamis) az adott összehasonlításnak megfelelően. Nézzük sorra őket:
a == b #egynelő
a != b #nem egyenlő
a < b #kisebb
a <= b #kisebb vagy egyenlő
a > b #nagyobb
a >= b #nagyobb vagy egyenlő
Logikai műveletek
Összetett logikai kifejezéshez kell logikai műveleteket használni, melyek a boole-algebra műveletei. Ezek az alábbiak:
a and b #igaz, ha a és b is igaz
a or b #igaz, ha a vagy b (akár mindkettő) igaz
not a #igaz, ha a hamis
Ezeket a műveleteket zárójelezni is lehet.
A while ciklus
Ha egy kódrészletet többször kell egymás után végrehajtani, akkor ciklus használata szükséges. A while ciklus hasonló a feltételhez, viszont az igaz ág után újrakezdődik a ciklus.
while(feltétel):
#ciklusmag
#...
A ciklusmag mindaddig végrehajtódik, amíg a feltétel igaz. Minden végrehajtás után újra ellenőrzésre kerül a feltétel.
Példák feltételekre és ciklusokra
#a zárójel nem kötelező, de szebb ha van
a = 9
if a==9:
print("a értéke 9")
# számolj el tízig!
x = 1
while(x <= 10):
print(x)
x += 1
#az öttel nem osztható számok 100-ig
#a feltételek és ciklusok egymásba ágyazhatóak
a = 1
while(a <= 100):
if(a%5 != 0): #öttel nem osztható == öttel való osztási maradéka nem nulla
print(a)
a += 1
Nehéz feladat
Írj egy programot, ami 1-től 51-ig kiírja a számokat, a következő szabálynak megfelelően:
ha a szám osztható 3-mal, akkor a szám helyett az legyen kiírva, hogy fizz
ha a szám osztható 5-tel, akkor a szám helyett az legyen kiírva, hogy buzz
ha a szám 3-mal és 5-tel is osztható, akkor a szám helyett az legyen kiírva, hogy fizzbuzz
(alapesetben csak maga a szám legyen kiírva)
Megoldás
for fizzbuzz in range(51):
if fizzbuzz % 3 == 0 and fizzbuzz % 5 == 0:
print("fizzbuzz") ; continue
elif fizzbuzz % 3 == 0:
print("fizz") ;continue
elif fizzbuzz % 5 == 0:
print("buzz") ;continue
print(fizzbuzz)
Algoritmus
Struktogram
Folyamatábra
Ugyan ez C-Sharpban
#include <stdio.h>
int main(void) {
for (int szam = 1; szam <= 20; szam = szam+1)
if (szam % 3 == 0 && szam % 5 == 0)
printf("fizzbuzz\n");
else
if (szam % 3 == 0)
printf("fizz\n");
else
if (szam % 5 == 0)
printf("buzz\n");
else
printf("%d\n", szam);
return 0;
}
https://infoc.eet.bme.hu/ea03/#3