V domácích projektech po rozdělení piškvorek na několik souborů byl problém s importy a následném volání importovaných funkcí (NameError). Ukázka importu modulu random a použití funkce randrange().
import random
nahodne_cislo = randrange(10)
print(nahodne_cislo)
from random import randrange
nahodne_cislo = randrange(10)
print(nahodne_cislo)
import random
nahodne_cislo = random.randrange(10)
print(nahodne_cislo)
Doplň funkci tah_pocitace tak, aby brala jako argument symbol, za který má počítač hrát – buď 'x',nebo 'o'. Ověř, že se funkce tah_pocitace umí vyrovnat s jinou délkou hracího pole než 20. Ověř si,že se tah_pocitace chová rozumně když dostane plné hrací pole, nebo pole s délkou 0. Rozumné chování v tomto případě znamená vyvolání rozumné výjimky.
def tah_pocitace(herni_pole):
"""Vrátí herní pole se zaznamenaným tahem počítače."""
while True:
cislo_pozice = randrange(20)
if herni_pole[cislo_pozice] == "-":
return tah(herni_pole, cislo_pozice, "o")
def tah_pocitace(herni_pole, symbol):
"""Vrátí herní pole se zaznamenaným tahem počítače."""
if len(herni_pole) == 0:
raise ValueError("Nelze hrát, herní pole má délku 0")
if "-" not in herni_pole:
raise ValueError("Nelze hrát, herní pole je plné")
while True:
cislo_pozice = randrange(len(herni_pole))
if herni_pole[cislo_pozice] == "-":
return tah(herni_pole, cislo_pozice, symbol)
def test_tah_PC_ruzna_delka_pole():
'''
Test funkce tah_pocitace: program se umí vyrovnat s různou délkou hracího
pole = nedojde k chybě, po tahu počítače se nezmění délka hracího pole
a nové hrací pole bude obsahovat 1 znak symbolu "x" a zbytek bude prázdný.
'''
for delka_pole in range (1, 100):
pole = '-' * delka_pole
pole = ai.tah_pocitace(pole, 'x')
assert len(pole) == delka_pole
assert pole.count('x') == 1
assert pole.count('-') == delka_pole - 1
def test_tah_PC_vyjimky():
'''
Testuje vyvolání vyjímky v případě herního pole nulové délky a herního pole
bez prázdných míst.
'''
pole = '' # prázné herní pole
with pytest.raises(ValueError):
pole = ai.tah_pocitace(pole, 'x')
pole = 'xoxoxox' # pole, kde není kam hrát
with pytest.raises(ValueError):
pole = ai.tah_pocitace(pole, 'x')