Python2019/labs01/podstawy.ipynb

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 listy
  • extend(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ąco
  • count(x): zlicza wystąpienia x w liście
  • index(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 i or
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))