Datové typy: čísla a řetězce
Dnes se naučíte používat základní typy v Pythonu:
- numerické typy jako je
int
nebofloat
, - řetězce (
string
).
Numerické typy¶
Python má zabudované čtyři základní numerické typy:
- celá čísla:
int
(Python 2 měl ještělong
) - desetinná čísla:
float
(odpovídá double v C) - komplexní čísla:
complex
- logické (boolean):
bool
1 + 2 - 3 # int - celá čísla
int1 = 10 # desítková soustava
int2 = 0b10 # binární
int3 = 0x10 # hexadecimální
int4 = 0o10 # osmičková
print("%i, %i, %i, %i" % (int1, int2, int3, int4))
print("To samé binárně")
print("%s, %s, %s, %s" % (bin(int1), bin(int2), bin(int3), bin(int4)))
print(2 / 3) # dělení s desetinnou čárkou (vždy v Pythonu 3)
print(2 // 3) # operátor pro celočíselné dělení
print(2.0 // 3.0) # a pro desetinná čísla
print("type(1) = %s" % type(1))
# Pro velká celá čísla máme long
print("type(10000000000000000000) = %s" % type(10000000000000000000))
# Velká celá čísla mohou být faaakt veliká.
velke_cislo = 999**999
print("999^999 = %d" % velke_cislo)
print("999 ^ 999 má {} cifer.".format(len(str(velke_cislo))))
Výpočty s desetinnými čísly jsou standardní, pozor na konečnou přesnost
3.1 * (0.2 - 0.1)**2
Python umí komplexní čísla
abs(1 - 1j)
S boolovskými hodnotami se pracuje snadno
b = True # boolean
print(not b) # logický operátor not
Řetezce -- string a unicode¶
Python obsahuje typy str
a unicode
(Python 3 je sjednocuje do builtins.str
) a bohatou sadu funkcí pro práci s nimi. Ty jsou implementovány jednak jako metody (o třídách a metodách více později), jednak v modulech string
, StringIO
, re
a dalších.
a = 3 * ("Abc%i" % 3) + "!" # string lze vytvořit například takto
print(a)
Můžeme přistupovat k jednotlivým částem řetězce pomocí indexů
print(a[0]) # první znak řetězce
print(a[0:-1]) # všechny znaky kromě posledního
print(a[-1:None]) # poslední znak (None lze vynechat)
Metoda format
umožňuje pokročilé formátování textu.
a = '{0}{1}{0}'.format('abra', 'cad') # metoda format
print(a)
print(a.upper()) # metoda upper
print(a.find("ra")) # jednoduché hledání
print(a.upper().split('A')) # rozdělení dělícím znakem
Modul string
obsahuje další funkce.
import string # načtení modulu string
print(dir(string)) # výpis obsahu modulu
vyzkoušíme capwords
print(string.capwords("titles in english use capital first letters."))
Konverze typů¶
Python je silně typovaný, pamatujete? Typy lze ale převádět.
# str -> int
int("2")
# str -> float
float("2")
# float -> str
str(3.14)
Projekt - oko bere¶
(kredit https://naucse.python.cz/course/pyladies/beginners/while/)
Doplňte cybějící části označené ??? a opravte chyby, aby fungoval program na hru oko bere:
import random
soucet = 0
while ???:
print('Máš', soucet, 'bodů')
odpoved = input('Otočit kartu? ')
if odpoved == 'ano':
??? = random.randrange(2, 11)
print('Otočil/a jsi', karta)
soucet = ???
elif ???:
break
else:
???
if soucet == 21:
print('Gratuluji! Vyhrál/a jsi!')
???
print('Smůla!', soucet, 'bodů je moc!')
else:
print('Chybělo jen', 21 - soucet, 'bodů!')
Vylepšete předchozí kód, aby
- se zeptal na počet otáčených karet
- hráč vyhrál, pokud má součet méně nebo rovno 21 a soupoeř (počítač) má méně bodů než hráč. Skóre počítače generujte pomocí
random.normalvariate
.
Nápověda - použijte konverzi str na int
.
Komentáře
Comments powered by Disqus