- aritmetické výrazy se závorkami a operátory
- použití funkce
print
pro výpis textu a hodnot:
In [2]:
print(5/3, 5//3, 5%3, 5**3)
print("Výsledek je", 42)
1.6666666666666667 1 2 125 Výsledek je 42
Dále umíme použít funkci input
pro přečtení uživatelského vstupu ve formě textu:
In [18]:
text = input("Zadej text:")
print("Zadal jsi", text)
Zadal jsi 34
Dále umíme použít funkce int
a float
pro konverzi textového řetězce na číslo:
In [1]:
a = input("zadej délku strany a:")
a = float(a)
# předchozí kód mohu napsat zkráceně na jeden řádek:
b = float(input("zadej délku strany b:"))
print("Délka stran je",a, "a", b)
Délka stran je 12.0 a 5.0
Dále umíme používat jednoduché matematické výrazy a používat proměnné pro mezivýsledky:
In [2]:
a = 2.1
b = 3.5
plocha = a * b
obvod = 2 * (a + b)
print("Plocha obdélníka je:", plocha)
print("Obvod obdélníka je:", obvod)
Plocha obdélníka je: 7.3500000000000005 Obvod obdélníka je: 11.2
Také určitě všichni ovládáme nebo alespoň procvičujeme psaní všemi deseti 😃
Data v paměti počítače¶
- pozor na zaokrouhlování u "reálných" čísel:
In [19]:
1/3 * 3 == 1
Out[19]:
True
In [22]:
1/6 + 1/6 + 1/6 + 1/6 + 1/6 + 1/6 == 1
Out[22]:
False
Datové typy a zadávání hodnot v Pythonu¶
- každá proměnná v Pythonu má nějaký datový typ (např.
bool
,int
,float
,str
) - typ proměnné interpret určí automaticky
- abychom zjistili, jakého je nějaká proměnná typu, můžeme použít funkce
type
aisinstance
In [7]:
a = 5
type(a)
Out[7]:
int
In [8]:
a = 6.0
type(a)
Out[8]:
float
In [6]:
a = "ahoj"
type(a)
Out[6]:
str
In [4]:
a = True
type(a)
Out[4]:
bool
In [5]:
isinstance(a,bool)
Out[5]:
True
- pokud chceme mít jistotu, že proměnná bude daného typu, můžeme to vynutit (pomocí funkcí
int
,float
,str
,...):
In [8]:
# vynutím, aby proměnná byla typu int:
a = int(0)
print(type(a),a)
# funkci 'int' můžeme použít i k převedení hodnot jiného typu (např. float, bool, str) na int
a = int(2.6)
print(type(a),a)
<class 'int'> 0 <class 'int'> 2
Typ bool
a speciální hodnota None
¶
In [9]:
a = True
b = False
c = not a or not b
print(a,b,c)
# na bool mohu převádět jiné datové typy:
# b = bool(0) # ... False
# b = bool(-7) # ... True
# b = bool(7.5) # ... True
# b = bool(0.0) # ... False
b = bool("True") # ... True
print(b)
True False True True
In [8]:
b = 0
print(type(b))
print(a and not bool(b))
<class 'int'> True
In [3]:
# Porovnání čísel pomocí operátorů: == , !=, > , < , >= , <=
x = 6
print(x > 4)
print(x != 3 and x < 10)
print(x == 6)
True True True
In [18]:
# speciální hodnota None
a = None
print(a)
print(type(a))
None <class 'NoneType'>
Typ int
¶
In [29]:
a = 1234567890
print(a)
a = 1_234_567_890
print(a)
1234567890 1234567890
In [5]:
a = 01
Cell In[5], line 1 a = 01 ^ SyntaxError: leading zeros in decimal integer literals are not permitted; use an 0o prefix for octal integers
In [6]:
a = 123 456
Cell In[6], line 1 a = 123 456 ^ SyntaxError: invalid syntax
Zápis čísel v jiných soustavách¶
In [39]:
# zadání čísel v jiných soustavách:
x = 0b101 # binární číslo
y = 0o71 # číslo v osmičkové soustavě
z = 0xf0 # číslo v šestnáctkové soustavě
print(x,y,z)
# výpis čísel v jiných soustavách:
print(bin(x),oct(y),hex(z))
# lze libovolně psát _
print(0b1011000_10101011)
5 57 240 0b101 0o71 0xf0 22699
In [13]:
# uměli byste sami převést číslo do desítkové soustavy?
print(11)
print(0o11)
print(0x11)
print(0b11)
11 9 17 3
Aritmetické operátory¶
Typ float
¶
In [14]:
x = 1.3
x = 1.0
x = 1.
x = 0.1
x = .1
x = 456.
print(1_234.567_8)
1234.5678
In [12]:
print(123e-3)
print(123e3)
print(123_456_789_0_123_456_789_0_123_456_789.)
0.123 123000.0 1.2345678901234568e+28
K zamyšlení a vyzkoušení: jak funguje celočíselné dělení pro necelá čísla?
In [32]:
print(43//10, 43 % 10)
print(0.43//0.1, 0.43 % 0.1)
4 3 4.0 0.02999999999999997
In [16]:
# k převodu z int na float někdy dojde automaticky při aritmetických operacích:
4 / 3
4 + 0.1
Out[16]:
4.1
In [13]:
# k převodu mezi int a float mohu použít funkce `int` a `float`
print(int(1.5)) # zaokrouhlí vždy k 0
print(float(2))
1 2.0
In [35]:
print(round(1.5)) # zaokrouhlí k nejbližšímu celému číslu
2
Matematické funkce a konstanty¶
In [22]:
# funkce max, min, abs
a = -1
b = 2
c = min(a, b)
d = max(a, b, c)
e = abs(d)
print(d)
2
In [36]:
# import funkcí a proměnných z modulu math ve standardní knihovně Pythonu
import math
print("Číslo π je přibližně", math.pi)
print("Hodnota cos(π) je ", math.cos(math.pi))
print(math.sin(2*math.pi))
Číslo π je přibližně 3.141592653589793 Hodnota cos(π) je -1.0 -2.4492935982947064e-16
In [17]:
# alternativně:
from math import pi, cos, sin
print("Číslo π je přibližně", pi)
print("Hodnota cos(π) je ", cos(pi))
Číslo π je přibližně 3.141592653589793 Hodnota cos(π) je -1.0
In [24]:
# problém: pokud používám v programu stejné názvy proměnných/funcí jako daná knihovna
cos = 5
from math import pi, cos, sin
print("Číslo π je přibližně", pi)
print("Hodnota cos(π) je ", cos(pi))
Číslo π je přibližně 3.141592653589793 Hodnota cos(π) je -1.0
In [37]:
# toto by taky šlo, ale nedoporučuje se:
#from math import *
#print("Číslo π je přibližně", pi)
#print("Hodnota cos(π) je ", cos(pi))
Číslo π je přibližně 3.141592653589793 Hodnota cos(π) je -1.0
Typ complex
¶
In [18]:
c1 = complex(1, 2)
print("c1 =", c1)
c2 = 1 - 2j
print("c2 =", c2)
c1 = (1+2j) c2 = (1-2j)
In [20]:
# s komplexními čísli mohu provádět většinu operací jako s celými čísli:
print(c1+c2, c1-c2, c1*c2, c1/c2)
(2+0j) 4j (5+0j) (-0.6+0.8j)
In [21]:
# ale některé ne:
c1//c2
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) Cell In[21], line 2 1 # ale některé ne: ----> 2 c1//c2 TypeError: unsupported operand type(s) for //: 'complex' and 'complex'
In [24]:
# mezi číslem a znakem 'j' nesmí být mezera a číslo nesmíme vynechat
c1 = 1 + 2 j
Cell In[24], line 2 c1 = 1 + 2 j ^ SyntaxError: invalid syntax
In [26]:
j = 100
c1 = 5 - j
c2 = 5 - 1j
print(c1,c2)
-95 (5-1j)
In [27]:
c = 1 + 2j
x = c.real + c.imag
print(x)
print("reálná část:", c.real)
print("imaginární část:", c.imag)
print("komplexně sdružené číslo:", c.conjugate())
3.0 reálná část: 1.0 imaginární část: 2.0 komplexně sdružené číslo: (1-2j)
Práce s proměnnými v Pythonu¶
In [28]:
# definice proměnné:
x = 5
y = 7 - x
In [30]:
# pokud do proměnné vložím novou hodnotu, může se změnit její typ:
a = 1
b = a + 2
a = "ahoj"
print(a,b)
ahoj 3
In [31]:
# můžeme vytvářet nová jména pro existující funkce, nebo je tzv. "předefinovat":
a = print
a ("cislo je", 6)
cislo je 6
In [33]:
a = print
print = "Hello, world!"
a(print)
a ("cislo je", 6)
print = a
print(2,3,4)
Hello, world! cislo je 6 2 3 4
In [ ]: