Przejdź do głównej zawartości

Python - podstawowe typy i operatory - lekcja 001

Spis treści:

1. Cel powstania kursu
2. Podstawowe typy
3. Operatory
  • algebraiczne
  • porównania
  • logiczne
  • przypisania
4. Rzutowanie
5. Zadania

Następna lekcja: Lekcja 2 (stringi i pobieranie danych od użytkownika)

Cele powstania kursu:
- nauka programowania w języku skryptowym Python,
- nauka prostych i średnio zaawansowanych technik programowania,
- pomoc w uzyskaniu certyfikatu ukończenia kursu MIT.

W celu rozwiązania zadań proponuję używać serwisu ideone.com.

Język Python to język skryptowy. Do wykonania kodu napisanego w tym języku potrzebny jest interpreter. Interpreter to program, który analizuje kod (nie kompiluje) programu linia po linii i realizuje odpowiednie definicje i rozkazy. Samo programowanie w tym lub innym języku programowanie to manipulowanie obiektami. W przypadku Pythona możemy obiekty podzielić na proste i złożone. Proste to takie, które nie posiadają wewnętrznych metod do których ma dostęp programista np. int (reprezentuje liczby całkowite), float (reprezentuje liczby rzeczywiste), bool (reprezentuje wartości logiczne).
Aby poznać typ danej zmiennej można użyć wbudowanej funkcji type.

1
2
print type(3)
print type(3.0)
Odpowiedź skryptu poniżej

<type 'int'>
<type 'float'>

Aby modyfikować wartości liczbowe można użyć poniższych operatorów:
  • suma i + j 
  • różnica i - j
  • iloczyn i * j
  • iloraz i / j
  • reszta z dzielenia całkowitego i % j
  • potęga i ** j
 Przykład wykorzystania

i = 2
j = 3
 
print i + j
print i - j
print i * j
print i % j
print i ** j
Python w bardziej złożonych wyrażeniach wykonuje działania w określonej kolejności:
  1. najpierw **
  2. następnie *, / oraz %
  3. a dopiero na końcu + i -
 przykładowy kod

print 2 % 3 * 3 % 2 
spowoduje wypisanie liczby 0.

Liczby można porównywać ze sobą za pomocą odpowiednich operatorów:
  • większości  i > j
  • mniejszości i < j
  • większości lub równości i >= j
  • mniejszości lub równości i <= j
  • równości i == j
  • nierówności i != j
Powyższe operatory zwracają wartość True gdy wyrażenie jest prawdziwe a False w przeciwnym wypadku. Poniżej przykład


1
2
3
4
5
6
7
8
9
i = 1
j = 0
 
print i > j
print i < j
print i >= j
print i <= j
print i == j
print i != j
odpowiedź programu

True
False
True
False
False
True

Na wartościach logicznych można użyć operatorów logicznych
  • koniunkcja logiczna i and j
  • alternatywa logiczna i or j
  • negacja not i
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
i = True
j = False

print i and j
print i or j
print not i

i = 1.5
j = 0

print (i and j)
print (i or j)
print bool(i or j)
print not not(i or j)
print not i
odpowiedź programu

False
True
False
0
1.5
True
True
False

W Pythonie jako fałsz traktowane są:

  • liczba zero (0, 0.0, 0j itp.)
  • False
  • None (null)
  • puste kolekcje ([], (), {}, set() itp.)
  • puste napisy
  • w Pythonie 2 – obiekty posiadające metodę __nonzero__(), jeśli zwraca ona False lub 0
  • w Pythonie 3 – obiekty posiadające metodę __bool__(), jeśli zwraca ona False
Wszystko inne traktowane jest jako prawda.

Jednym z najczęściej używanych operatorów jest operator przypisania "=". Dzięki niemu można nadać konkretna wartość zmiennej np. i = 5.
Zmienne czyli pojemniki na wartości nie muszą mieć nazw jednoliterowych. Możemy wykorzystywać całe wyrazy w celu nazwania zmiennej. W przypadku języka Python nie trzeba podawać typu zmiennej. Jest on nadawany automatycznie zmiennej podczas przypisywania jej wartości. Mimo, że jest to wygodne to stwarza pewien problem przy analizie kodu napisanego przez kogoś innego. Na pierwszy rzut oka nie widać jakie typy reprezentują dane zmienne i nie jesteśmy w stanie przewidzieć wyniku pewnych działań np. dzielenia. Aby pomóc w rozszyfrowaniu kodów źródłowych wprowadzono pewne konwencje nadawania nazw. Warto się z nimi zapoznać i wybrać dla siebie najlepsze np. camelCase, PascalCase, small_caps_snake_case, BIG_CAPS_SNAKE_CASE itp.. W czasie nauki i tworzenia programów dla siebie nie jest ważne, którą przyjmie się konwencję (czy mieszankę konwencji) ale to by trzymać się swojego wyboru od początku do końca kodu.

Aby zmienić typ danej wartości np. liczbę całkowitą 3 chcemy odczytać jako liczbę rzeczywistą 3.0, używa się mechanizmu nazwanego rzutowaniem. Wygląda to następująco

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
i = 5
j = 4.66

print i
print float(i)
print bool(i)
print int(j)
print bool(j)
print 2/i
print 2/float(i)
odpowiedź programu

5
5.0
True
4
True
0
0.4

Należy pamiętać, że w Pythonie podobnie jak w większości języków programowania gdy wykonujemy dzielenie liczby całkowitej przez drugą liczbę całkowitą mamy do czynienia z dzieleniem całkowitym. Stąd 2/i (zmienna i == 5) w powyższym przykładzie daje 0.

Następna lekcja: Lekcja 2 (stringi i pobieranie danych od użytkownika)

Zadania

1. Jakie typy reprezentują poniższe wartości?

a. 1
b. -87
c. 0.34
d. 3.0
e. True


2. Jaki wynik otrzyma się po wykonaniu poniższych działań?

a. 5 + 3
b. 5 + 3.0
c. 5 * 3
d. 5 * 3.0
e. - - 3
f. - - - 3.3
g. 1 + 2 -3 * 2
h. 2 + 3 * 4 ** 2
i. (2 + 3) / 4
j. (2 + 3) * 5


3. Jaką wartość logiczną otrzyma się po wykonaniu poniższych instrukcji?

a. 1 > 2
b. 1 > 1.0
c. 1 > - - 1
d. 1 == 1.0
e. 1 != 3
f. 1 > 4 > 10
g. True and False
h. True or False
i. bool(1.3 or True)
j. bool(1.3 or 3)
k. not False
l. not -23
m. 1 > 5 and 4 < 8
n. bool(1.3 or (3 < 5 and True == 4))


4. Jakiego typu (int, float czy bool) będzie wynik poniższych działań?

a. 3 + 2
b. 3 + 2.0
c. float(3) + 2
d. float(3) + 2.0
e. 24 + True
f. 24 and True
g. 12 / 5
h. 12.0 / 5
i. 12 / 5.0
j. True + True
k. 2/3 == 4 ** 2
l. 3 > 5 + 4




Następna lekcja: Lekcja 2 (stringi i pobieranie danych od użytkownika)

Komentarze

Popularne posty z tego bloga

[C++]Konwersja systemu dziesiętnego na binarny [dec2bin, dec2u2]

Konwersja między systemami liczbowymi była już poruszana w tym serwisie tym razem zajmę się kodem U2. Inaczej zwany uzupełnieniem do 2. Opis tego systemu pojawił się w kontekście wstępu do programowania w języku Python [ tutaj ]. Prosty program tzw. szkolny zamiany nieujemnej liczby dziesiętnej na jej postać binarną: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #include <iostream> using namespace std; int main () { int liczba; cin >> liczba; string wynik; while (liczba){ wynik = (liczba % 2 ? "1" : "0" ) + wynik; liczba /= 2 ; } cout << wynik; return 0 ; } Poniżej prezentuję kod programu, który zawiera trzy metody rozwiązania problemu jakim jest wyświetlenie użytkownikowi reprezentacji u2 podanej przez niego liczby dziesiętnej. Pierwsza z nich wywodzi się z typowego algorytmu konwersji systemu dec do u2: 1. przedstaw bezwzględną wartość liczby dziesiętnej w postaci binarnej, 2. dodaj na początek

Python - lekcja 005

Spis treści - zamiana całkowitych liczb dziesiętnych na ich odpowiedniki w innych systemach liczbowych (algorytm), - ujemne liczby całkowite w systemie binarnym (ZM, U1, U2, algorytm, formatowanie stringów, rzutowanie ze zmianą systemu liczbowego) [dec2bin, dec2ZM, dec2U1, dec2U2] - zadania.