Created
April 2, 2020 19:42
-
-
Save brabemi/5f7880fbba347a428b9399af665c8304 to your computer and use it in GitHub Desktop.
PyLadies - Praha - jaro 2020 - Lekce 4 – While
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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') |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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') |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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.') |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# ú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