Operatory arytmetyczne, porownania, logika, tabele prawdy
ð Podstawa programowa: II.1Python udostepnia nastepujace operatory do dzialan matematycznych:
Operator | Opis | Przyklad | Wynik
----------+-----------------------+----------------+------
+ | Dodawanie | 7 + 3 | 10
- | Odejmowanie | 7 - 3 | 4
* | Mnozenie | 7 * 3 | 21
/ | Dzielenie (float) | 7 / 3 | 2.3333...
// | Dzielenie calkowite | 7 // 3 | 2
% | Reszta z dzielenia | 7 % 3 | 1
** | Potegowanie | 2 ** 10 | 1024
/ zawsze zwraca float (np. 10/2 = 5.0), natomiast // zwraca wynik dzielenia calkowitego (obcina czesc ulamkowa, np. 7//3 = 2).
Operator % to jeden z najwazniejszych operatorow w programowaniu. Zwraca reszte z dzielenia:
# Zastosowania modulo
print(10 % 3) # 1 (10 = 3*3 + 1)
print(15 % 5) # 0 (15 = 5*3 + 0)
print(17 % 4) # 1 (17 = 4*4 + 1)
# Sprawdzanie parzystosci
liczba = 42
if liczba % 2 == 0:
print("Parzysta") # Wyswietli sie
else:
print("Nieparzysta")
# Sprawdzanie podzielnosci
if 15 % 3 == 0:
print("15 dzieli sie przez 3") # TAK
# Wyciaganie ostatniej cyfry
print(1234 % 10) # 4 (ostatnia cyfra)
Python przestrzega standardowej kolejnosci dzialan matematycznych (PEMDAS):
# Przyklady kolejnosci dzialan
print(2 + 3 * 4) # 14 (nie 20!)
print((2 + 3) * 4) # 20
print(2 ** 3 ** 2) # 512 (= 2^9, potegowanie od prawej!)
print(10 - 2 * 3 + 1) # 5
print(10 // 3 % 2) # 1 (10//3=3, 3%2=1)
Zwracaja wartosc logiczna True lub False:
Operator | Opis | Przyklad | Wynik
----------+-----------------------+-------------+------
== | Rowne | 5 == 5 | True
!= | Rozne | 5 != 3 | True
> | Wieksze | 5 > 3 | True
< | Mniejsze | 5 < 3 | False
>= | Wieksze lub rowne | 5 >= 5 | True
<= | Mniejsze lub rowne | 5 <= 3 | False
= (przypisanie) z == (porownanie)!x = 5 - przypisz wartosc 5 do zmiennej xx == 5 - sprawdz, czy x jest rowne 5
Sluza do laczenia warunki logicznych:
Operator | Opis | Przyklad
----------+-------------+-----------------------------
and | Koniunkcja | True and True -> True
| (i) | True and False -> False
or | Alternatywa | False or True -> True
| (lub) | False or False -> False
not | Negacja | not True -> False
| (nie) | not False -> True
A | B | A and B | A or B | not A
----------+----------+-----------+----------+--------
True | True | True | True | False
True | False | False | True | False
False | True | False | True | True
False | False | False | False | True
wiek = 17
ocena = 4.5
obecnosc = True
# Polaczone warunki
print(wiek >= 18 and ocena > 4.0) # False (bo wiek < 18)
print(wiek >= 16 or ocena > 5.0) # True (bo wiek >= 16)
print(not (wiek < 15)) # True (bo wiek nie < 15)
# Sprawdzanie zakresu
x = 15
print(10 <= x <= 20) # True (Python pozwala!)
# To samo co:
print(x >= 10 and x <= 20) # True
# Praktyczny przyklad
zdal_egzamin = ocena >= 3.0 and obecnosc
print(f"Zdal egzamin: {zdal_egzamin}") # True
# Skrocone operatory przypisania
x = 10
x += 5 # x = x + 5 -> 15
x -= 3 # x = x - 3 -> 12
x *= 2 # x = x * 2 -> 24
x /= 4 # x = x / 4 -> 6.0
x //= 2 # x = x // 2 -> 3.0
x %= 2 # x = x % 2 -> 1.0
x **= 3 # x = x ** 3 -> 1.0
Oblicz (bez komputera!) wartosc nastepujacych wyrazen w Pythonie, a potem sprawdz w interpreterze:
a) 15 // 4
b) 15 % 4
c) 2 ** 3 + 4 * 2
d) 20 / 3 // 2
e) (10 + 5) % 7
f) 3 ** 2 ** 1
a) 15 // 4 = 3 (dzielenie calkowite)
b) 15 % 4 = 3 (reszta: 15 = 4*3 + 3)
c) 2**3 + 4*2 = 8 + 8 = 16 (potega przed mnozeniem)
d) 20/3//2 = 6.666...//2 = 3.0 (od lewej do prawej)
e) (10+5) % 7 = 15 % 7 = 1
f) 3 ** 2 ** 1 = 3 ** 2 = 9 (potegowanie od prawej)
Okresl wartosc (True/False) nastepujacych wyrazen dla x=10, y=5, z=3:
a) x > y and y > z
b) x < y or z == 3
c) not (x == 10)
d) x >= 10 and y <= 5 and z != 0
e) not (x > y and y > z) or z < 1
x=10, y=5, z=3
a) 10 > 5 and 5 > 3 = True and True = True
b) 10 < 5 or 3 == 3 = False or True = True
c) not (10 == 10) = not True = False
d) 10 >= 10 and 5 <= 5 and 3 != 0
= True and True and True = True
e) not (True and True) or 3 < 1
= not True or False = False or False = False
Napisz program, ktory pobiera trzycyfrowa liczbe calkowita i wyswietla osobno: cyfre jednosci, dziesiatek i setek. Uzyj operatorow // i %.
liczba = int(input("Podaj trzycyfrowa liczbe: "))
jednosci = liczba % 10
dziesiatki = (liczba // 10) % 10
setki = liczba // 100
print(f"Liczba: {liczba}")
print(f"Cyfra jednosci: {jednosci}")
print(f"Cyfra dziesiatek: {dziesiatki}")
print(f"Cyfra setek: {setki}")
print(f"Suma cyfr: {jednosci + dziesiatki + setki}")
# Odwrocona liczba
odwrocona = jednosci * 100 + dziesiatki * 10 + setki
print(f"Odwrocona: {odwrocona}")
Napisz program, ktory generuje pelna tabele prawdy dla wyrazenia: (A and B) or (not A and C). Wyswietl wszystkie 8 kombinacji (A, B, C moga byc True lub False).
# Generator tabeli prawdy
print(f"{'A':>6} {'B':>6} {'C':>6} | {'Wynik':>6}")
print("-" * 32)
for a_val in [True, False]:
for b_val in [True, False]:
for c_val in [True, False]:
wynik = (a_val and b_val) or (not a_val and c_val)
print(f"{str(a_val):>6} {str(b_val):>6} {str(c_val):>6} | {str(wynik):>6}")
# Wynik:
# A B C | Wynik
# --------------------------------
# True True True | True
# True True False | True
# True False True | False
# True False False | False
# False True True | True
# False True False | False
# False False True | True
# False False False | False