Académique Documents
Professionnel Documents
Culture Documents
Koniec na video 29
Running Jupyter
Start > cmd i wybieramy anaconda prompt i wpsujemu jupyter notebook
W przegladarce otworzy się nam http://localhost:8888/tree który będzie Jupyter notrebook
Po uruchomieniu Anacond aPrompt możemy tez wpisac „Python” w cmd i będziemy działać w edytorze
pythona w komand linie
Programy możemy też pisać w edytorze tekstowym np. notepad i potem zapisać w directory gdzie
mamy zainstalowaną Anaconda
Uruchomienie kodu w pliku to po prostu wpisanie nazwy pliku *.py znajdujacego się w folderze
Anaconda
Operatory pórwania
if expression :
suite
elif expression :
suite
else :
suite
Podstawowe komendy
PODSTAWOWE INFORACJE
Variables
They are case sensitive > Fruit and fruit are 2 different variables
Typy zmiennych
• booleans (which have the value True or False)
• integers (whole numbers such as 42 and 100000000)
• floats (numbers with decimal points such as 3.14159, or sometimes exponents like
1.0e8, which means one times ten to the eighth power, or 100000000.0)
• strings (sequences of text characters)
fruit = “apple”
>>> cd /home/czajka/Desktop/Python_files
>>> python 61.py
Komenda cat
>>cat 61.py
wyswielti nam zawartosc pliku
Print(“Wywolanie pliku pythona”)
'''
larger multiline comments
'''
>>> type(44.4)
<class 'float'>
Strings
String możemy podawać w pojedyńczych lub podwójnych nawiasach ‘ ‘ albo ” ”
Warto używać ” ” bo jak mamy w stringu ‘ np. w I’m to wtedy nie zwróci błędu
jak w stringu chcemy uzyc znaku “ to dobrze przypisac tekst do zmiennej jako
string = 'I wtedy powiedzial “Do diaska”'
print ("to jest pierwsza linia\nto jest druga linia\nto jest trzecia linia")
to jest pierwsza linia
to jest druga linia
to jest trzecia linia
a ="jakis tekst"
print(a)
>>jakis tekst
Domyślnie każdy string traktowany jest jako lista, pozycja w indexie zaczyna się od 0.
Łacznie tekstu
>>litery + "1234567890"
'abcdefghijklmnoprstuwxyz1234567890'
>>litera ="a"
>>litera * 5
‘aaaaa’
>>> len(letters)
26
>>> empty = ""
>>> len(empty)
0
for word in st.split(' '): - TWORZY LISTE, PO SPACJI NOWY ELEMENT NA LISCI
if word[0] == 's':
print (word)
start
s
sentence
Join ()
>>> len(poem)
250
>>> poem.startswith('All')
True
>>> poem.endswith('That\'s all, folks!')
False
>>> word = 'the'
>>> poem.find(word) - offset of first occurance – return lowest index where string is find
73
>>> poem.rfind(word) - offset of last occurance – returns highest index where string is find
214
>>> poem.count(word)
3
Print formatting
>>a='zmienna typu string'
>>print('Dodaj moja zmienna do wpisanego tekstu: %s' %(a))
Dodaj moja zmienna do wpisanego tekstu: 'zmienna typu string'
%s – odnosie się do tego, że nasza zmienna będzie konwertowana na string, nie jest to nazwa
smiennej, jako %zmienna możemy podać integer a %s zmieni to na string
String alignment < Left ^ Center > Right (by default left alignmet is used )
Musimy zawsze podac {0: I dopiero potem znacznik alignmentu
>>> print ("{0:^20} | {1:>20}" .format('Lewe', 'Prawe'))
Lewe | Prawe
animal ="dog"
vegatable = "carrot"
mineral = "silver"
print("The animal is: {a}, the vegetable is: {v}, the mineral is {s}"\
.format(a=animal, v=vegatable, s = mineral))
Przyklad:
Lists [ ]
>>> list = ['Groucho', 'Chico', 'Harpo'] - lista []
>>> tuple = 'Groucho', 'Chico', 'Harpo' = tuple przecinki ',' albo ()
>>> dict = {'Groucho': 'banjo', 'Chico': 'piano', 'Harpo': 'harp'} - dictionary {}
>>len(lista)
3
Listy mozna wypisywać tak samo jak indexy dla string przy użyciu []
>> imiona
['Pawel', 'Kasia', 'Zygi', 'Zosia', 'Marek']
>>imiona.pop()
'Marek'
>>imiona
['Pawel', 'Kasia', 'Zygi', 'Zosia']
>>imiona.pop(2) - zwraca i usuwa 3 element z listy
'Zygi'
>> imiona
['Pawel', 'Kasia', 'Zosia']
>>imiona.sort()
['Kasia', 'Pawel', 'Zosia']
Lista.reverse() – przepisanie listy w odrotnej kolejnosci – ostatni element staje się pierwszym,
itd.
>> miesiace
['marzec', 'sierpien', 'maj']
>> miesiace.reverse()
['maj', 'sierpien', 'marzec']
difference - Tuple cannot be changed once defined, lists could be changed , we can insert and
delete elements
Lists are good to keep track of things by their order when order and elements could change
List [ ] vs list( )
[] - definjuje 1xN wymiarowa tablice
empty_list = [ ]
weekdays = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
big_birds = ['emu', 'ostrich', 'cassowary']
first_names = ['Graham', 'John', 'Terry', 'Terry', 'Michael']
1
2
3
4
5
List of List
[['windows', 'linux', 'mac os'], ['microsoft', 'gnu', 'apple'], ['oracle', 'mysql', 'ms_sql']]
Calosc to lista skladajaca się z 3 innych list, element calosc[0] listy to będzie cala lista systemy, [1] to cala lista prod, [2] to cala
lista bazy
>>calosc[1]
['microsoft', 'gnu', 'apple']
>> calosc[0][2] – wybranie pierwszej listy tworzacej liste calosc i wypisanie z niej elementu 3go
‘mac os’
jakbysmy uzyli append () to inny wynik, dwa imiona dodane jako jeden obiekt na koniec listy
>>> marxes
['Groucho', 'Chico', 'Harpo', 'Gummo', 'Zeppo', 'Karl']
>>> del marxes[-1] ----usuwanie ostatniego elementu z listy
>>> marxes
['Groucho', 'Chico', 'Harpo', 'Gummo', 'Zeppo']
>> calosc
[['windows', 'linux', 'mac os'],
['microsoft', 'gnu', 'apple'],
['oracle', 'mysql', 'ms_sql']]
>> del calosc[1][1] – usuwany 2gi element w 2giej liscie
>>calosc
[['windows', 'linux', 'mac os'],
['microsoft', 'apple'],
['oracle', 'mysql', 'ms_sql']]
Możemy sami podać jaki błąd zostanie nam zwrócony przy wystąpieniu exception
print(dzik_index)
Sorting list - sort () - sortuje pozycje na liscie, sorted () - zwraca posortowana kopie listy
By default ascending sorting
WHILE LOOP
While condition:
#Code block
While index < len(animals):
Print (animals[index])
Index += 1
Wynik 0, 1, 2
Wynik 1,2
TUPLE
Tuple w odroznieniu od list są niezmienialemn, nie można modyfikowac jej komponentów.
Dobre do przetrzymywania wartości, które nie powinny się zmienić podczas wykonywania programu –
np. lista dni tygodnia jest stala
Definiowanie tuple!
>>> marx_tuple = 'Groucho', 'Chico', 'Harpo' --musza byc 'wartosc'--jak bysmy definiowali liste
to marx_list=['Groucho', 'Chico', 'Harpo']
>>> marx_tuple
('Groucho', 'Chico', 'Harpo')
Usuwanie tupple
Del tupple_name
Tuple maja duzo mniej funkcji niz listy - nie ma np. append() czy insert () - Nie moga byc
modyfikowane po utworzeniu
Tuple zajmuja mniej miejsca niz listy, przez pomylke nie mozna zmienic elementu tuple
Mozna uzywac tuple jako dictionary key albo przekazywac argumenty funkcji przez tuple
FOR LOOP
#w petli for mozemy podac bezposrednio odwolanie do wartosci w tuple tworzacyh liste
#kazda para (miasto, kod) to jedna pozycja na liscie, czyli jakbysmy sie odwolywali
bezposrednio do elementu listy
for (miasto, kod) in lotniska:
print("Lotinsko w: {} ma kod {}" .format(miasto, kod))
DICTIONARY
Podobne do listy ale kolejnosc nie ma znaczenia i elementy nie sa wybierane przez offset (offset
to pozycja na liscie 0, 1, 2,itd)
Zamiast offset do kazdej wartosci w dictionary przypisywany jest unique key
Mozna zmieniac, dodawac i usuwac elemety dictionary
Wartości dla listy wywyołujemy poprzez index np list[0], dla dictionary wartości wywołujemy poprzez klucz np.
Dicttionary[‘key1’]
Definiowanie poprzez {}
dictionary={"klucz":"wartosc"}
Klucz to wartosc unikalna, jezeli bedzie uzyty wiec niz raz w dictionary to ostatnia wartosc
wygywa
dictionary['klucz']='wartosc'
>>> mies['6']='cze'
>>> mies
{'6': 'cze', '4': 'kwie', '5': 'maj'}
>>> mies[6]="cze"
mies
>>> mies
{4: 'kwie', 5: 'maj', 6: 'cze'}
>>mies[6]="czerwiec"
>>mies
{4: 'kwie', 5: 'maj', 6: 'czerwiec'}
>>miesiace.update(mies)
>>miesiace
{1: 'styczen', 2: 'luty', 3: 'marzec', 4: 'kwie', 5: 'maj', 6: 'czerwiec'}
Metoda update()
Jak w tabeli która dodajemy (mies2) wystepuje ten sam klucz co w tabeli poczatkowej (mies)
wartosc klucza z dodawanego dictionary wygrywa
>> mies
{4: 'kwie', 5: 'maj', 6: 'czerwiec'}
>>mies2
{5: 'ma', 6: 'cze', 7: 'lipiec'}
>> mies.update(mies2)
>>mies
{4: 'kwie', 5: 'ma', 6: 'cze', 7: 'lipiec'}
>>> mies2
{'7': 'lip', '6': 'cze', '9': 'wrze', '8': 'sie'}
>>> mies2.clear()
>>> mies2
{}
>>> mies
{'6': 'cze', '7': 'lip', '8': 'sie', '4': 'kwie', '5': 'maj'}
>>> mies['6']
'cze'
new_dictionary=old_dictionary vs new_dictionary=old_dictionary.copy()
funckja dict()
zamienia na sekwencje klucz-wartosc na obiekt dictionary
>>print(contacts)
{'Jason': '555-0123', 'Carl': '555-0987'}
FOR LOOP
Drugi sposób wywoływania FOR LOOP dla dictionaries to looping with 2 variables
For key_variable, value_variable in dictionary_name.items():
#Code block
Python bedzie oczekiwal, że pierwsza zmienna będzie odnosić się do ‘key’ a druga zmienna do ‘value’
def display_facts(facts):
"""Displays facts from dictionary"""
for fact in facts:
print("{}: {}". format(fact, facts[fact]))
dictionary = {'Kasia':'Najszczuplejsza panna mloda w Stolicy', 'Pawel':'Po slubie zgolil brode', 'Zygi': 'Ich syn oczko w
glowie'}
display_facts(dictionary)
display_facts(dictionary)
Nested dictionaries
Do każdego klucza w dictionary przypisane value tez będzie dictionary
contacts2 ={
'Jason': {
'phone':'555-0123',
'email':'jasnon@example.com'
},
'Carl': {
'phone':'555-0456',
'email':'carl@example.com'
}
}
>>Print(contacts2)
SETS
Set is like dictionary but contains only keys without values assigned to it. Each key must be
unique
>>> pusty_zbior=set()
>>> even_numb={0, 2, 4, 6, 8}
>>> even_numb
{0, 2, 4, 6, 8} - w set nie ma znaczenia kolejsność, moze byc prezentowany posortowany lub nie
>>> odd_numb={1, 3, 5, 7, 9}
>>> odd_numb
{1, 3, 5, 7, 9}
>>> set_litery=set('litery')
>>> set_litery
{'y', 'r', 'l', 'e', 'i', 't'}
>>> set_lista=set(['jeden','dwa','trzy'])
>>> set_lista
{'dwa', 'trzy', 'jeden'}
>>> set_tuple=set(('Pawel','Kasia','Zygi'))
>>> set_tuple
{'Kasia', 'Zygi', 'Pawel'}
>>> for name, contents in drinks.items(): #name przypisaujemy do klucza dictionary, contento wartosc
if 'vodka' in contents:
print(name)
screwdriver
martini
black russian
white russian
screwdriver
black russian
FILES
import os
W JUPYTHER NOTEBOOKS używamy pwd zwróci nam ściezke gdzie zainstalowana jest Anaconda3
To store data process from program or read data that will be used we need use the files
Open () – built-in functions that opens a file and returns a file object
Open(path_to_file)
Path_to_file – can be absolute (entire path to directory) or relative (only file name)
Python can reads both / and \ in file directory – bo oblsuguje roznie srodowiska – windows i linux.
Absolute:
Open(‘C:\Users\Pc\Documents\NAUKA\Python\test.txt’)
OR
Open(‘C:/Users/Pc/Documents/NAUKA/Python’)
Relative
Open(‘Documents\NAUKA\Python\test.txt’)
#W windows przy podawaniu sciezku do \users znaki '\u' traktowane sa jako unicode
#escape i beda zwracaly blad odczytu pliku
#f= open('C:\Users\Pc\test.txt')
f= open(r'C:\Users\Pc\test.txt', "r")
f_content = f.read()
print(f_content)
Metoda . read ( )
Przypisujemy do zmiennej plik, jak nie przypiszemy to nie możemy wywolac metody rad()
hosts= open('C:\Windows\System32\drivers\etc\hosts')
host_file_content = hosts.read()
print(host_file_content)
f = open(r'C:\\Users\\Pc\\test.txt', "r")
print(f.readlines()) #zczytuje plik i kazda linijke tekstu traktuje jako elemnt listy
print(f.readlines(2)) #zwóric wartośc pustą
#zeby wypisac kazda linie pliku pojedynczo trzeb uyzć triku z sleep
import time
f = open(r'C:\\Users\\Pc\\test.txt', "r")
for line in f:
print(line)
time.sleep(1)
f = open(r'C:\\Users\\Pc\\test.txt', "r")
line=f.readline() #line zczytuje 1-sza linie tekstu
while line:
print(line)
line=f.readline() #radline zczytuje kolejna linie tekstu
f.close()
uzywając ITER ()
#The iter() method creates an object which can be iterated one element at a time
#iter(object[, sentinel])
f = open(r'C:\\Users\\Pc\\test.txt', "r")
for line in iter(f):
print(line, ' ')
f.close()
print()
ITER
samogloski = ['a', 'e', 'i', 'o', 'u', 'y']
sam = iter(samogloski)
print(next(sam))#a
print(next(sam))#e
FILE POSITION
print()
print("Current position: {}" .format(hosts.tell() ))
print ("___" *5)
print()
print(hosts.read()) #nic nie wypisze bo jesteśmy na koncu pliku
W Jupyher notebooks tez trzeba uzywać methody seek żeby wrócic na początek pliku i moć go jeszcze raz przeczytać.
Methoda read() będzie szukała pliku w lokalizacji zwróconej przez polecenie pwd
closing file with .close () method
hosts= open('C:\Windows\System32\drivers\etc\hosts')
host_file_content = hosts.read() #read file
print(host_file_content) # print the file content
hosts.close() # close the file
hosts= open('C:\Windows\System32\drivers\etc\hosts')
host_file_content = hosts.read() #read file
print("File closed? {}" .format(hosts.closed)) #hosts.closed zwraca info o tym czy plik
zamkniety czy nie – True albo False
if not hosts.closed:
hosts.close() #zamkniecei pliki jezeli nie byl do tej pory zamkniety
print("File closed? {}" .format(hosts.closed))
Po tym jak code block skończy się wykonywać python automatycznie zamknie plik, Jak w kodzie pojawu się jakies
exception to python automatycznie zamknie plik.
#zeby wypisac kazda linie pliku pojedynczo trzeb uyzć triku z sleep
import time
f = open(r'C:\\Users\\Pc\\test.txt', "r")
for line in f:
print(line)
time.sleep(1)
Write to file
#writing to a file
#write method wirtes any string to an open file
#write does not add a newline character \n to the end of string
W pliku zostanie zapisany taki string ['PN', 'WT', 'SR', 'CZW', 'PT']
days_file.close()
The result of the & operator is a set, which contains all the items that appear in both lists
that you compare. If neither of those ingredients were in contents, the & returns an
empty set, which is considered False.
screwdriver
martini
manhattan
List the drinks that contain vodka but neither cream nor vermouth
screwdriver
black russian
Functions
Tworzenie funckji def
Def function_name() :
#code block
Def say_hi() :
Print(“Hi!”)
Fukcja z argumentem
def say_hi(name):
print("Hi {} !" .format(name))
say_hi("Jason")
say_hi("Everybody")
>> Hi Jason
>> Hi everybody
say_hello() # przy braku podania parametru dla fukcji wartosc domyslna zostanie
uzyta
say_hello("Kasia")
help(powitanie2)
powitanie2(first='Bezimienia', last='Beznazwiska')
Fucntion to say hello
##Bardzo ważne są wciecia w definiowaniu bloku, bez nich polecenie może nie
dzialac!!!
def odd_or_even(number):
"""Determine if a numer is odd or even."""
if number % 2 == 0:
return "Even"
else:
return "Odd"
Lambda expressions
Ad hoc functions that we do not need to define properly using def keyword, single expression not a blokck of
statement
Zamiast definiowac cala funckje możemy uzyc lambda żeby powiedziec programowi co ma robic
#lambda expresion
lambda argument_list: expression
>>def sum2(x,y):
>> return x + y
>>FirstletterFromString("Pawel")
P
>>reverse("Pawel")
'lewaP'
For example
>>import time
Then we can use methods and attributes for imported module
>>time.method_name()
>>time.attribure_name
>>import time
>>print (time.asctime()) #shows local time
>>print(time.timezone) #numer of second between utc and local time
Example:
>>From time import asctime
>>print(asctime())
Jezeli chcemy zaimportowac wiecej niz jedna metode mozemy je podac po przecinku
>>from module_name import method_name1, method_nameN
example:
>>form time import asctime, sleep
>>print(asctime())
>>sleep(3) #suspend execution of program for given number of seconds
>>print(asctime())
>>import time
>>dir(time)
>>import sys
>>for path in sys.path:
print(path)
/home/czajka/Desktop/Python_files
/home/czajka
/usr/bin
/usr/lib/python2.7
/usr/lib/python2.7/plat-linux2
/usr/lib/python2.7/lib-tk
/usr/lib/python2.7/lib-old
/usr/lib/python2.7/lib-dynload
/usr/local/lib/python2.7/dist-packages
/usr/lib/python2.7/dist-package
to add additional location where modules are located and from where they can be imprt
ted we need to manipulate the sys.path like any other list
>>import sys
>>sys.path.append('tu wpisujemy dodatkowa lokalizcje modulow')
#zeby sprawdzic czy dodatkowa lokalizacja modulow dodala sie poprawnie
>>for path in sys.path:
>> print(path)
We can also manipulae the PYTHONPATH environmental varaible i.e. windows dodatkowe
sciezki do modulow dodajemy po semicolon
PYTHONPATH = path1;pathN
Tworzenie wlasnego modulu to zapisanie kodu w postaci pliku .py potem musi tylko uzyc
import module_name i bedziemy mieli dostepne tam funckcie i metody
nasz modul musi byc zapisany w lokalizacji dla sys.path albo trzeba do sys.path dpdac
nowa sciezke
if we want to import program for moduel but we don't want that our main program execute
the imported one
Zapis:
if __name__ == '__main__'
wylacza wykonywanie funckcji podczas importu modulu az do czasu kiedy taka funckja
zostanie wywolana w nowym programie Normalnie podczas importu modulu wykonuja sie
zapisane w nim operacje / funkcje
OPERATORY
& lub .intersection() --- czesc wspolna
>>> a={1,2}
>>> b={2,3}
>>> a&b
{2}
>>> a.intersection(b)
{2}
>>> a|b
{1, 2, 3}
>>> a.union(b)
{1, 2, 3}
>>> a={1,2}
>>> b={2,3}
>>> a-b
{1}
>>> b-a
{3}
>>> a.difference(b)
{1}
---- exclusive or wartosc wystepujaca w jednym lub drugim zbiorze ale nie czesc wspolna
^ lub symmetric_difference()
>>> a^b
{1, 3}
>>> a.symmetric_difference(b)
{1, 3}
One set is subset of the other (all values from first subset are also in second one) <= or
.issubset()
>>> a <= b
False
>>> a.issubset(b)
False
Proper subset - second set have all the values from first set and more '< '
if case1:
perform action1
elif case2:
perform action2
else:
perform action3
>>> disaster=0
>>> disaster
0
>>> if disaster: \
... print("Zle")
... else:
... print("Dobrze")
Dobrze
>>> maly=1
>>> siersc=1
>>> if siersc:
... if maly:
... print("To jest kot")
... else:
... print("To jest niedziwiedz, uciekaj!")
... else:
... if maly:
... print("To jest skunks, uciekaj!")
... else:
... print("To jest czlowiek albo lysy niedziedz")
...
To jest kot
if kolor=='zielony': print('Groszek')\
elif kolor=='zolty': print('Banan')\
elif kolor=='czerwony': print('Pomidor')
Operatory porównań
równość == nierówność !=
mniejszy niz < mniejsz równy <=
wiekszy > wiekszy równy =>
zawiera sie – IN
False operators
WHILE
While test:
Code statement
Else:
Code statement
count =1
while count <= 5: ### Wazne zeby na koncu warunku bylo :
print (count)
count+=1
1
2
3
4
5
While test:
Code statement
If test:
Break
If test:
Continue
Else:
BREAK – to cancel loop, if we want to loop works until something occurs but we are not sure when
it might happen. BREAK works only in case of FOR loops, does not work for a WHILE loop !!!!
CONTINUE – skip ahead iteration in loop without break out of the loop, works for FOR loop,
doesn't work for WHILE loop
Read the integer provided by user (funkcja input), jak liczba parzysta wydrukuj to na ektanie,
jak liczba nieparzysta to podnies do potegi i wydrukuj. Jak chcesz zrezygnowac wcisnij q
Bardzo ważne są wcięcia tabulatorami w fukcjach if, jak nie bedzie wciecia to traktowane jak
opuszczenie sprawdzenia warunku lub opuszczenie petli !!!!
while True:
ELSE – if WHILE function ends normally (no break call) control passes to optional ELSE. You can
use ELSE if you are looking for something in WHILE loop and ends it as soon as it is found, the
ELSE would run if WHILE completed without break call
numbers=[1,2,5]
position = 0
numbers=[1,3,5]
position = 0
FOR – dla powtarzania iteracji, mozna wykonywac kolejne itreacji petli uzywaja FOR zamiast
while. FOR jest uzyteczne przy wykonywaniu kolejnych iteracji nie wiedzac jak duzy jest zbior
danych
1
2
3
4
5
puszek
maluszek
kicek
pimpuszek
=> None
String iteration with FOR
slowo ='kot'
for litera in slowo:
print(litera)
k
o
t
=> None
Dictionary iteration with FOR
karta1
karta3
karta2
AS PIK
Krol Kier
Dama Karo
('karta1', 'AS PIK')
('karta3', 'Krol Kier')
('karta2', 'Dama Karo')
SCOPES
4 scopes: local, enclosing function, global, biult-in
Local Scope – names assigned in any way within a fucntion (def or lambda) not declared global in that function
Enclosing function – name in the local scope of any and all enclosing functions (def or lambda) from inner to outer
Global – names assigned at the top-level of a module file or declared global in def within the file
Biult-in – names preasigned in the biult-in names modules like open, range
Built-in functions globals () and locals () check whether we are using global or local function
Cwiczenia
create a list of all numbers between 1 and 50 that are divisble by 3.
[x for x in range(1,51) if x%3 ==0]
st = 'Print every word in this sentence that has an even number of letters'
for word in st.split(' '):
if len(word)%2 ==0:
print("word >> " + word + " << has even number of characters")
Write a program that prints the integers from 1 to 100. But for multiples of three print "Fizz" instead of the
number, and for the multiples of five print "Buzz". For numbers which are multiples of both three and five print
"FizzBuzz".