Nauč se Python > Kurzy > Začátečnický kurz PyLadies > První program > Zpětná vazba k domácím projektům

Zpětná vazba k domácím projektům

Úkol 5

Ne všechno se dá použít jako jméno proměnné. Fungují pro proměnné následující jména? Pokud ne, proč asi?

ANO: x, tlacitko4, krůta, kratsiStrana, POCET_BODU, _ (podtržítko), π (pí), _cache, __name__

NE: 34, 3e4, $i, druha-odmocnina, readme.txt, True, while

In [1]:
34 = 'ahoj' # proměnná nemůže být číslo, proměnná nemůže začínat číslem
  File "<ipython-input-1-df07917e9a52>", line 1
    34 = 'ahoj' # proměnná nemůže být číslo, proměnná nemůže začínat číslem
    ^
SyntaxError: cannot assign to literal
In [2]:
3e4
Out[2]:
30000.0
In [3]:
$i = 'ahoj' # proměnná nemůže začínat speciálním znakem
  File "<ipython-input-3-4304f01d653c>", line 1
    $i = 'ahoj' # proměnná nemůže začínat speciálním znakem
    ^
SyntaxError: invalid syntax
In [4]:
druha-odmocnina = 'ahoj' # proměnná nemůže obsahovat pomlčku (pro Python má speciální význam)
  File "<ipython-input-4-48bd60b29873>", line 1
    druha-odmocnina = 'ahoj' # proměnná nemůže obsahovat pomlčku (pro Python má speciální význam)
    ^
SyntaxError: cannot assign to operator
In [5]:
readme.txt = 'ahoj' # proměnná nemůžem obsahovat tečku (pro Python má speciální význam)
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-5-1616423c7c91> in <module>
----> 1 readme.txt = 'ahoj' # proměnná nemůžem obsahovat tečku (pro Python má speciální význam)

NameError: name 'readme' is not defined
In [6]:
True = 'ahoj' # nelze jako proměnnou použít tzv. vyhrazené slovo (reserved word, keyword)
  File "<ipython-input-6-e11d9b6b5a66>", line 1
    True = 'ahoj' # nelze jako proměnnou použít tzv. vyhrazené slovo (reserved word, keyword)
    ^
SyntaxError: cannot assign to True

Základní pravidla pro názvy proměnných

  • Libovolná délka
  • Lze použít písmena, číslice a podtržítko
  • nesmí začínat číslicí
  • proměnné jsou tzv. case sensitive
  • nesmí obsahovat mezeru
  • lze použít tzv. velbloucí notaci
  • podtržítko na začátku názvu lze použít, ale má speciální význam, takže zatím nepoužívejte
  • jako název nelze použít vyhrazené slovo
  • další doporučení: nepoužívat jednopísmenné názvy, používat smysluplné názvy, nepoužívat názvy, které znáte z Pythonu (např. print)

ASCII tabulka

In [7]:
'abc' > 'Abc'
Out[7]:
True
In [8]:
'abc' < 'ábč'
Out[8]:
True

PROČ?

Existuje něco jménem ASCII tabulka, která každému znaku přiřazuje číselnou hodnotu. V Pythonu tohle číslo lze získat pomocí funkce ord, např. ord("a"). Protože velké A má číselnou hodnotu 65 a malé "a" má 97, platí, že "A" < "a".

In [9]:
print('a:', ord('a'), '  A:', ord('A'), '  á:', ord('á'))
a: 97   A: 65   á: 225

KÁMEN - NŮŽKY - PAPÍR

Je možné toto zjednodušit?

In [ ]:
tah_cloveka = 'kámen'
tah_pocitace = 'papír'

if tah_cloveka == 'kámen' and tah_pocitace == 'kámen'or tah_cloveka == 'nůžky' and tah_pocitace == 'nůžky' or tah_cloveka == 'papír' and tah_pocitace == 'papír':
    print('Plichta.')
elif tah_cloveka == 'kámen' and tah_pocitace == 'nůžky' or tah_cloveka == 'nůžky'and tah_pocitace == 'papír' or tah_cloveka == 'papír' and tah_pocitace == 'kámen':
    print('Vyhrála jsi!')
elif tah_cloveka == 'kámen' and tah_pocitace == 'papír'or tah_cloveka == 'papír' and tah_pocitace == 'nůžky' or tah_cloveka == 'nůžky' and tah_pocitace == 'kámen':
    print('Počítač vyhrál.')

Ano je !

In [ ]:
tah_cloveka = 'kámen'
tah_pocitace = 'papír'

if tah_cloveka == tah_pocitace:
    print('Plichta.')
elif tah_cloveka == 'kámen' and tah_pocitace == 'nůžky' or tah_cloveka == 'nůžky'and tah_pocitace == 'papír' or tah_cloveka == 'papír' and tah_pocitace == 'kámen':
    print('Vyhrála jsi!')
else:
    print('Počítač vyhrál.')

Náhodný tah počítače

In [ ]:
from random import randrange
cislo = randrange(3)
if cislo == 0:
    tah_pocitace = 'kámen'
elif cislo == 1:
    tah_pocitace = 'nůžky'
else:
    tah_pocitace = 'papír'
print("Tah počítace je:", tah_pocitace)

Tah hráče

In [ ]:
tah_hrace = input("Zvol si kámen, nůžky nebo papír: ")

Dohromady

Jen jedna z možností, jak by to mohlo vypadat.

In [ ]:
from random import randrange

cislo = randrange(3)
if cislo == 0:
    tah_pocitace = 'kámen'
elif cislo == 1:
    tah_pocitace = 'nůžky'
else:
    tah_pocitace = 'papír'
print("Tah počítace je:", tah_pocitace)

tah_hrace = input("Zvol si kámen, nůžky nebo papír: ")

if tah_hrace == tah_pocitace:
    print('Plichta.')
elif tah_hrace == 'kámen' and tah_pocitace == 'nůžky' or tah_hrace == 'nůžky'and tah_pocitace == 'papír' or tah_hrace == 'papír' and tah_pocitace == 'kámen':
    print('Vyhrála jsi!')
else:
    print('Počítač vyhrál.')

Na závěr

  • Používání nových (neprobraných) funkcionalit => ANO/NE?
  • Čeština / Angličtina
  • Odevzdávejte nejpozději v neděli večer, konzultujte na Slacku
  • Spouštějte svůj program opakovaně, snažte se simulovat všechny možnosti, které mohou nastat
  • Nemusíte jako řešení vkládat i výstup programu

Toto je stránka lekce z kurzu, který probíhá nebo proběhl naživo s instruktorem.