1 of 27

2 of 27

Na dobry początek

3 of 27

Po co nam interpreter?

- eksperymentowanie

- testowanie

4 of 27

IDE

- IDLE

- Eclipse (Aptana) + PyDev

- Netbeans IDE (niekoniecznie działa w najnowszych wersjach)

- Wing IDE (jak nie ma się co robić z pieniędzmi :D)

- Emacs

- Vim

5 of 27

Ćwiczenia! :D

Napisz moduł który wypisze Hello world a następnie odpal go, zaimportuj moduł w sesji interaktywnej (za pomocą instrukcji import)

print('Hello word')

6 of 27

Typy

Wszystko jest obiektem, typ również!

Typy wraz z przykładami:

Liczby

1, 3.12, 3+4j(zespolone) Decimal, Fraction, 0b10101(binarne), 0o117(ósemkowe) ,0x9ff(szesnastkowe)

Łańcuchy znaków

str(), 'abc', "ccc", b’a\x01c’, u'kaczka'

Listy

list(), [1, [2, 'trzy'], 4]

Słowniki

dict(), {“kaczka”: 4, “chomik”:12}

Krotki

tuple(), (1, ‘dynia’ , 4, ‘U’)

Pliki

open(‘nazwa_pliku’, ‘r’)

Zbiory

set(‘abc’), {‘a’, ‘b’, ‘c’}

Typy podstawowe

True, False, None

Typy jednostek programu

Funkcja, klasy, moduły....

7 of 27

Liczby

Operatory:

- oczywiste + , - , * ,/ , **(potęga), // (dzielenie całkowite), %

- operacje bitowe | ^ & << >>

- porównania <, >, ==, >=, <=

-operacje logiczne: and, or , is

W pythonie można porównywać liczby w ten sposób:

a < b < c ... < d, zamiast a < b and b < c ...

8 of 27

Liczby

Konwersja typów mieszanych

4+0.3

1/3.0

1/3

Funkcje typowe dla liczb:

- pow, abs, round, int, float, hex, bin

round(1.567)

round(1.492)

Moduły:

random, math...

math.floor()

math.trunc()

random.random()

random.choice([ ... ])

9 of 27

Liczby

Decimal?

Decimal daje nam stała precyzję w liczbach dziesiętnych.

Ale po co to komuuuu?

10 of 27

Liczby

Przykład sam wszystko wyjaśnia:

0.1+0.1+0.1 - 0.3

a teraz za pomoca Decimal

from decimal import Decimal

Decimal(‘0.1’) + Decimal(‘0.1’) + Decimal(‘0.1’) - Decimal(‘0.3’)

Dodatkowe atuty: ustalenie precyzji

import decimal

decimal.getcontext().prec - precyzja

with decimal.localcontext() as ctx: #to tylko w pythonie 3

ctx.prec = 2

decimal.Decimal(‘1.00’)/decimal.Decimal(‘3.00’)

11 of 27

Liczby

Fraction (ułamek)

from fractions import Fractions

x = Fraction(1,3)

y = Fraction(4,6)

x+y

x-y

x*y

12 of 27

Zbiory

x = set('abcd')

y = set('bdxgh')

c in x

x – y

x | y (SUMA)

x & y (CZEŚĆ WSPÓLNA)

x ^ y (XOR)

x > y, x < y , (NADZBIOR, PODZBIOR)

w 3.0

{ } - nowy literał zbiorów

możliwość tworzenia zbiorów składanych np. S = {x for x in “kaczka”}

13 of 27

Zbiory

Przykładowe zastosowanie:

engineers = {'robert', 'amadeusz' , 'anna'}

managers = {'edward', 'amadeusz'}

'robert ' in engineers # czy robert jest inzynierem

engineers | managers #kto jest i tym i tym

engineers – managers #inzynierowie bez menagerow

engineers > mangers # czy wszyscy inzynierowie sa managerami

{'robert', 'amadeusz'} < engineers # czy obaj sa inzynierami

managers ^ engineers # kto jest w jednym ale nie w obu

14 of 27

Co nieco o Bool'u

type(True)

isinstance(True, int)

True == 1

True is 1

True or False

True + 4

15 of 27

Stringi

1. OBIEKTY NIEZMIENNICZE!!

deklaracja

Jakaś różnica?

a = ' '

a = " "

b = """ """

konkatenacja a + b

a * 3 powtorzenia

załóżmy, że t = 11

formatowanie:

"Tekst w który wstawiam {0}, bla bla".format(t)

"Tekst w który wstawiam %s, bla bla" % t

16 of 27

Stringi

Metody i nie tylko:

a.find(“cos”)

b.split()

b.lower() upper()

b.isdigit()

b.endswith()

map(ord, b)

s.replace('co','zczym')

S[i]

S[i:j]

" ".join(strlist)

len(b)

Dla ciekawych:

r”asdsad” #surowe

b”asdsada” #binarne

u”asdsad” #w 2.7 unicode

17 of 27

Listy

1. Obiekty zmiennicze

[ ]

L[i]

L[i:j]

L[i][j]...

Ciekawsze metody:

extend(lista)

insert(indeks, co)

pop()

remove(wartosc)

append(wartosc)

sort(reverse = True/False)

Za pomocą list da się ogarnąć kolejki, stos, ale są moduły które robią to za nas lepiej wiec warto z nich korzystac :)

18 of 27

Listy

wycinki

a – odkąd

b - dokąd

c – co który element

L[a : b : c]

19 of 27

Słowniki

Dostęp po kluczu

Nieuporządkowane

{'klucz':wartosc}

Przykład:

{"drwal" : 23}

dict('Bob' = 12, 'age'=11)

dict(Marek = 2,Kasia = 4)

-Można modyfikować w miejscu

- Na słownikach nie działają operacje na sekwencjach

- Przypisanie dodaje nowy wpis np D[“kurczak”] = 11

- Klucze nie muszą być łańcuchami znaków

20 of 27

Słowniki

Ciekawe metody:

D.keys()

D.values()

D.items() - klucz plus wartość

D.copy()

D.get(key, default) – w razie niepowodzenia leci default

D[“klucz']

D.pop(klucz)

D.has_key(klucz)

D.update(D2) (łączenie 2 słowników)

W python3 keys, values i items zwaracają widoki zamiast list, jeśli chcemy listę wystarczy dopisać list(d.keys()),

in zamiast has_key(key) !!

21 of 27

Krotki

Trochę jak ograniczone listy...

Nie można ich zmieniać !!

za ich pomocą działa

a, b = b, a

metody:

index, count (jak w listach)

tuple([1,2,3])

(1, 2, 3)

22 of 27

Pliki

Tworzenie obiektu pliku:

output = open('/home/nozdi/plik' , 'w')

input = open('/home/nozdi/plik', 'r')

Metody:

string_z_calego_pliku = input.read()

wczytanie_w_n_bajtach = input(n)

jedna_linia = input.readline()

lista_linii = input.readlines()

output.write(“tekst”)

output.writelines(lista_stringow)

output.close()

output.flush() # opróżnienie bufora wyjściowego na dysk

file.seek(N) #idzie na N pozycje

23 of 27

Pliki

Funkcja open tworzy iterator pliku dzięki czemu można:

for line in open('data'): print(line)

Dwa ciekawe tryby związane z plikami :

open('a.txt', encoding = 'latin-1')

open('f.bin', 'rb')

24 of 27

True i False

"kaczka"

True

""

False

[ ]

False

{ }

False

None

False

1

True

0.0

False

25 of 27

Referencje!!

a = [1,2,3]

c = [1,2,3]

b = a

b.append(11)

print(a,b)

a == c

a is c

26 of 27

Zagadeczka

a = [1,2,3]

x = a * 4 ?

x = [a] * 4

s = “jajko”

A co zwróci?

s[0][0][0][0][0][0]

27 of 27