W Pythonie mamy wiele różnych typów zmiennych, np.:
- numeryczne – int lub float
- łańcuchowe/string
- listy/lists
- słowniki/dictionaries
- krotki/tuples
- zestawy/sets
- logiczne/boolean
- none
Nie musimy w Pythonie określać typu zmiennej, interpreter sam będzie wiedział jaki typ ma zmienna.
Typy numeryczne – int i float
W Pythonie istnieją tylko 2 typy numeryczne – int oraz float. Integer definiuje liczby całkowite, a float zmiennoprzecinkowe.
Nie ma ich więcej, żadnych long, double itd.
number = 1
print(type(number))
number2 = 1.44
print(type(number2))
#liczba typu long (np. w Java)
long = 9223372036854775807
print(type(long)) #nadal jest int
#liczba typu double (np. w Java)
double = 10.12345678910
print(type(double)) #nadal jest float
#Python sam dostosowuje typ, po dokonaniu operacji na 2 różnych wartościach
#dodajmy do siebie typ int i float, zobaczmy co wyjdzie
result = number + number2
print(type(double)) #otrzymaliśmy float
#czytelny zapis dużych liczb
readable = 95_256_987_128
print(readable) //95256987128
Stringi, czyli łańcuchy znaków
W Pythonie nie ma typu znakowego char, wszelkiego rodzaju napisy to po prostu łańcuchy znaków.
Takie znaki możemy wyświetlać używając cudzysłowów, apostrofów lub blokowego wyświetlania za pomocą potrójnych cudzysłowów/apostrofów, Nie ma tu różnicy w wykorzystywaniu jednego lub drugiego znaku, tak jak to występuje w PHP.
Pamiętajmy też o tym, że ciągi są niemutowalne, czyli nie możemy zmienić bezpośrednio ciągu już zadeklarowanego. Aby dokonać takiej operacji należy zmieniony ciąg przypisać do zmiennej.
string_quotation = """Ea ad incididunt culpa laboris est id.
Ea sunt enim ullamco aliquip tempor est consectetur.
Laboris aute nostrud voluptate eiusmod consectetur
id voluptate irure incididunt irure.
Et elit in velit dolore nisi dolor veniam non deserunt et veniam.
Nisi anim cillum dolor amet. Pariatur adipisicing laboris enim
et anim mollit est."""
string_apostrofy = '''Ea ad incididunt culpa laboris est id.
Ea sunt enim ullamco aliquip tempor est consectetur.
Laboris aute nostrud voluptate eiusmod consectetur
id voluptate irure incididunt irure.
Et elit in velit dolore nisi dolor veniam non deserunt et veniam.
Nisi anim cillum dolor amet. Pariatur adipisicing laboris enim
et anim mollit est.'''
#nie ma różnicy pomiędzy cudzysłowem i apostrofem
print(string_quotation)
print(string_apostrofy)
print(type("blabla"))
"""
UWAGA!
Pamiętajmy, że w łączeniu ciągów za pomocą + musimy dokonywać rzutowania typów jeżeli są różne
"""
zmienna_int = 100
zmienna_string = "dolarów"
# poniższy zapis wygeneruje błąd
# print("Mam" + zmienna_int + zmienna_string)
print("Mam " + str(zmienna_int) + " " + zmienna_string)
Lists – listy – []
Listy działają jak tablice, mogą zawierać w sobie różne dane, nie koniecznie tego samego typu. Dane w listach możemy zmieniać. Ich porządek jest ustalony.
#---------------------------------------------------------------
#lists
#---------------------------------------------------------------
#indeksy 0 1 2 3 4
lst = ["wartość1", 2, 1.22, ["lista w liście"], "Kama"]
print(lst)
#wyświetlanie konkretnych wartości
print(lst[0])
print(lst[3])
print(lst[3][0])
print("Wyciągamy elementy listy od końca:", lst[-1])
print("Wyciągamy fragment listy od wskazanego indeksu do końca:", lst[-3:])
print("Wyciągamy całą listę:", lst[:])
#zmiana wartości listy
lst[1]=4
print(lst[1])
#zmiana wielu wartości
print("To jest lista przed zmianą wielu wartości:",lst)
print(lst[1:3]) #możemy zauważyć, że zwraca 2 pola
lst[1:3]=['a','b','c'] #kazaliśmy zamienić 2 pola, a wpisujemy 3, 'c' zostanie dopisane do listy
print("To jest lista po zmianie wielu wartości:",lst)
#dodawanie elementu
lst.append("wartość w 5 indeksie")
print(lst)
#usuwanie elementu listy
lst.remove('a')
print(lst)
#lub
lst[1:3]=[]
print(lst)
#możemy dodawać do siebie listy
print(lst+[1,5,8]) #wartości dodadzą się na końcu
#wyciąganie ostatniej wartości z listy i umieszczanie jej w zmiennej
last = lst.pop() #jeżeli chcemy wyciągnąć inną wartość to umieszczamy w nawiasie jej indeks
print(lst)
print(last)
second = lst.pop(1) #indeksy idą od 0 więc druga pozycja ma indeks 1
print(lst)
print(second)
#czyszczenie całej listy
lst[:]=[]
print(lst)#otrzymamy []
#podczas zabaw z listami możemy korzystać z wielu dostępnych metod:
"""
append() Adds an element at the end of the list
clear() Removes all the elements from the list
copy() Returns a copy of the list
count() Returns the number of elements with the specified value
extend() Add the elements of a list (or any iterable), to the end of the current list
index() Returns the index of the first element with the specified value
insert() Adds an element at the specified position
pop() Removes the element at the specified position
remove() Removes the first item with the specified value
reverse() Reverses the order of the list
sort() Sorts the list
"""
#przetestuj je wszystkie
Dictionaries – słowniki – {„key” : „value”}
Słowniki działają jak tablice asocjacyjne w PHP. Zamiast indeksów numerycznych używamy słownych odpowiedników.
#---------------------------------------------------------------
#dictionaries
#---------------------------------------------------------------
#deklaracja słownika jako pary klucz -> wartość (jak tablice asocjacyjne w PHP)
#dictionary = {
# "key" : "value"
#}
osoba = {
"name" : "Kama",
"surname" : "Kaczmarek",
"mail" : "kamakaczmarek@zse-zdwola.pl"
}
print(osoba)
#dostęp do konkretnej wartości, zamiast indeksu podajemy nazwę pola
print(osoba["surname"])
#dodawanie nowego elementu
osoba['employment'] = "teacher"
print(osoba)
#usuwanie klucza/wartości
del osoba['mail']
print(osoba)
"""
więcej opcji dla słowników
clear() Removes all the elements from the dictionary
copy() Returns a copy of the dictionary
fromkeys() Returns a dictionary with the specified keys and value
get() Returns the value of the specified key
items() Returns a list containing a tuple for each key value pair
keys() Returns a list containing the dictionary's keys
pop() Removes the element with the specified key
popitem() Removes the last inserted key-value pair
setdefault() Returns the value of the specified key. If the key does not exist: insert the key, with the specified value
update() Updates the dictionary with the specified key-value pairs
values() Returns a list of all the values in the dictionary
Przetestuj każdą z nich
"""
Tuple – krotki – ()
Krotki działają jak listy, jednakże nie możemy zmieniać ich zawartości. Raz zadeklarowane – pozostają niezmienne.
#---------------------------------------------------------------
#tuple
#---------------------------------------------------------------
animals = ("kot", "pies", "koń", "modliszka", "kot",) #dodajemy na końcu przecinek, żeby python na 100% wiedział że chodzi nam o tuple a nie o funkcję
print(type(animals)) #upewniamy się, że to na pewno tuple
print(animals)
#wyświetlamy elementy
print(animals[0])
print(animals[1])
#tuple są niezmienne, dlatego mają tylko 2 możliwe metody
"""
opcje dla krotek:
count() Returns the number of times a specified value occurs in a tuple
index() Searches the tuple for a specified value and returns the position of where it was found
"""
#ile razy występuje w liście podana wartość
print(animals.count('kot'))
#na którym indeksie występuje pierwsza wartość
print(animals.index('kot'))
Sets – zestawy – {}
Również działają jak listy, ale ich porządek nie jest ustalony. Za każdym razem, gdy uruchomimy „sets” jej elementy zostaną wyświetlone losowo.
#---------------------------------------------------------------
#sets
#---------------------------------------------------------------
sets = {"wartość 1", "wartość 2", "wartość 3"}
print(sets)
#sets wyświetla jedynie unikalne wartości
sets = {"wartość 1", "wartość 2", "wartość 2", "wartość 3"}
print(sets)
"""
więcej opcji dla set:
add() Adds an element to the set
clear() Removes all the elements from the set
copy() Returns a copy of the set
difference() Returns a set containing the difference between two or more sets
difference_update() Removes the items in this set that are also included in another, specified set
discard() Remove the specified item
intersection() Returns a set, that is the intersection of two other sets
intersection_update() Removes the items in this set that are not present in other, specified set(s)
isdisjoint() Returns whether two sets have a intersection or not
issubset() Returns whether another set contains this set or not
issuperset() Returns whether this set contains another set or not
pop() Removes an element from the set
remove() Removes the specified element
symmetric_difference() Returns a set with the symmetric differences of two sets
symmetric_difference_update() inserts the symmetric differences from this set and another
union() Return a set containing the union of sets
update() Update the set with another set, or any other iterablePrzetestuj każdą z nich
Przetestuj je wszystkie
"""
Boolean – True/False
Typ boolean umożliwia zapisanie wartości logicznej True lub False. Jest to typ interpretowany jako prawda/fałsz inaczej 1/0.
Jeżeli do zmiennej jest przypisana jakakolwiek wartość to jest ona uznawana za True.
#deklaracja typu bool
logic_true = True
logic_false = False
print(logic_true)
print(logic_false)
None – absolutnie nic
None to typ danych, który oznacza, że jeszcze nic nie zostało zadeklarowane lub kiedy ma być „niczym”.
None to nie false, nie 0 to po prostu „nic”.
#deklaracja typu None
messege = None
#...
messege = "już jestem"
Rzutowanie typów
Istnieją sytuacje, w których musimy dokonać rzutowania typów (casting), aby zmienić daną na int, str, bool, list, tuple, set itp.
age = input("Ile masz lat? ")
data_type = type(age)
print(data_type)
age = int(age)
data_type = type(age)
print(data_type)
owoce = ['jabłka', 'pomarańcze', 'jabłka','gruszki']
owoce = set(owoce) #rzutujemy, bo chcemy np. unikalne wartości
print(owoce)
Zadania:
- Dokonaj rzutowania pomiędzy poznanymi typami.
-
Dane są następujące zmienne (var1 – pusty string, var2 – spacja, var3 – znak nowej linii):
- var1 = ”
- var2 = ’ ’
- var3 = '\n’
Używając odpowiedniej funkcji wbudowanej wydrukuj do konsoli typ każdej zmiennej w osobnej linii.
-
Dane są następujące zmienne:
- var1 = None
- var2 = False
- var3 = 'True’
Używając odpowiedniej funkcji wbudowanej wydrukuj do konsoli typ każdej zmiennej w osobnej linii.
-
Sprawdź, czy zmienna:
- flag = False
jest obiektem typu bool (instancją klasy wbudowanej bool). Wynik wydrukuj do konsoli.
Wskazówka! Użyj funkcji isinstance().
-
Podana jest poniższa zmienna:
- number =0
Zbadaj czy zmienna number jest obiektem typu int (instancją klasy wbudowanej int). Wydrukuj 'True’ jeśli to prawda, przeciwnie 'False’.
Wskazówka: Użyj funkcji isinstance().
Oczekiwany wynik:
- True