Tartalom: String II. (replace, find, count, lower, stb), feltételek (if, elif, else), boolean logika
Eddig nem esett róla szó, de a Python változóknak, konstansokak stb. is vannak elnevezési irányelvei. Erről részletesen a PEP 8 - Style Guide for Python Code
-ban lehet olvasni. A fontosabbak a következők:
Típus | Jelölés |
---|---|
konstansok | IN_ALL_CAPS |
változók | snake_case |
metódusok | snake_case |
függvények | inkább snake_case , de ritkávbaan használt és megengedett a mixedCase is |
osztályok | StudlyCaps (CamelCaps , camelCase nagybetűvel kezdődően) |
palindrom = "Indul a görög aludni"
mondat = "Ez egy példa mondat, python funkciók szemléltetésére"
abece = "A,Á,B,C,Cs,D,Dz,Dzs,E,É,F,G,Gy,H,I,Í,J,K,L,Ly,M,N,Ny,O,Ó,Ö,Ő,P,R,S,Sz,T,Ty,U,Ú,Ü,Ű,V,Z,Zs"
csak_egyes_betuk = "A,Á,B,C,D,E,É,F,G,H,I,Í,J,K,L,M,N,O,Ó,Ö,Ő,P,R,S,T,U,Ú,Ü,Ű,V,Z"
print(mondat)
Ez egy példa mondat, python funkciók szemléltetésére
mondat[0] # Karakterlánc első eleme
'E'
mondat[-1] # Karakterlánc utolsó eleme
'e'
mondat[0] = 'h' # Karakterlánc így nem módosítható :(
Erre válaszként a
TypeError: 'str' object does not support item assignment
üzenetet kapnánk. Ehelyett rendelkezésünkre állnak a string "szeletelő jelölések" (célszerűbb az angol terminológia: slice notation
), a stringek összefűzése (pl. +=
, +
), a csere (replace
), stb. műveletek.
Nézzünk példákat slice notation
-ra.
mondat[:12] # Első 12 karakter
'Ez egy példa'
mondat[7:] # Karakterlánc vége, 7. eletől
'példa mondat, python funkciók szemléltetésére'
mondat[-15:] # az utolsó 15 elem
'szemléltetésére'
mondat[7:36]
'példa mondat, python funkciók'
len(mondat) # Karakterlánc hossza
52
mondat[:-15] + ' kipróbálására'
'Ez egy példa mondat, python funkciók kipróbálására'
print(mondat.lower())
print(mondat.upper())
ez egy példa mondat, python funkciók szemléltetésére EZ EGY PÉLDA MONDAT, PYTHON FUNKCIÓK SZEMLÉLTETÉSÉRE
palindrom[::-1]
'indula görög a ludnI'
mondat[::-1]
'erésétetlélmezs kóicknuf nohtyp ,tadnom adlép yge zE'
csak_egyes_betuk # emlékeztetőül
'A,Á,B,C,D,E,É,F,G,H,I,Í,J,K,L,M,N,O,Ó,Ö,Ő,P,R,S,T,U,Ú,Ü,Ű,V,Z'
csak_egyes_betuk[::2]
'AÁBCDEÉFGHIÍJKLMNOÓÖŐPRSTUÚÜŰVZ'
abece # emlékeztetőül
'A,Á,B,C,Cs,D,Dz,Dzs,E,É,F,G,Gy,H,I,Í,J,K,L,Ly,M,N,Ny,O,Ó,Ö,Ő,P,R,S,Sz,T,Ty,U,Ú,Ü,Ű,V,Z,Zs'
abece.replace(",", " ")
'A Á B C Cs D Dz Dzs E É F G Gy H I Í J K L Ly M N Ny O Ó Ö Ő P R S Sz T Ty U Ú Ü Ű V Z Zs'
mondat.replace("példa", "teszt")
'Ez egy teszt mondat, python funkciók szemléltetésére'
mondat.replace("e", "_X_")
'Ez _X_gy példa mondat, python funkciók sz_X_mlélt_X_tésér_X_'
mondat.replace("e", "_X_", 2) # csak az első 2-t cseréli
'Ez _X_gy példa mondat, python funkciók sz_X_mléltetésére'
Összefoglalva a Python slice notation
(magyarul talán ~szelet):
x[start:end] # az elemek starttól end-1-ig
x[start:] # az elemek starttól végig
x[:end] # az elemek az elejétől end-1-ig
x[:] # az összes elem
Mindegyiket ki lehet egészíteni step
értékkel, így minden step
-edik elemet érhetjük el:
x[start:end:step]
A legfontosabb észben tartani, hogy az :end
érték az első olyan értéket képviseli, amely nincs a kiválasztott szeletben. Tehát a különbség a end
és a start
között a kiválasztott elemek számát jelenti (ha 1 lépés az alapértelmezett).
A másik lehetőség az, hogy a kezdet vagy a vég negatív szám lehet, ami azt jelenti, hogy az elejétől kezdve a tömb végéig számít. Így:
x[-1] # az utolsó elem
x[-2:] # az utolsó 2 elem
x[:-2] # minden kivéve az utolsó 2 elem
Így már érhető, hogy a negatív érték lépésként is működik:
x[::-1] # minden elem, de megfordítva
x[1::-1] # az első 2 elem megfordítva
x[:-3:-1] # utolsó 2 elem megfordítva
x[-3::-1] # utolsó 2 elemen kívül minden, megfordítva
Fontos megjegyzés: ez nem csak stringeknél, hanem általánosságban tömböknél is működik
mondat.find("python") # a string helyét adja vissza
21
mondat.find("-----") # illetve -1-et, ha nem találja
-1
mondat.count("él") # megszámoljuk az előfordulást (itt a "példa" és "szemléltetésére" szavakban találhatunk ilyet)
2
Összefűzésre használhatjuk a +
vagy a +=
operátort:
str1 = "Hello "
str2 = "világ"
str3 = str1 + str2
print(str3)
Hello világ
str1 += str2
print(str1)
Hello világ
Stringek darabolására alkalmas a split
, pl:
print(abece.split(","))
['A', 'Á', 'B', 'C', 'Cs', 'D', 'Dz', 'Dzs', 'E', 'É', 'F', 'G', 'Gy', 'H', 'I', 'Í', 'J', 'K', 'L', 'Ly', 'M', 'N', 'Ny', 'O', 'Ó', 'Ö', 'Ő', 'P', 'R', 'S', 'Sz', 'T', 'Ty', 'U', 'Ú', 'Ü', 'Ű', 'V', 'Z', 'Zs']
print(str1.split(" "))
['Hello', 'világ']
Megjegyzés: a split
listát készít, amiről még nem beszéltünk, de később fogunk. A visszatérési érték típusát akár ellenőrizhetjük is:
print(type(abece.split(",")))
<class 'list'>
Pythonban ez szerencsére szintén egyszerűbb, mint a legtöbb nyelven.
szoveg = input("Adjon meg tetszőleges szöveget: ")
print("A beolvasott szöveg ", szoveg, " volt.", sep = "*")
Adjon meg tetszőleges szöveget: Hello A beolvasott szöveg *Hello* volt.
Pythonban a legtöbb nyelvhez hasonló logikai műveleteink vannak.
b |
Not b |
---|---|
True |
False |
False |
True |
And |
False |
True |
---|---|---|
False |
False |
False |
True |
False |
True |
Or |
False |
True |
---|---|---|
False |
False |
True |
True |
True |
True |
b1 = True
b2 = False
print(b1 is True)
True
b1 and b2
False
b1 or b2
True
not b1
False
not b2
True
Az if
, elif
, else
vezérlési szerkezetek hasonlóan működnek más népszerű programozási nyelvek hasnoló szerkezeteihez. A vezérlési szerkezetek lényege, hogy bizonyos programrészlet végrehajtását feltételhez köthetjük.Ez egy logikai kifejezés, amelynek igaz (True
) / hamis (False
) voltától függ, hogy végrehajtódik-e az adott programrészlet.
Igaz ág, if
Igaz ág, ha ez előző feltétel nem volt igaz, elif
Hamis ág, else
ág
szam = -10
if szam > 0:
print("Pozitív");
else:
print("Nem pozitív");
Nem pozitív
for n in range(1, 10) :
if n == 6:
print("Az n érteke pontosan hat")
elif n == 8:
print("Az n érteke pontosan nyolc")
else:
print("n =", n)
n = 1 n = 2 n = 3 n = 4 n = 5 Az n érteke pontosan hat n = 7 Az n érteke pontosan nyolc n = 9
st = "hello"
print("Itt a ch egy konkrét karakter nem pedig integer:")
for ch in st:
print(ch, end = " ")
print("\n\nWhile ciklus és i (int) változó:")
i = 0
while i < len(st):
print(st[i], end = " ")
i += 1
print("\n\nFor ciklus és i (int) változó:")
i = 0
for _ in st:
print(st[i], end = " ")
i += 1
Itt a ch egy konkrét karakter nem pedig integer: h e l l o While ciklus és i (int) változó: h e l l o For ciklus és i (int) változó: h e l l o
lst = [x for x in st]
print(lst)
['h', 'e', 'l', 'l', 'o']