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.

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)

Zpět na téma: Opakování

Zdrojové soubory na GitHubu

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.