Wykład 2: Metody Łańcuchów
s.capitalize()
s.center(width [, pad])
s.count(sub [,start [,end]]) s.decode([encoding [,errors]]) s.encode([encoding [,errors]]) s.endswith(suffix[,start [,end]]) s.expandtabs([tabsize])
s.find(sub [, start [,end]]) s.index(sub [, start [,end]]) s.isalnum()
s.isalpha() s.isdigit() s.islower() s.isspace() s.istitle() s.isupper() s.join(t)
s.ljust(width [, fill]) s.lower()
s.lstrip([chrs])
s.replace(old,new[,maxreplace]) s.rfind(sub [,start [,end]])
s.rindex(sub [,start [,end]]) s.rjust(width [, fill])
s.rsplit([sep [,maxsplit]]) s.rstrip([chrs])
s.split([sep [,maxsplit]]) s.splitlines([keepends])
s.startswith(prefix[,start [,end]]) s.strip([chrs])
s.swapcase() s.title()
s.translate(table[,deletechars]) s.upper()
s.zill(width)
Drukowania w Pythonie
Można wydrukować łańcuch na ekran używając: “print.”
Używając operatora % w łańcuchu w połączeniu z poleceniem print możemy formatować tekst:.
>>> print “%s xyz %d” % (“abc”, 34) abc xyz 34
print automatycznie dodaje znak nowej linii na końcu łańcucha, chyba, że użyjesz
przecinka
>>> print “abc” >>> print “abc”, “def”
abc abc def
Znaki formatujące łańcuch
d,i – integer lub long
u – bez znaku integer lub long
o – l. całkowita ósemkowa
X,x – szesnastkowa (duże lub małe litery)
f – zmiennoprzecinkowa
E,e – zmiennoprzecinkowa wykładnicza notacja
g,G- używa e,E dla bardzo małych (<-4) i bardzo dużych wykładników, poza tym f
s – łańcuch (używa str())
r – łańcuch (używa repr())
c – pojedynczy znak
%[(nazwa)][-/+/0/][min szer pola][.ilość cyfr po przec/.max szer pola][litera]
* - zastępuje dowolna cyfrę
% dict % tuple (nie % list)
Metody wycinania sekwencji
a=”abcdefgh ijklmn op”
b=[1,2,3,4,5,6]
c=(0,-1,-2,-3)
a[-12:-5:2] # ”g jl”
b[:-2] # [1, 2, 3, 4]
c[2] # -2
S e k w e n c j a
0 1 2 3 4 5 6 7 8
0 1 2 3 ... len(s)
-4
len(s) -3
len(s) -2
len(s) -1
-9 -8 -7 -6 -5 -4 -3 -2 -1
-len(s) -len(s)
+1 -len(s)
+2 -len(s)
+3 … -4 -3 -2 -1
Szablony
import string
a=u"""Szanowny Panie %(nazwisko)s,
W związku z Pana pismem dotyczącym zakupu: %(produkt)s proszę najpierw wpłacić %(kwota)5.2f zł. na konto
%(konto)s. Po otrzymaniu dowodu wpłaty %(produkt)s będzie natychmiast przesłany na Pana adres,
Łączę wyrazy szacunku i powazania, Andrzej Krajka"""
print a % {'nazwisko': 'Kowalski','produkt':'suszarka','kwota':200.00,'konto':2130001231001231}
# --- a = string.Template(u"""Szanowny Panie $nazwisko,
W związku z Pana pismem dotyczącym zakupu: $produkt proszę najpierw wpłacić $kwota zł. na konto
$konto. Po otrzymaniu dowodu wpłaty $produkt będzie natychmiast przesłany na Pana adres,
Łączę wyrazy szacunku i powazania, Andrzej Krajka""" )
print a.substitute({'nazwisko': 'Kowalski','produkt':'suszarka','kwota':'200.00‘, 'konto':2130001231001231})
Słowniki
Operacja Użycie Działanie
clear dict.clear() nie zwraca wartości, usuwa wszystkie pary klucz:wartość ze słownika dict.
copy dict.copy() zwraca dict, płytkie kopiowanie słownika
fromkeys dict.fromkeys(s[,v]) tworzy słownik dict z kluczami z s i wartościami równymi v.
get dict.get(k[,d]) zwraca dict[k] jeśli k jest indeksem w słowniku, w przeciwnym razie zwraca d.
has_key dict.has_key(klucz1) zwraca True jeśli klucz1 należy do słownika dict, w przeciwnym wypadku zwraca False.
items dict.items() zwraca listę elementów (klucz, wartość).
iteritems dict.iteritems() iterator nad elementami słownika dict.
iterkeys dict.iterkeys() iterator nad kluczami słownika dict.
itervalues dict.itervalues() iterator nad wartościami słownika dict.
keys dict.keys() zwraca listę kluczy
pop dict.pop(klucz[,błąd]) zwraca wartość elementu korespondującego z kluczem i usuwa go ze słownika, jeśli klucza nie ma w słowniku zwraca wartość błąd, a jeśli nie została podana
„zwraca” błąd – KeyError.
popitem dict.popitem() zwraca parę (klucz, wartość) i usuwa ze słownika, a jeśli słownik jest pusty
„zwraca” błąd – KeyError
setdefault dict.setdefault(klucz,błąd) zwraca wartość elementu korespondującego z kluczem, jeśli klucza nie ma w słowniku zwraca wartość błąd i wstawia do słownika parę klucz:błąd
update dict.update(E[,**F]) nie zwraca wartości, aktualizuje dict parami klucz:wartość ze słowników podanych jako parametry.
values dict.values() zwraca listę wartości słownika
Elementy programowania funkcyjnego: Funkcje
def fun(x, y, z=3.25, l=None):
Wywołania
fun(3,5)
t=[2,7,13]
fun(*t)
sl={‘x’:5, ‘y’:3, ‘l’:-7}
fun(**sl)
Dekoratory
@ gfun
def fun(x, y,z=3.25, l=None):
Anonimowe funkcje lambda
lambda wykaz argumentów:wyrażenie
t=[lambda x,y:x+y, lambda x,y:x*y, lambda x,y: x//y]
t[0](2,3) # 5 t[2](5,2) # 2
print ‚%2f’ % (lambda x,y: x**y)(2,0.5) # 1.414214 t=’32 56 1 7 12 54’
t=t.split()
t.sort(lambda x,y:cmp(int(x),int(y)))
t # [’1’, ‚7’, ‚12’, ‚32’, ‚54’, ‚56’]
Elementy programowania funkcyjnego
filter(funkcja, sekwencja) map(funkcja, sekwencja)
reduce(funkcja, sekwencja) COMPREHENSIVE LIST
e=[(x,y,z) for x in a for y in b if y<”c”]
(math.pow(3,y) for y in [2,-1,0,5])
[10*i for i in range(10)]
Funkcje lambda
def g(x,y):
if y==0:
return float(’inf’) else:
return x+1.0/y
def fmean(a):return reduce(lambda x,y:x+y,a)/len(a), len(a)/reduce(g,a,0), reduce(lambda x,y:x*y,a)**
(1.0/len(a)) fmean(range(10))
fmean([1,3,8,12,29,31,14,5])
Elementy programowania funkcyjnego
Funkcje eval (), exec (), execfile() i compile()
eval (str [, globals [, locals] ] )
a = eval(’3*math.sin(3.5+x) + 7.2’)
a = [3, 5, 10, 13]
exec ”for i in a: print i”
execfile (filename [, globals [, locals]]), compile(str,filename,kind)
kind- ‘single’, ‘exec’, ‘eval’
Elementy programowania
obiektowego – przestrzeń nazw
globals() locals()
obiekt.__dict__
najbardziej zagnieżdżony, w którym najpierw
poszukuje się nazwy, zawiera on nazwy lokalne;
środkowy, przeszukiwany w następnej kolejności, który zawiera aktualne nazwy globalne modułu
zewnętrzny (przeszukiwany na końcu) jest zasięgiem
nazw wbudowanych
Klasy
class Konto:
”Prosta klasa”
typ_konta = „Podstawowe” # atrybuty
def __new__(cls, nazwisko, saldo): # Konstruktor
…..
def__init__(self, nazwisko, saldo) : # konstruktor
”Inicjalizacja nowej instancji Konta”
self.nazwisko = nazwisho
self.saldo = saldo
def wpłata(self,kwota): # metody
”Wpłata na konto”
self.saldo = self.saldo + kwota
def wypłata(self,kwota):
”Pobranie z konta”
self.saldo = self.saldo – kwota def info (self):
”Stan konta”
return self.saldo
def __del__(self): # destruktor
….