#!/usr/bin/env python # coding: utf-8 # # Podstawy Pythona: cz. 1 # #   # # ## 26 stycznia 2019 # In[ ]: contractions_expansions = {"don't": "do not"} sentence = "I'd guess that it's Frank Sinatra." sentence = sentence.replace(' \'', '\'') sentence = sentence.replace(' n\'t', 'n\'t') words = sentence.split() for i in range(len(words)): for contraction, expansion in contractions_expansions.items(): if contraction == words[i]: words[i] = expansion sentence = ' '.join(words) # In[ ]: print('Hello Python') # In[4]: print('Hello') print('Python') print('Hello', 'Python', '!') # Typy proste: # * liczby całkowite: `int`, np. `3`, `1000`, `-100`, `0` # * liczby rzeczywiste: `float`: `3.14`, `5.0`, `-0.001` # * napisy: `str`: `"Python"`, `"Rock'n'Roll"`, `'zalicznie z przedmiotu'` # * logiczne `bool`, `True`, `False` # * None: `None` # In[6]: print(10) print(1000.0) print (100, 100.0, "Sto") print("Zaokrąglenie PI:", 3.141519) # In[4]: print(type(100)) print(type(20.5)) print(type("okno")) print(type(None)) # Operacje arytmetyczne na liczbach: # * dodawanie `+`, np. `2 + 3` # * odejmowanie `-`, np. `10-9` # * mnożenie `*`, np. `2.0 * 3.0` # * dzielenie `/`, np. `3 / 4` ( == 0.75) # * dzielenie całkowite `//`, `3 / 4` ( == 0) # * potęgowanie `**`, np. `10 ** 3` ( == 1000) # In[15]: print(1 + 2 - 3) print("2 ** 10", "=", 2 ** 10) print(1 + 2 - 3 + (4 * 5) / 6 ** 2) # Operacje na napisach: # * konkatenacja `+`, np. `"Tarnowo " + "Podgórne"` # * wielokrotność: `*`, np. `"O" * 6` ("OOOOOO") # In[16]: print("N" + "o" * 10 + '!') # Konwersja typów: # In[24]: print(int("100") * 2) print(str(100) * 2) print(float(100) * 2) print(bool("Fałsz")) # ## Zmienne # * case sensitive, # * brak deklaracji typu, # * do zmiennej można przypisać wszystko. # In[2]: user = "t.dwojak" domain = "amu.edu.pl" email = user + "@" + domain print("email:", email) # ## 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ę") # # Podstawy cz. 2 # ## Listy # * W Pythonie nie ma tablic, są listy; # * Listy mogą przechowywać elementy różnych typów; # * Indeksowanie zaczyna się od 0. # * Funkcja `len` zwraca liczbę elementów listy # In[32]: x = [] # albo równoważnie pusta_lista = list() oceny = [5, 4, 3, 5, 5] roznosci = [3.14, "pi", ["pi"], 3] list_0_9 = list(range(10)) print("Liczba elementów", len(oceny)) # In[33]: print(oceny) print(oceny[1]) # ## Dodawanie i usuwanie elementów z listy # # Istnieją dwie metody: # * `append(x)`: dodaje x na koniec listy # * `extend(x)`: rozszerza listę o każdy element z x # In[13]: engines = [] engines.append('duck-duck-go') engines.append("yahoo") print(engines) # In[9]: m = ["google", 'bing'] m.extend(l) print(m) # In[15]: liczby = [1,2,3,2,3,1,2,4] liczby.pop() # Domyślnie usuwa ostatni element z listy liczby.remove(2) print(liczby) # Inne przydatne metody: # * `sort()`: sortuje listę rosnąco # * `count(x)`: zlicza wystąpienia x w liście # * `index(x)`: zwraca indeks pierwszego wystąpienia x # In[20]: liczby = [1,2,3,2,3,1,2,4] print(liczby.count(1)) print(liczby.index(4)) liczby.sort() print(liczby) # ## Indeksowanie # In[21]: oceny = [1, 3, 2, 3, 1, 2, 4] 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[1:6:2]) print('od tyłu', oceny[::-1]) # ## 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[22]: n = 3 for i in range(n): print('element', i) # In[23]: l = ["jeden", "dwa", "trzy"] for item in l: print(item) # In[24]: kwadraty = [] for i in range(10): kwadraty.append(i ** 2) print(kwadraty) # ## Słowniki: `dict` # In[25]: slownik = {} s_oceny = {"Justyna" : [5,5,5], "Bartek" : [3,4,5], "Ola": [3,3,3]} print(s_oceny) # In[26]: s_oceny["Jan"] = [3,4,5] print(s_oceny) # ## Iterowanie po słowniku # In[27]: 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[30]: zmienna = int(input("Podaj liczbe:\n")) if zmienna < 0: print("Ujemna!") elif zmienna > 0: print("Dodatnia") else: print("Zero!") # ## Przydatne warunki # # * Porównanie za pomocą `==` # * znak różności: `!=` # * Sprawdzenie, czy coś jest w liście: `item in l` # * Do łączenia warunków służą słowa klucznowe `and` i `or` # In[ ]: if "Ala" in s_oceny: print("Ala jest w grupie!") else: print("Niestety Ali nie ma grupie!") # # Łańcuchy znakowe # In[ ]: napis = "Wiadomość" print(napis) # In[ ]: for znak in napis: print(znak, ord(znak)) # In[ ]: slowa = ['Bardzo' , 'ważna', 'wiadomość'] print(' '.join(slowa)) # In[ ]: if 'dom' in napis: print(True) else: print(False) # 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? # ## 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))