# zacznijmy od porownań
# czy zero jest mniejsze niż jeden
print('0 < 1 : ',0 < 1) #True
# czy zero jest większe niż jeden
print('0 > 1 : ',0 > 1) #False
# czy zero jest mniejsze lub równe jeden
print('0 <= 1 : ',0 <= 1) #True
# czy zero jest większe lub równe jeden
print('0 >= 1 : ',0 >= 1) #False
# czy jeden jest równe zero
print('1 == 0 : ',1 == 0) #False
# czy jeden jest rowne jeden
print('1 == 1 : ',1 == 1) #True
# czy jeden jest różne od zera
print('1 != 0 : ',1 != 0) #True
# czy jeden jest rózne od jeden
print('',1!= 1) #False
0 < 1 : True 0 > 1 : False 0 <= 1 : True 0 >= 1 : False 1 == 0 : False 1 == 1 : True 1 != 0 : True False
# typ logiczny traktowany jako całkowity True =1, False =0
print('True + True = ',True + True, type(True + True))
print('True - False = ',True - False,type(True + True))
print('True * False = ',True * False,type(True + True))
print('True / False =',True / False,type(True + True)) # ZeroDivisionError: division by zero
True + True = 2 <class 'int'> True - False = 1 <class 'int'> True * False = 0 <class 'int'>
--------------------------------------------------------------------------- ZeroDivisionError Traceback (most recent call last) <ipython-input-2-6b7cbeb8d79f> in <module>() 7 print('True * False = ',True * False,type(True + True)) 8 ----> 9 print('True / False =',True / False,type(True + True)) # ZeroDivisionError: division by zero ZeroDivisionError: division by zero
# typ logiczny traktowany jako całkowity True =1, False =0
print('True and True = ',True and True, type(True and True))
print('True or False = ',True or False,type(True or True))
print('not False = ',not False,type(not False))
print('not True =',not True,type(not True))
True and True = True <class 'bool'> True or False = True <class 'bool'> not False = True <class 'bool'> not True = False <class 'bool'>
# instrukcja warunkowa if
# wykona się jeśli wartość logiczna warunku jest prawdziwa
if True:
print('Prawda jest najważniejsza\n')
# nie wykona się jeśli wartość logiczna warunku jest fałszywa
if False:
print('Ta instrukcja się nie wykona.')
# wykonanie polecenia1 jeśli warunek jest prawdziwy a polecenie2 jeśli falszywy
'''
if ( warunek ):
polecenie1
else:
polecenie2
'''
a=100
if a<50:
print('a jest mniejsze niż 50')
else:
print('a jest większe lub równe 50')
Prawda jest najważniejsza a jest większe lub równe 50
a=53
# instrukcja warunkowa z elif i else
if a > 50:
# to się wykona jeśli warunek jest prawdziwy
print("a jest większe niż 50")
elif a == 50:
# w przeciwnym przypadku, jeśli warunek jest prawdziwy
print("a jest równe 50")
else:
# w pozostałych przypadkach
print("a jest mniejsze niż 50")
a=50
# instrukcja warunkowa z elif i else
if a > 50:
# to się wykona jeśli warunek jest prawdziwy
print("a jest większe niż 50")
elif a == 50:
# w przeciwnym przypadku, jeśli warunek jest prawdziwy
print("a jest równe 50")
else:
# w pozostałych przypadkach
print("a jest mniejsze niż 50")
a=47
# instrukcja warunkowa z elif i else
if a > 50:
# to się wykona jeśli warunek jest prawdziwy
print("a jest większe niż 50")
elif a == 50:
# w przeciwnym przypadku, jeśli warunek jest prawdziwy
print("a jest równe 50")
else:
# w pozostałych przypadkach
print("a jest mniejsze niż 50")
a jest większe niż 50 a jest równe 50 a jest mniejsze niż 50
# wykorzystanie funkcji input
print("Podaj liczbę:", end=' ')
raw_x = input() # pobieramy napis z wejścia standardowego (klawiatury)
x = eval(raw_x) # próba interpretacji napisu tak jak wyrażenia języka Python
print('Wprowadzona liczba w stanie surowym: ',raw_x,type(raw_x),' Po ewaluacji :',x, type(x))
if x<10:
print('Wprowadzona liczba jest mniejsza niż 10')
elif x == 10:
# w przeciwnym przypadku, jeśli warunek jest prawdziwy
print("Wprowadzona liczba jest równa 10")
else:
# w pozostałych przypadkach
print("Wprowadzona liczba jest większa niż 10")
Podaj liczbę: 11 Wprowadzona liczba w stanie surowym: 11 <class 'str'> Po ewaluacji : 11 <class 'int'> Wprowadzona liczba jest większa niż 10
# iteracja po liczbach całkowitych
for licznik in (1,2,3,4):
print('liczni k= ',licznik)
# iteracja po elementach napisu
napis1='Ala ma kota'
for litera in (range(len(napis1))):
print ('Litera = ', napis1[litera])
# iteracja po liście
owoce = ['gruszka', 'jabłko', 'śliwka']
for owoc in range(len(owoce)):
print ('Owoc =',owoce[owoc] )
# petla for z dodatkowa klauzula else: na koncu
for licznik in range(1,11):
print('licznik =',licznik)
else:
print('Koniec i bomba!')
for licznik in range(10) :
print('licznik = ',licznik,' ',end='\n')
else:
print('Koniec i bomba!')
liczni k= 1 liczni k= 2 liczni k= 3 liczni k= 4 Litera = A Litera = l Litera = a Litera = Litera = m Litera = a Litera = Litera = k Litera = o Litera = t Litera = a Owoc = gruszka Owoc = jabłko Owoc = śliwka licznik = 1 licznik = 2 licznik = 3 licznik = 4 licznik = 5 licznik = 6 licznik = 7 licznik = 8 licznik = 9 licznik = 10 Koniec i bomba! licznik = 0 licznik = 1 licznik = 2 licznik = 3 licznik = 4 licznik = 5 licznik = 6 licznik = 7 licznik = 8 licznik = 9 Koniec i bomba!
# figura 1
for i in range(10):
print(str(i) * i)
1 22 333 4444 55555 666666 7777777 88888888 999999999
# https://www.w3resource.com/python-exercises/python-conditional-exercise-17.php
# małe ćwiczenie nd dwie petle for wraz z instrukcjami warunkowymi
result_str="";
for row in range(0,7):
for column in range(0,7):
if (((column == 1 or column == 5) and row != 0) or ((row == 0 or row == 3) and (column > 1 and column < 5))):
result_str=result_str+"*"
else:
result_str=result_str+" "
result_str=result_str+"\n"
print(result_str);
*** * * * * ***** * * * * * *
# wykonuj blok instrukcji dopóki warunek jest spełniony
#while warunek:
# instrukcje
i=0
while i<5: # dopoki warunek jest prawdziwy
print('Iteracja : ',i)
i=i+1
Iteracja : 0 Iteracja : 1 Iteracja : 2 Iteracja : 3 Iteracja : 4
# z dodaniem else:
i=0
while i<5: # dopoki warunek jest prawdziwy
print('Iteracja : ',i)
i=i+1
else: # wykona się na koncu petli
print('Koniec pętli.')
Iteracja : 0 Iteracja : 1 Iteracja : 2 Iteracja : 3 Iteracja : 4 Koniec pętli.
# działa nawet dla pustej petli
i=0
while i>5: # dopoki warunek jest prawdziwy, w tym przypadku nigdy
print('Iteracja : ',i)
i=i+1
else: # wykona się na koncu petli
print('Koniec pustej pętli.')
Koniec pustej pętli.
break - przerwij pętlę
continue - przerwij obecną iterację
pass - nie rób nic
else - wykonuj jeśli pętla zakończyła się inaczej niż break
for i in range(1,6): # od 1 do 5
if i>3: # nie wykona się Iteracja dla i : 4,5
break
print('Iteracja dla i :',i)
Iteracja dla i : 1 Iteracja dla i : 2 Iteracja dla i : 3
for i in range(1,6): # od 1 do 5
if i%2==0:
continue # pomijamy parzyste i
print('Iteracja dla i :',i)
Iteracja dla i : 1 Iteracja dla i : 3 Iteracja dla i : 5
for i in range(1,6): # od 1 do 5
if i%2==0:
pass # nic nie rób
print('Iteracja dla i :',i)
Iteracja dla i : 1 Iteracja dla i : 2 Iteracja dla i : 3 Iteracja dla i : 4 Iteracja dla i : 5
for i in range(1,11): # od 1 do 10
if i%2==0:
pass # nic nie rób
else: # wykona się dla nieparzystych i
print('Iteracja dla i :',i)
Iteracja dla i : 1 Iteracja dla i : 3 Iteracja dla i : 5 Iteracja dla i : 7 Iteracja dla i : 9
# wykonanie instrukcji na końcu pętli
for i in range(1,6): # od 1 do 5
if i%2==0:
pass # nic nie rób
print('Iteracja dla i :',i)
else:
print('Koniec pętli.')
Iteracja dla i : 1 Iteracja dla i : 2 Iteracja dla i : 3 Iteracja dla i : 4 Iteracja dla i : 5 Koniec pętli.
# Przyklad petli for z else, który nie zostanie wykonany .
for i in range(1,11): # od 1 do 10
if i%2==0:
pass # nic nie rób
print('Iteracja dla i :',i)
if i%5==0: # konczymy na i=5
break
else: # ta czesc nie wykona się
print('Koniec pętli.')
Iteracja dla i : 1 Iteracja dla i : 2 Iteracja dla i : 3 Iteracja dla i : 4 Iteracja dla i : 5
# importowanie pakietu
import this
The Zen of Python, by Tim Peters Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Complex is better than complicated. Flat is better than nested. Sparse is better than dense. Readability counts. Special cases aren't special enough to break the rules. Although practicality beats purity. Errors should never pass silently. Unless explicitly silenced. In the face of ambiguity, refuse the temptation to guess. There should be one-- and preferably only one --obvious way to do it. Although that way may not be obvious at first unless you're Dutch. Now is better than never. Although never is often better than *right* now. If the implementation is hard to explain, it's a bad idea. If the implementation is easy to explain, it may be a good idea. Namespaces are one honking great idea -- let's do more of those!
# Dokumentacja danego pakietu/modułu
help(this)
Help on module this: NAME this MODULE REFERENCE https://docs.python.org/3.6/library/this The following documentation is automatically generated from the Python source files. It may be incomplete, incorrect or include features that are considered implementation detail and may vary between Python implementations. When in doubt, consult the module reference at the location listed above. DATA c = 97 d = {'A': 'N', 'B': 'O', 'C': 'P', 'D': 'Q', 'E': 'R', 'F': 'S', 'G': ... i = 25 s = "Gur Mra bs Clguba, ol Gvz Crgref\n\nOrnhgvshy vf o...bar ubaxvat ... FILE /home/nbuser/anaconda3_501/lib/python3.6/this.py
# lista obiektów, które zawiera dany pakiet
dir(this)
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'c', 'd', 'i', 's']
# wyswietlenie zawartości jednego z nich
# odwołanie w formacie nazwapa_pkietu.nazwa_obiektu
print('this.c = ',this.c,' type :', type(this.c))
this.c = 97 type : <class 'int'>
# Podczas importu pakietu można uzyc aaliasu
import this as zp
# dostep do zmiennej c formacie nazwa_aliasu.nazwa_obiektu
print('zp.c = ',zp.c,' type :', type(zp.c))
# dostep z poprzedniego importu bez aliasu
print('this.c = ',this.c,' type :', type(this.c))
zp.c = 97 type : <class 'int'> this.c = 97 type : <class 'int'>
import sys
# usuwamy załadowany pakiet math
del sys.modules['math']
# importujemy go ponownie
import math as m
# dostep do wartości PI i E
print('m.pi = ',m.pi,' type :', type(m.pi)) #m.pi = 3.141592653589793 type : <class 'float'>
print('m.e = ',m.e,' type :', type(m.e)) # m.e = 2.718281828459045 type : <class 'float'>
# dostep bez podania aliasu
print('this.c = ',math.pi,' type :', type(math.pi)) # NameError: name 'math' is not defined
m.pi = 3.141592653589793 type : <class 'float'> m.e = 2.718281828459045 type : <class 'float'>
--------------------------------------------------------------------------- NameError Traceback (most recent call last) <ipython-input-24-c4f65d516bdb> in <module>() 9 # dostep bez podania aliasu 10 ---> 11 print('this.c = ',math.pi,' type :', type(math.pi)) # NameError: name 'math' is not defined NameError: name 'math' is not defined
# czesto wykorzystujemy aliasy przy imporcie znanych pakietow
import pandas as pd
# wersja pakietu pd
print (pd.__version__) # 0.20.3
# gdzie został zainstalowany pakiet
print(pd) # <module 'pandas' from '/home/nbuser/anaconda3_501/lib/python3.6/site-packages/pandas/__init__.py'>
import numpy as np
# wersja pakietu np
print (np.__version__) # 1.15.1
# gdzie został zainstalowany
print(np)
# import podmodułu pyplot z pakietu patplotlib jako alias plt
import matplotlib.pyplot as plt
%matplotlib inline
# Proste demo
# generowanie 100 pseudolosowych liczb
liczby=np.random.rand(100,1)
# budowa histogramu
plt.hist(liczby)
# wyswietlenie
plt.show()
0.20.3 <module 'pandas' from '/home/nbuser/anaconda3_501/lib/python3.6/site-packages/pandas/__init__.py'> 1.15.1 <module 'numpy' from '/home/nbuser/anaconda3_501/lib/python3.6/site-packages/numpy/__init__.py'>
# importowanie z pakietu this wyłącznie zmiennej c
from this import c
print('c = ',c,' type :', type(c))
# importowanie z pakietu this wszystkich obiektow
# nie jest to polecane, gdzyż skutecznie zaśmieci
# nam globalna przestrzeń nazw
c=15.0
print('c = ',c,' type :', type(c))
from this import *
# zmienna c została nadpisana wartością 97 z pakietu
print('c = ',c,' type :', type(c))
c = 97 type : <class 'int'> c = 15.0 type : <class 'float'> c = 97 type : <class 'int'>
# co jeśli brakuje nam zainstalowanego pakietu
# importujemy pakiet folium do wizualizacji map
import folium # ModuleNotFoundError: No module named 'folium'
# pakiet nie został zainstalowany
--------------------------------------------------------------------------- ModuleNotFoundError Traceback (most recent call last) <ipython-input-29-e188466ce0bb> in <module>() 2 # importujemy pakiet folium do wizualizacji map 3 ----> 4 import folium ModuleNotFoundError: No module named 'folium'
# instalacja pakietu folium
# wykorzystujemy instalato pip dostepny z poziomu Pythona
!pip install folium
Collecting folium Using cached https://files.pythonhosted.org/packages/88/89/8186c3441eb2a224d2896d9a8db6ded20ddd225f109e6144494a9893a0c1/folium-0.6.0-py3-none-any.whl Requirement already satisfied: requests in /home/nbuser/anaconda3_501/lib/python3.6/site-packages (from folium) (2.19.1) Requirement already satisfied: six in /home/nbuser/anaconda3_501/lib/python3.6/site-packages (from folium) (1.11.0) Requirement already satisfied: numpy in /home/nbuser/anaconda3_501/lib/python3.6/site-packages (from folium) (1.15.1) Requirement already satisfied: branca>=0.3.0 in /home/nbuser/anaconda3_501/lib/python3.6/site-packages (from folium) (0.3.0) Requirement already satisfied: jinja2 in /home/nbuser/anaconda3_501/lib/python3.6/site-packages (from folium) (2.9.6) Requirement already satisfied: certifi>=2017.4.17 in /home/nbuser/anaconda3_501/lib/python3.6/site-packages (from requests->folium) (2017.7.27.1) Requirement already satisfied: chardet<3.1.0,>=3.0.2 in /home/nbuser/anaconda3_501/lib/python3.6/site-packages (from requests->folium) (3.0.4) Requirement already satisfied: idna<2.8,>=2.5 in /home/nbuser/anaconda3_501/lib/python3.6/site-packages (from requests->folium) (2.6) Requirement already satisfied: urllib3<1.24,>=1.21.1 in /home/nbuser/anaconda3_501/lib/python3.6/site-packages (from requests->folium) (1.23) Requirement already satisfied: MarkupSafe>=0.23 in /home/nbuser/anaconda3_501/lib/python3.6/site-packages (from jinja2->folium) (1.0) Installing collected packages: folium Successfully installed folium-0.6.0
'''pojdzmy krok dalej i zbudujmy prosty mechanizam wykrywający
ze dany pakiet nie jest zainstalowany '''
import sys
# sprawdzenie czy dany pakiet został zainstalowany
if not 'folium' in sys.modules:
# instalujemy pakiet
!pip install folium
# importujemy pakietu
import folium
# sprawdzamy jego wersje
print ('Folium version :',folium.__version__)
Folium version : 0.6.0