19 KiB
19 KiB
Podstawy Pythona: cz. 1
26 stycznia 2019
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)
print('Hello Python')
print('Hello')
print('Python')
print('Hello', 'Python', '!')
Hello Python 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
print(10)
print(1000.0)
print (100, 100.0, "Sto")
print("Zaokrąglenie PI:", 3.141519)
10 1000.0 100 100.0 Sto Zaokrąglenie PI: 3.141519
print(type(100))
print(type(20.5))
print(type("okno"))
print(type(None))
<class 'int'> <class 'float'> <class 'str'> <class 'NoneType'>
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)
print(1 + 2 - 3)
print("2 ** 10", "=", 2 ** 10)
print(1 + 2 - 3 + (4 * 5) / 6 ** 2)
0 2 ** 10 = 1024 0.5555555555555556
Operacje na napisach:
- konkatenacja
+
, np."Tarnowo " + "Podgórne"
- wielokrotność:
*
, np."O" * 6
("OOOOOO")
print("N" + "o" * 10 + '!')
Noooooooooo!
Konwersja typów:
print(int("100") * 2)
print(str(100) * 2)
print(float(100) * 2)
print(bool("Fałsz"))
200 100100 200.0 True
Zmienne
- case sensitive,
- brak deklaracji typu,
- do zmiennej można przypisać wszystko.
user = "t.dwojak"
domain = "amu.edu.pl"
email = user + "@" + domain
print("email:", email)
email: t.dwojak@amu.edu.pl
Komentarze
- Komentarze nie są interpretowane.
- Komentarze w Pythonie zaczynają się od znaku '#'
- Istnieją komentarze wielolinijkowe tagowane potrójnym ", czyli """ """
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
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))
Liczba elementów 5
print(oceny)
print(oceny[1])
[5, 4, 3, 5, 5] 4
Dodawanie i usuwanie elementów z listy
Istnieją dwie metody:
append(x)
: dodaje x na koniec listyextend(x)
: rozszerza listę o każdy element z x
engines = []
engines.append('duck-duck-go')
engines.append("yahoo")
print(engines)
['duck-duck-go', 'yahoo']
m = ["google", 'bing']
m.extend(l)
print(m)
['google', 1, 'sto']
liczby = [1,2,3,2,3,1,2,4]
liczby.pop() # Domyślnie usuwa ostatni element z listy
liczby.remove(2)
print(liczby)
[1, 3, 2, 3, 1, 2]
Inne przydatne metody:
sort()
: sortuje listę rosnącocount(x)
: zlicza wystąpienia x w liścieindex(x)
: zwraca indeks pierwszego wystąpienia x
liczby = [1,2,3,2,3,1,2,4]
print(liczby.count(1))
print(liczby.index(4))
liczby.sort()
print(liczby)
2 7 [1, 1, 2, 2, 2, 3, 3, 4]
Indeksowanie
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])
pierwszy element: 1 ostatni element: 4 5 pierwszych: [1, 3, 2, 3, 1] 5 ostatnich [2, 3, 1, 2, 4] od drugiego, do piątego [3, 2, 3, 1] parzyste: [3, 3, 2] od tyłu [4, 2, 1, 3, 2, 3, 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).
n = 3
for i in range(n):
print('element', i)
element 0 element 1 element 2
l = ["jeden", "dwa", "trzy"]
for item in l:
print(item)
jeden dwa trzy
kwadraty = []
for i in range(10):
kwadraty.append(i ** 2)
print(kwadraty)
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
Słowniki: dict
slownik = {}
s_oceny = {"Justyna" : [5,5,5], "Bartek" : [3,4,5], "Ola": [3,3,3]}
print(s_oceny)
{'Justyna': [5, 5, 5], 'Bartek': [3, 4, 5], 'Ola': [3, 3, 3]} {'Justyna': [5, 5, 5], 'Bartek': [3, 4, 5], 'Ola': [3, 3, 3], 'Jan': [3, 4, 5]}
s_oceny["Jan"] = [3,4,5]
print(s_oceny)
{'Justyna': [5, 5, 5], 'Bartek': [3, 4, 5], 'Ola': [3, 3, 3], 'Jan': [3, 4, 5]}
Iterowanie po słowniku
for osoba in s_oceny:
print(osoba,':', s_oceny[osoba])
Justyna : [5, 5, 5] Bartek : [3, 4, 5] Ola : [3, 3, 3] Jan : [3, 4, 5]
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...;
zmienna = int(input("Podaj liczbe:\n"))
if zmienna < 0:
print("Ujemna!")
elif zmienna > 0:
print("Dodatnia")
else:
print("Zero!")
Podaj liczbe: 3
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
ior
if "Ala" in s_oceny:
print("Ala jest w grupie!")
else:
print("Niestety Ali nie ma grupie!")
Łańcuchy znakowe
napis = "Wiadomość"
print(napis)
for znak in napis:
print(znak, ord(znak))
slowa = ['Bardzo' , 'ważna', 'wiadomość']
print(' '.join(slowa))
if 'dom' in napis:
print(True)
else:
print(False)
text = "Bardzo ważna wiadomość"
print(text.split(' '))
text = "Nie wszyscy lubią spacje na końcu linii. "
print(text)
print(text.strip(' '))
Pytania?
Funkcje
def is_greater_than_5(x):
if x > 5:
return True
else:
return False
print(is_greater_than_5(5))
print(is_greater_than_5(-100))
print(is_greater_than_5(500))