Skip to content

Instantly share code, notes, and snippets.

@brabemi
Created April 2, 2020 19:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save brabemi/5f7880fbba347a428b9399af665c8304 to your computer and use it in GitHub Desktop.
Save brabemi/5f7880fbba347a428b9399af665c8304 to your computer and use it in GitHub Desktop.
PyLadies - Praha - jaro 2020 - Lekce 4 – While
from random import randrange
# Házím 6 kostkami, vypíšu nejvyšší hod
# vím kolikrát chci něco udělat -> for cyklus
maximum = 0
for hod in range(6):
hodnota = randrange(1, 7)
print(hodnota)
if maximum < hodnota:
maximum = hodnota
print('Maximum je', maximum)
print('-'*80)
# Házej dokud nepadne 6
# vím, kdy skončit, nevím kolik bude třeba pokusů -> while
# varianta s inicializací a while řízený pomocí podmínky
hodnota2 = randrange(1, 7)
while hodnota2 != 6:
print(hodnota2)
hodnota2 = randrange(1, 7)
print('Padla 6')
print('-'*80)
# varianta s while True a ukonření pomocí break
while True:
hodnota3 = randrange(1, 7)
print(hodnota3)
if hodnota3 == 6:
print('Padla 6')
break
print('Tohle se stane po break')
# Ukázka break a continues
# hra pana nebo orel
# uzivatel zada tip
# vypisu vyhra/prohra dokud nezada konec
from random import randrange
while True:
print('zacatek cyklu')
tip = input('Pana, orel nebo konec? :')
if tip == 'konec':
break
# pokud uživatel zadá neplatný vstup chci začí "znovu od začátku"
# tzn nechci, aby se provádělo porovnání na výhru/prohru
if tip != 'pana' and tip != 'orel':
print('neplatny tah')
continue
hod = randrange(2)
if hod == 0:
hod_slovne = 'orel'
else:
hod_slovne = 'pana'
if hod_slovne == tip:
print('vyhra')
else:
print('prohra')
from random import randrange
# while/for cykly lze libovolně kombinovat a zanořovat do sebe
# Příkaz break se dá použít jenom v cyklu (while nebo for) a pokud máme víc cyklů zanořených v sobě, vyskočí jen z toho vnitřního.
# hazím 3 kostkami dokud na všech najednou nepadne 6
while True:
soucet_hodu = 0
for kostka in range(3):
hod = randrange(1, 7)
if hod != 6:
# tento break ukončuje cyklus - for kostka in range(3):
break
soucet_hodu += hod
print(soucet_hodu)
if soucet_hodu == 18:
print('výhra')
# tento break ukončuje cyklus - while True:
break
# Porovnání, jak lze řídit běh while cyklu
# while True + ukončení pomocí break
while True:
odpoved = input('Řekni Ááá! ')
if odpoved == 'Ááá':
print('Eééé')
break
if odpoved == 'Béé':
print('Eééé')
break
if odpoved == 'Céé':
print('Eééé')
break
if odpoved == 'Déé' or odpoved == 'déé':
print('Eééé')
break
print('Špatně, zkus to znovu')
print('Hotovo, ani to nebolelo.')
print('-'*60)
# while řízený logickým výrazem
# ukázka, že není vhodné pro složitější výrazy
odpoved = input('Řekni Ááá! ')
while \
odpoved != "Ááá" and odpoved != "Béé" and \
odpoved != "Céé" and odpoved != "Déé":
print('Špatně, zkus to znovu')
odpoved = input('Řekni Ááá! ')
print('Eééé')
print('Hotovo, ani to nebolelo.')
print('-'*60)
# while cyklus + řídící proměnná
# oproti break je rozdíl, že se cyklus nezastaví hned, když dáme ridici_podminka = False, ale doběhne do konce
ridici_podminka = True
while ridici_podminka:
odpoved = input('Řekni Ááá! ')
if odpoved == 'Ááá':
ridici_podminka = False
elif odpoved == 'Béé':
ridici_podminka = False
elif odpoved == 'Céé':
ridici_podminka = False
elif odpoved == 'Déé' or odpoved == 'déé':
ridici_podminka = False
else:
print('Špatně, zkus to znovu')
print('Eééé')
print('Hotovo, ani to nebolelo.')
# program který se ptá uživatele na čísla
# na konci vypíše nejměnší z čísel
# Varianta 1
# inicializaci provedu pomocí hodnoty podle které následně poznám, že se jedná o první iteraci cyklu
minimum = 'nic'
while True:
cislo = int(input('zadej cislo: '))
if cislo == 0:
break
# prvni zadane cislo
if minimum == 'nic':
minimum = cislo
print('minimum nastaveno na', minimum)
if cislo < minimum:
minimum = cislo
print('nemensi zadane cislo je', minimum)
print('-'*80)
# Varianta 2
# pro inicializaci použiju první hodnotu
minimum = int(input('zadej cislo: '))
while True:
cislo = int(input('zadej cislo: '))
if cislo == 0:
break
if cislo < minimum:
minimum = cislo
print('nemensi zadane cislo je', minimum)
from random import randrange
tah_pocitace = randrange(3)
if tah_pocitace == 0:
tah_pocitace = 'kamen'
if tah_pocitace == 1:
tah_pocitace = 'nuzky'
if tah_pocitace == 2:
tah_pocitace = 'papir'
tah_cloveka = 'kamen'
# aby se zjednodušila část, kde se porovnává, je vhodné srovnat si hodnoty na stejný datový typ
# if \
# (tah_pocitace == 0 and tah_cloveka == 'kamen') or \
# (tah_pocitace == 1 and tah_cloveka == 'nuzky') or \
# (tah_pocitace == 2 and tah_cloveka == 'papir'):
if tah_pocitace == tah_cloveka:
print('remiza')
print(tah_pocitace)
# úkol 4
# První hráč hází kostkou(t.j. vybírají se náhodná
# čísla od 1 do 6), dokud nepadne šestka. Potom hází
# další hráč, dokud nepadne šestka i jemu. Potom hází
# hráč třetí a nakonec čtvrtý. Vyhrává ten, kdo na
# hození šestky potřeboval nejvíc hodů.
# (V případě shody vyhraje ten, kdo házel dřív.)
#
# Program by měl vypisovat všechny hody a nakonec
# napsat, kdo vyhrál.
from random import randrange
nejlepsi_hrac = 0
maximum_hodu = 0
for hrac in range(1, 5):
# jeden hrac
pocet_hodu = 0
while True:
hod = randrange(1, 7)
# pocet_hodu = pocet_hodu + 1
pocet_hodu += 1
print(hod)
if hod == 6:
break
print('hráč', hrac, 'počet hodů', pocet_hodu)
if pocet_hodu > maximum_hodu:
nejlepsi_hrac = hrac
maximum_hodu = pocet_hodu
print('Nejlepší hráč', nejlepsi_hrac, 'házel', maximum_hodu)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment