Www Sweetsexyteen w
a searchwsearche Page s Sweetsexyteen x Page t Page esearch s
x Www t Www e Sweetsexyteen Page s Page a Www c Www e Page ersearchh Page Www weesearchs Page xy Page e Page n Sweetsexyteen
A Python 2.0-tól kezdve egy új adattípust használhatnak a programozók: az
Unicode objektumot. Ezt Unicode adatok (lásd i18n", azaz
"i" + 18 karakter + "n"). Az Unicode megoldotta a
problémát azzal, hogy egyetlen kódlapot definiál a világ valamennyi nyelvéhez.
Unicode karakterláncokat ugyanolyan egyszerű Pythonban létrehozni, mint a
hagyományos szövegeket:
Az idézőjel előtti kis "u" mutatja, hogy Unicode karakterláncot kell
létrehozni. Ha speciális karaktereket szeretnénk használni a szövegben,
ezt megtehetjük Python Unicode-Escape kódolásával. A következő példa
megmutatja, hogyan:
A
Más karaktereket úgy értelmez, hogy az illető karakter sorszámát
felhasználja közvetlenül Unicode sorszámként. Ha szabványos Latin-1
kódolású szöveget használunk (ezt a kódolást használják sok
nyugat-európai államban) észrevehetjük, hogy az Unicode első 256 karaktere
ugyanaz, mint a Latin-1-es kódolás első 256 karaktere.
Szakértőknek: Van egyfajta nyers mód (raw mode), amilyen a normál
karakterláncoknál is. Az idézőjel elé 'ur'-et kell írni, hogy a Python a
Raw-Unicode-Escape kódolást használja. Ez a fenti
A nyers mód akkor a leghasznosabb, ha sok vissza-per jelet kell beírni, mint
például reguláris kifejezéseknél.
A szabványos kódoláson kívül is számos egyéb mód van a Pythonban Unicode
szövegek létrehozására valamely ismert kódolás alapján.
A beépített unicode()függvény gondoskodik a használható Unicode kódolók és dekódolók
eléréséről. Néhány közismertebb az ilyen kódolások közül, amelyeket
átkódolhatunk: Latin-1, ASCII, UTF-8, és
UTF-16. Az utóbbi kettő változó hosszúságú kódolás, amely minden
Unicode karaktert egy vagy két bájton tárol. Az alapértelmezett kódolás az
ASCII, amely a 0-tól 127-ig terjedő karaktereket alakítja át, a többit
hibautasítással elutasítja. Ha az Unicode karakterláncot kiíratjuk, fájlba
írjuk, vagy az str() függvénnyel átalakítjuk eszerint a kódolás
szerint megy végbe.
Ahhoz, hogy a Unicode karakterláncot egy 8-bites karakterlánccá alakítsuk
a Unicode objektum egy encode()
metódussal szolgál, amely egy argumentumot vár, a kódolás nevét. Kisbetűs
kódolásneveket használjunk.
Ha van egy speciális kódolású adatunk, és meg szeretnénk kapni a megfelelő
Unicode karakterláncot, a unicode() függvényt használjuk
második argumentumként a kódolás nevével.
A Python többfajta összetett adattípust ismer, amellyel
több különböző értéket csoportosíthatunk.
A legsokoldalúbb a lista, amelyet vesszőkkel elválasztott
értékekként írhatunk be szögletes zárójelbe zárva. A lista elemeinek nem
kell azonos típusúaknak lenniük.
Ahogy a karakterlánc-indexek, úgy a lista-indexek is 0-val kezdődnek, és a
listákat is szeletelhetjük, összeilleszthetjük és így tovább:
A karakterláncokkal ellentétben - amelyek megváltoztathatatlanok - a
listák egyes elemeit módosíthatjuk:
A szeleteknek értékeket is adhatunk és ez akár a lista elemszámát is
megváltoztathatja:
A beépített len() függvény listákra is alkalmazható:
A listák egymásba ágyazása is lehetséges:
Figyeld meg, hogy az utolsó példában
Természetesen a Pythont sokkal összetettebb feladatokra is
használhatjuk annál, minthogy kiszámoljuk 2+2 értékét. Például írhatunk
egy rövid ciklust a Fibonacci-sorozat kiszámolására:
Ebben a példában a Python több új tulajdonságát megtaláljuk:
Egy lezáró vessző meggátolja az újsor karaktert a kimeneten:
>>> u'Hello World !'
u'Hello World !'
>>> u'Hello\u0020World !'
u'Hello World !'
\u0020 escape-sorozat jelzi, hogy egy 0x0020 (a szóköz karakter)
sorszámú Unicode karaktert kell beszúrni az adott helyen.
\
uXXXX konverziót csak akkor fogja alkalmazni, ha páratlan számú vissza-per jel van a kis 'u'
előtt.
>>> ur'Hello\u0020World !'
u'Hello World !'
>>> ur'Hello\\u0020World !'
u'Hello\\\\u0020World !'
>>> u"abc"
u'abc'
>>> str(u"abc")
'abc'
>>> u"äöü"
u'\xe4\xf6\xfc'
>>> str(u"äöü")
Traceback (most recent call last):
File "<stdin>", line 1, in ?
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128)
>>> u"äöü".encode('utf-8')
'\xc3\xa4\xc3\xb6\xc3\xbc'
>>> unicode('\xc3\xa4\xc3\xb6\xc3\xbc', 'utf-8')
u'\xe4\xf6\xfc'
3.1.4 Listák
>>> a = ['spam', 'tojások', 100, 1234]
>>> a
['spam', 'tojások', 100, 1234]
>>> a[0]
'spam'
>>> a[3]
1234
>>> a[-2]
100
>>> a[1:-1]
['tojások', 100]
>>> a[:2] + ['sonka', 2*2]
['spam', 'tojások', 'sonka', 4]
>>> 3*a[:3] + ['Boe!']
['spam', 'tojások', 100, 'spam', 'tojások', 100, 'spam', 'tojások', 100, 'Boe!']
>>> a
['spam', 'tojások', 100, 1234]
>>> a[2] = a[2] + 23
>>> a
['spam', 'tojások', 123, 1234]
>>> # Pár elem átírása:
... a[0:2] = [1, 12]
>>> a
[1, 12, 123, 1234]
>>> # Pár elem törlése:
... a[0:2] = []
>>> a
[123, 1234]
>>> # Pár elem beszúrása:
... a[1:1] = ['bletch', 'xyzzy']
>>> a
[123, 'bletch', 'xyzzy', 1234]
>>> a[:0] = a # Beszúrja magát (pontosabban egy másolatát) a saját elejére.
>>> a
[123, 'bletch', 'xyzzy', 1234, 123, 'bletch', 'xyzzy', 1234]
>>> len(a)
8
>>> q = [2, 3]
>>> p = [1, q, 4]
>>> len(p)
3
>>> p[1]
[2, 3]
>>> p[1][0]
2
>>> p[1].append('xtra') # Nézd meg az 5.1-es szakaszt!
>>> p
[1, [2, 3, 'xtra'], 4]
>>> q
[2, 3, 'xtra']
p[1] és q valóban
ugyanarra az objektumra hivatkozik! Még később visszatérünk az
objektumok értelmezésére.
3.2 Első lépések a programozás felé
>>> # Fibonacci-sorozat:
... # az előző két elem összege adja a következőt
... a, b = 0, 1
>>> while b < 10:
... print b
... a, b = b, a+b
...
1
1
2
3
5
8
a és b egyszerre veszi fel a 0 és 1 értékeket.
Az utolsó sorban újból ezt használjuk, hogy megmutassuk, hogy előbb a
jobboldal értékelődik ki, és csak azután megy végbe az értékadás.
A jobboldali kifejezések jobbról balra értékelődnek ki.
b < 10) igaz marad. A Pythonban - ahogy a C-ben is - minden
nullától eltérő egész érték igazat, a nulla hamisat jelent.
A feltétel lehet egy
karakterlánc vagy egy lista (gyakorlatilag bármilyen sorozat):
minden aminek nem nulla a
hossza - igaz, az üres sorozatok hamisak. A példában használt feltétel
egy egyszerű összehasonlítás. A legalapvetőbb összehasonlító
relációkat a C-vel azonosan jelöljük: < (kisebb mint), >
(nagyobb mint), == (egyenlőek), <= (kisebb vagy egyenlő),
>= (nagyobb vagy egyenlő) and != (nem egyenlő).
>>> i = 256*256
>>> print 'Az i értéke:', i
Az i értéke: 65536
>>> a, b = 0, 1
>>> while b < 1000:
... print b,
... a, b = b, a+b
...
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987