# coding: utf-8

# # Ogólne wprowadzenie do Pythona
# 
#  
# 
# ##  19 Listopada 2017

# ## Hello Python!

# In[ ]:


print('Hello Python')


# In[ ]:


print('Hello Python')
print(10) 
print(3.14)
print(123456789 * 987654321)
print(10 ** 20)
print(12 ** (3 + 4 * (567 % 8) / 9))
print("PI",  "jest równe ", 3.1415)


# ## Komentarze
#  * Komentarze nie są interpretowane.
#  * Komentarze w Pythonie zaczynają się od znaku '#'
#  * Istnieją komentarze wielolinijkowe tagowane potrójnym ", czyli """ """
# 

# In[ ]:


print("Bardzo ważna wiadomość") # A to jest komentarz
"""
Komentarz
wielo-
linijkowy
"""
# print("Nie chcę być wydrukowanym")
print("A teraz chcę")


# ## Zmienne
#  * case sensitive,
#  * brak deklaracji typu,
#  * do zmiennej można pezypisać wszystko.

# In[ ]:


zmienna = "Zmienna"
zmienna = 10 ** 44
ocena_z_pythona = 5
pi = 3.1415
imie_prowadzacego = 'Tomek'
nazwisko_prowadzego = "Dwojak"
czy_lubie_pythona = True # False 
nic = None


# In[ ]:


lucky_number = 7
lucky_number +=8
lucky_number = lucky_number / 3
print(lucky_number)


# In[ ]:


print(type(ocena_z_pythona))
print(type(pi))
print(type(imie_prowadzacego))
print(type(nazwisko_prowadzego))
print(type(czy_lubie_pythona))


# ## Listy
#  * W Pythonie nie ma tablic, są listy;
#  * Listy mogą przechowywać elementy różnych typów;
#  * Indeksowanie zaczyna się od 0.

# In[ ]:


pusta_lista = [] # albo równoważnie pusta_lista = list()
oceny = [5, 4, 3, 5, 5]
roznosci = [3.14, "pi", ["pi"], 3]
ciag_10_elem = range(10)

print("ciąg:", ciag_10_elem)
print("rożności:", roznosci)


# ## Dodawanie i usuwanie elementów z listy

# In[ ]:


oceny.append(4) # Dodanie elementu na koniec
print(oceny)


# In[ ]:


oceny.extend([4,4,4]) # Rozszerzenie o inną listę
print(oceny)


# In[ ]:


oceny.pop(4) # Domyślnie usuwa ostatni element z listy
print(oceny)


# ## Indeksowanie

# In[ ]:


print(oceny)
print('pierwszy element:', oceny[0])
print('ostatni element:', oceny[-1])
print('5 pierwszych:', oceny[:5])
print('5 ostatnich', oceny[-5:])
print('od drugiego, do piątego', oceny[1:5])
print('parzyste:', oceny[::2])
print('od tyłu', oceny[::-1])


# ## Co możemy zrobić z listą?

# In[ ]:


oceny.sort()
print(oceny)
oceny.reverse()
print("liczba piątek", oceny.count(5))


# ## Pętla typu ```for```
#  * W Pythonie pętla *for* działa jak pętla *for each* w innych językach;
#  * W Pythonie nie ma klamr, ani *begin* i *end*; jako ciało pętli musi być wcięte (najcześciej 4 spacje).

# In[1]:


for i in range(5):# range[5] = [0,1,2,3,4]
    print('element:', i) # Uwaga wcięcie!
    print('sqr:', i **2) # Uwaga wcięcie!


# Schemat:

# In[ ]:


for zmienna in lista:
    # operacje do wykonania w pętli


# In[ ]:


for ocena in oceny:
    print("Ocena:", ocena)


# ## Lista kwadratów

# In[ ]:


kwadraty = []
for i in range(10):
    kwadraty.append(i ** 2)
print(kwadraty)
print(kwadraty[5])


# ## Słowniki, czyli mapy

# In[ ]:


slownik = {}
s_oceny = {"Justyna" : [5,5,5], "Bartek" : [3,4,5], "Ola": [3,3,3]}
print(s_oceny)
s_oceny[1234567890] = [3,4,5]
#print("ADAM:", s_oceny["Adam"])
print(s_oceny)


# In[ ]:


s_oceny['Ala'] = [2,2,2,4,4,4,3,3,3]
print(s_oceny)


# ## Iterowanie po słowniku

# In[ ]:


for osoba in s_oceny:
    print(osoba,':', s_oceny[osoba])


# In[ ]:


for osoba, oceny in s_oceny.items():
    print(osoba,':', oceny)


# ## Instrukcja sterująca ```if ... else```

#  * działa tak samo, jak w innych języka;
#  * jest dodatkowa instrukcja następnego warunku *elif...*;

# In[ ]:


zmienna = 7
if zmienna < 0:
    print("Ujemna!")
elif zmienna == 0:
    print("Zero!")


# In[ ]:


if "Ala" in s_oceny:
    print("Ala jest w grupie!")
else:
    print("Niestety Ali nie ma  grupie!")


# ## Funkcje

# In[ ]:


def is_greater_than_5(x):
    if x > 5:
        return True
    else:
        return False


# In[ ]:


print(is_greater_than_5(5))
print(is_greater_than_5(-100))
print(is_greater_than_5(500))


# # Łańcuchy znakowe

# In[ ]:


napis = "Wiadomość"
print(napis)


# In[ ]:


for znak in napis:
    print(znak, ord(znak))


# In[ ]:


if 'dom' in napis:
    print(True)
else:
    print(False)


# In[ ]:


slowa = ['Bardzo' , 'ważna', 'wiadomość']
print(' '.join(slowa))


# In[ ]:


text = "Bardzo ważna wiadomość"
print(text.split(' '))


# In[ ]:


text = "Nie wszyscy lubią spacje na końcu linii.       "
print(text)
print(text.strip(' '))


# # Pytania?