Upravit tuto stránku na GitHubu
Bonusová cvičení: Opakování
Bonusy jsou pro rychlíky – když máš hotová cvičení a zbývá čas. Každý bonus má vlastní soubor ve složce lekce04-cyklus-while/03_opakovani/cviceni_bonusy/. Řešení si rozklikni až po vlastním pokusu – tvoje řešení může vypadat jinak, a to je v pořádku.
Bonus 1
Soubor: cviceni_bonusy/01_kamen_nuzky_papir.py
Kámen, nůžky, papír – znáš z bonusu v lekci 2, kde hráli dva lidé. Teď to rozšíříme: hraješ proti počítači a na víc kol.
-
Zeptej se na svůj tah: "kamen", "nuzky" nebo "papir".
-
Počítač si tah vylosuje: randrange(1, 4) vrátí 1, 2 nebo 3, tak si to číslo přelož na tah (1 = kamen, 2 = nuzky, 3 = papir).
-
Vypiš, co hrál počítač, a kdo kolo vyhrál.
-
Pak se zeptej "Hrát znovu? (ano/ne) " a podle odpovědi buď pokračuj, nebo skonči. Kdo koho poráží: kámen tupí nůžky, nůžky stříhají papír, papír balí kámen. Nahoru na první řádek nezapomeň: from random import randrange
Zobrazit řešeníSkrýt řešení
from random import randrange
while True:
tvuj_tah = input("Tvůj tah (kamen/nuzky/papir): ")
# Počítač umí vylosovat jen číslo, tak si ho přeložíme na tah.
cislo = randrange(1, 4)
if cislo == 1:
pocitac = "kamen"
elif cislo == 2:
pocitac = "nuzky"
else:
pocitac = "papir"
print("Počítač hrál:", pocitac)
# Kdo vyhrál: kámen tupí nůžky, nůžky stříhají papír, papír balí kámen.
vyhrala_kamenem = tvuj_tah == "kamen" and pocitac == "nuzky"
vyhrala_nuzkami = tvuj_tah == "nuzky" and pocitac == "papir"
vyhrala_papirem = tvuj_tah == "papir" and pocitac == "kamen"
if tvuj_tah == pocitac:
print("Remíza.")
elif vyhrala_kamenem or vyhrala_nuzkami or vyhrala_papirem:
print("Vyhrála jsi!")
else:
print("Prohrála jsi.")
znovu = input("Hrát znovu? (ano/ne) ")
if znovu == "ne":
break
print("Díky za hru!")
Bonus 2
Soubor: cviceni_bonusy/02_trojuhelnik_z_hvezdicek.py
Uživatel zadá číslo N. Vypiš z hvězdiček trojúhelník vysoký N – první řádek "*", druhý "**", ... N-tý má N hvězdiček. (Nápověda: text se dá opakovat: "*" * 3 je "***")
Zobrazit řešeníSkrýt řešení
n = int(input("Zadej N: "))
for radek in range(1, n + 1):
print("*" * radek)
Bonus 3
Soubor: cviceni_bonusy/03_ciferny_soucet.py
Uživatel zadá celé číslo. Sečti jeho číslice a součet vypiš. Například z 253 vyjde 10, protože 2 + 5 + 3 = 10. (Nápověda: cislo % 10 dá poslední číslici, cislo // 10 ji utrhne.) Zkus i záporné číslo. Aby to fungovalo, hodí se abs(cislo) – ta funkce zahodí minus.
Zobrazit řešeníSkrýt řešení
Postupně utrháváme poslední číslici, dokud něco zbývá.
cislo = int(input("Zadej celé číslo: "))
cislo = abs(cislo) # u záporného čísla zahodíme minus
soucet = 0
while cislo > 0:
soucet = soucet + cislo % 10 # poslední číslice
cislo = cislo // 10 # utrhneme ji
print("Součet číslic je", soucet)

Komentáře
Máš k této stránce dotaz nebo jsi našla chybu? Napiš to sem. Ke komentování je potřeba účet na GitHubu.