Bazy danych, języki skryptowe i opisu danych
Laboratorium 2
W tym laboratorium przedstawione zostaną następujące zagadnienia:
podstawy programowania w języku Python, w szczególności:
tworzenie zmiennych i ich typy
wyświetlanie wartości
listy (tworzenie, modyfikacja, wyświetlanie, sortowanie)
krotki (tworzenie, wyświetlanie)
słowniki (tworzenie, modyfikacja, wyświetlanie)
instrukcja warunkowa if, elif, else
pętla for oraz pętla while
funkcje (tworzenie, wywołanie)
obsługa wyjątków - instrukcja try except
obsługa czasu (daty), losowe wartości i operacje matematyczne
obsługa plików tekstowych (zapis i odczyt)
klasy (tworzenie obiektów, wywoływanie metod)
instalacja dodatkowych pakietów
wirtualne środowisko programistyczne (tworzenie i używanie)
Treść zajęć
Podstawowe zmienne
zwróć uwagę, że typy są domniemane (pomaga to podczas pisania kodu, jednak w ogólności nie trzeba go podawać)
zmienna_int: int = 4
zmienna_float: float = 1.2
zmienna_bool: bool = True
zmienna_dowolnego_typu = 1234
print(zmienna_float) # wyświetlenie zmiennej
zmienna_float += 2.54 # dodanie do zmiennej float wartości
print(zmienna_float)
zmienna_str_a: str = 'Hello'
zmienna_str_b: str = "World"
print(zmienna_str_a + ' ' + zmienna_str_b + '!')
1.2
3.74
Hello World!
wprowadzanie danych do programu (przez terminal)
imie = input("(opcjonalnie) Podaj imie: ")
print(f'Witaj {imie}')
Witaj Adam
Listy
lista = [1, 'abcd', ['a', 2]]
print('Lista dowolnych zmiennych:', lista)
print('Dlugosc listy:', len(lista))
print('Dostep do elementu listy: ', lista[1])
lista[0] = 2 # modyfikacja elementu listy
print('Lista dowolnych zmiennych:', lista)
Lista dowolnych zmiennych: [1, 'abcd', ['a', 2]]
Dlugosc listy: 3
Dostep do elementu listy: abcd
Lista dowolnych zmiennych: [2, 'abcd', ['a', 2]]
lista = [100, 2, 3, 4, 9, 14]
print('Lista liczb calkowitych:', lista)
print('Ostatni element listy liczb calkowitych (indeks -1):', lista[-1])
print('Lista liczb calkowitych (indeksy od 1 do 3):', lista[1:3])
print('Lista liczb calkowitych (indeksy od 1 do konca):', lista[1:])
print('Lista liczb calkowitych (indeksy od 1 do konca - 1):', lista[1:-1])
lista.append(22) # dodanie wartosci do listy
del lista[2] # suwanie z listy
print('Lista liczb calkowitych (po dodaniu):', lista)
lista = sorted(lista)
print('Posortowana lista:', lista)
print('Suma wartosci:', sum(lista))
Lista liczb calkowitych: [100, 2, 3, 4, 9, 14]
Ostatni element listy liczb calkowitych (indeks -1): 14
Lista liczb calkowitych (indeksy od 1 do 3): [2, 3]
Lista liczb calkowitych (indeksy od 1 do konca): [2, 3, 4, 9, 14]
Lista liczb calkowitych (indeksy od 1 do konca - 1): [2, 3, 4, 9]
Lista liczb calkowitych (po dodaniu): [100, 2, 4, 9, 14, 22]
Posortowana lista: [2, 4, 9, 14, 22, 100]
Suma wartosci: 151
Krotki
krotka = (1.2, 2.3, 'dane')
print('Krotka:', krotka)
print('Element krotki (indeks 0):', krotka[0])
# krotka[0] = 1 # brak możliwości modyfikacji
Krotka: (1.2, 2.3, 'dane')
Element krotki (indeks 0): 1.2
Słowniki
slownik = {"imie": "Jan", "nazwisko": "Nowak", "wiek": 18}
print('Slownik:', slownik)
print('Element slownika (klucz imie):', slownik['imie'])
print('Czy slownik ma klucz wzrost:', 'wzrost' in slownik)
slownik['imie'] = 'Artur' # modyfikacja slownika
slownik['waga'] = 80 # dodanie do slownika
del slownik['nazwisko'] # usuwanie ze slownika
print('Slownik (po modyfikacji i dodaniu):', slownik)
Slownik: {'imie': 'Jan', 'nazwisko': 'Nowak', 'wiek': 18}
Element slownika (klucz imie): Jan
Czy slownik ma klucz wzrost: False
Slownik (po modyfikacji i dodaniu): {'imie': 'Artur', 'wiek': 18, 'waga': 80}
Instrukcje warunkowe
number = 5
if number >= 3:
print('W srodku if-a')
elif 3.5 <= number < 9:
print('W srodku elif-a')
else:
pass # nic nie rob
W srodku if-a
Pętle
pętla for
for i in range(4):
print('Petla for: ', i)
for i in range(4, 10):
if i in (5, 6):
continue
if i == 8:
break
print('Inna petla for: ', i)
Petla for: 0
Petla for: 1
Petla for: 2
Petla for: 3
Inna petla for: 4
Inna petla for: 7
pętla while
index = 5
while index > 0:
print('Petla while:', index)
index -= 1
Petla while: 5
Petla while: 4
Petla while: 3
Petla while: 2
Petla while: 1
użycie pętli z listami
lista = [1, 24, 4, 12, 52.4]
for i in range(len(lista)):
print('Element', i, 'na liscie:', lista[i])
for i in lista:
print('Element listy:', i)
for i, v in enumerate(lista):
print('Element', i, 'na liscie:', v)
Element 0 na liscie: 1
Element 1 na liscie: 24
Element 2 na liscie: 4
Element 3 na liscie: 12
Element 4 na liscie: 52.4
Element listy: 1
Element listy: 24
Element listy: 4
Element listy: 12
Element listy: 52.4
Element 0 na liscie: 1
Element 1 na liscie: 24
Element 2 na liscie: 4
Element 3 na liscie: 12
Element 4 na liscie: 52.4
Funkcje
def oblicz_sume(a, b):
return a + b
wynik = oblicz_sume(21, 5)
print('Suma 21 + 5:', wynik)
Suma 21 + 5: 26
def podnies_do_potegi(wartosc, wykladnik=2.0):
return pow(wartosc, wykladnik)
print('3 do kwadratu:', podnies_do_potegi(3))
print('2 do szescianu:', podnies_do_potegi(2, 3))
3 do kwadratu: 9.0
2 do szescianu: 8
lista = []
def dodaj_do_listy(lista, imie: str, nazwisko: str):
wpis = {
"imie": imie,
"nazwisko": nazwisko
}
lista.append(wpis)
wizytowka = 'Jestem ' + imie + ' ' + nazwisko
return lista, wizytowka
print(lista)
lista, nowa_osoba = dodaj_do_listy(lista, 'Jan', 'Nowak')
print('Lista:', lista)
print('Nowa osoba:', nowa_osoba)
[]
Lista: [{'imie': 'Jan', 'nazwisko': 'Nowak'}]
Nowa osoba: Jestem Jan Nowak
Obsługa wyjątków
try:
x = 10 / 0
except ZeroDivisionError:
x = 1e9
print(x)
1000000000.0
Użycie domyślnych pakietów
obsługa czasu
import datetime
teraz = datetime.datetime.now()
print('Czas:', teraz)
Czas: 2024-01-26 16:16:10.579890
wartości losowe
import random
losowa_wartosc = random.random()
print('Losowa wartosc:', losowa_wartosc)
Losowa wartosc: 0.7987674033653681
obliczenia matematyczne
import math
wynik = math.log10(0.4214)
print('log10(0.4214):', wynik)
log10(0.4214): -0.37530546872791865
Obsługa plików
plik = open('testowy.txt', 'w') # utworzenie pliku (otworzenie w trybie zapisu)
plik.write('dzien dobry') # dodanie dwóch słów do pliku
plik.close() # zamknięcie pliku
with open('testowy.txt', 'r') as plik:
print(plik.read()) # automatycznie zamyka plik
dzien dobry
import os
os.remove('testowy.txt') # usuwanie pliku
Klasy
class Student:
def __init__(self, imie):
self.imie = imie
self.wiek = 18
def przedstaw_sie(self):
print(f'Jestem {self.imie} mam {self.wiek} lat.')
def czy_pelnoletni(self):
return self.wiek >= 18
def zmien_wiek(self, wiek):
self.wiek = wiek
student_a = Student(imie='Jan')
student_a.przedstaw_sie()
student_a.wiek = 30
student_a.przedstaw_sie()
student_b = Student('Kasia')
student_b.przedstaw_sie()
Jestem Jan mam 18 lat.
Jestem Jan mam 30 lat.
Jestem Kasia mam 18 lat.
Wirtualne środowisko programowania
wirtualne środowisko to lokalna "kopia" określonej wersji Python wraz z dodatkowymi zainstalowanymi pakietami
tworzymy wirtualne środowisko przez (nazwa wirtualnego środowiska to w tym przypadku "venv")
python -m venv venv
aktywujemy wirtualne środowisko przez
na Linuxie
source venv/bin/activate
na Windowsie
venv\Scripts\activate
VS Code (i inne IDE) pozwalają na wybór wirtualnego środowiska przez GUI
sprawdzamy zainstlowane pakiety przez
pip freeze
instalujemy pakiety przez
pip install nazwa_pakietu
# do uruchmienia tego kodu niezbędna jest instalacja "numpy"
import numpy as np
x_data = np.ones((9, 1))
y_data = np.linspace(0.0, 14, 9)
print('x_data:')
print(x_data)
print('y_data:')
print(y_data)
print('x_data * y_data (transponowane):')
print(x_data * np.transpose(y_data))
x_data:
[[1.]
[1.]
[1.]
[1.]
[1.]
[1.]
[1.]
[1.]
[1.]]
y_data:
[ 0. 1.75 3.5 5.25 7. 8.75 10.5 12.25 14. ]
x_data * y_data (transponowane):
[[ 0. 1.75 3.5 5.25 7. 8.75 10.5 12.25 14. ]
[ 0. 1.75 3.5 5.25 7. 8.75 10.5 12.25 14. ]
[ 0. 1.75 3.5 5.25 7. 8.75 10.5 12.25 14. ]
[ 0. 1.75 3.5 5.25 7. 8.75 10.5 12.25 14. ]
[ 0. 1.75 3.5 5.25 7. 8.75 10.5 12.25 14. ]
[ 0. 1.75 3.5 5.25 7. 8.75 10.5 12.25 14. ]
[ 0. 1.75 3.5 5.25 7. 8.75 10.5 12.25 14. ]
[ 0. 1.75 3.5 5.25 7. 8.75 10.5 12.25 14. ]
[ 0. 1.75 3.5 5.25 7. 8.75 10.5 12.25 14. ]]