Mikuláš je tu! Získaj 90 % extra kreditov ZADARMO s promo kódom CERTIK90 pri nákupe od 1 199 kreditov. Len do nedele 7. 12. 2025! Zisti viac:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:
Funkce, kterou se snažíš použít je dostupná pouze pro registrované uživatele. Buďto se přihlas nebo si zdarma vytvoř nový účet.
Funkce, kterou se snažíš použít je dostupná pouze pro registrované uživatele. Buďto se přihlas nebo si zdarma vytvoř nový účet.

Diskusia – 8. diel - Podmienky (vetvenie) v Pythone

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Posledné komentáre sú na spodnej časti poslednej stránky.
Avatar
Petr Nadvornik:31.1.2021 14:54

Ahoj, díky za lekci. Trochu sem si hrál. ;)

#!/usr/bin/env python3

from math import sqrt
print("Vitejte v multicalc.")
print()
print("Nejdrive vyberte kalkulacku.")
nexto = True
while(nexto):
    print("1 - Numericka")
    print("2 - Geometricka")
    print()
    vyber = int(input("Kalkulacka:" ))
    if vyber == 2:
        print("Vybrali jste kalkulacku pro vypocet geometrickych tvaru.")
        print()
        print("Zadejte cislo volby: ")
        print("1 - Kruh - z polomeru vypocita obvod, prumer a plochu.")
        print("2 - Ctverec - ze zadane strany vypocita obvod, plochu a uhlopricku.")
        print("3 - Obdelnik - ze zadanych stran vypocita obvod, plochu a uhlopricku.")
        print()
        oper2 = int(input("volba c.: "))
        if oper2 == 1:
            print()
            r = float(input("Zadej polomer kruhu (cm): "))
            print("Obvod = ", 2*3.14*r, "cm")
            print("Plocha = ", 3.14*r**2, "cm^2")
            print("Prumer = ", 2 * r, "cm")
        elif oper2 == 2:
            print()
            a = float(input("Zadejte stranu ctverce (cm): "))
            print("Obvod = ", 4 * a, "cm")
            print("Plocha = ", a * a, "cm^2")
            print("Uhlopricka = ", a * 1.4142, "cm")
        elif oper2 == 3:
            print()
            a = float(input("Zadejte stranu 'a' obdelniku (cm): "))
            b = float(input("Zadejte stranu 'b' obdelniku (cm): "))
            print("Obvod = ",2 * (a + b), "cm")
            print("Plocha = ",a * b, "cm")
            print("Uhlopricka = ",(sqrt(a**2 + b**2)),"cm")
        else:
            print("Toto neni platna volba!")
    elif vyber == 1:
        print("Vybrali jste numerickou kalkulacku.")
        print()
        c1 = float(input("Zadejte prvni cislo: "))
        c2 = float(input("Zadjete druhe cislo: "))
        print()
        print("Zadejte cislo operace: ")
        print("1 - Scitani")
        print("2 - Odcitani")
        print("3 - Nasobeni")
        print("4 - Deleni")
        print("5 - Umocnovani")
        oper1 = int(input("operace c.: "))
        if oper1 == 1:
            print("Soucet:", c1 + c2)
        elif oper1 == 2:
            print("Rozdil:", c1 - c2)
        elif oper1 == 3:
            print("Soucin:", c1 * c2)
        elif oper1 == 4:
            print("Podil:", c1 / c2)
        elif oper1 == 5:
            print(c1, "na", c2, "je:", c1 ** c2)
        else:
            print("Toto neni platna volba!")
    else:
            print("Toto neni platna volba!")
    none = True
    while(none):
        odp = input("\nDalsi priklad? y / n: ")
        print()
        if (odp == "y" or odp == "Y"):
            none = False
        elif (odp == "n" or odp == "N"):
            none = False
            nexto = False
        else:
            pass
input("\nDekuji za pouziti multicalc.\nAplikaci ukoncite libovolnou klavesou. ")
Odpovedať
"WHY I LOVE LINUX $ unzip; strip; touch; finger; grep; mount; fsck; more; yes; fsck; fsck; unmount; sleep "
Avatar
Vakos
Tvůrce
Avatar
Odpovedá na Jarda Antoš
Vakos:31.1.2021 15:16

Ahoj, to je chyba. Místo <, > se používá (, ).

Pokud nemáš důvod používat starší verzi python, tak používej novou verzi. Buď verzi 3.8 nebo už 3.9.

Odpovedať
"Jediný způsob, jak dělat skvělou práci, je milovat to, co děláte. Pokud jste to ještě nenašli, hledejte dál. Ne...
Avatar
Vakos
Tvůrce
Avatar
Odpovedá na Petr Nadvornik
Vakos:31.1.2021 15:19

Zkus si třeba upravit kód tak, aby to podporovalo i slovní zadání, tedy například obvod, obsah atd.

Odpovedať
"Jediný způsob, jak dělat skvělou práci, je milovat to, co děláte. Pokud jste to ještě nenašli, hledejte dál. Ne...
Avatar
Odpovedá na Vakos
Petr Nadvornik:31.1.2021 16:16

Ahoj, děkuji za tip. Mám v plánu si s tím trochu hrát, přidat další tvary (trojúhelník, koule, atd., to je už trochu složitější.). A přidat jak navrhuješ, aby po zadání čehokoliv se vypočítal zbytek. Uvidím jak to půjde. :-)

Odpovedať
"WHY I LOVE LINUX $ unzip; strip; touch; finger; grep; mount; fsck; more; yes; fsck; fsck; unmount; sleep "
Avatar
Vakos
Tvůrce
Avatar
Odpovedá na Petr Nadvornik
Vakos:31.1.2021 16:42

Další tvary se budou lišit hlavně v jednotlivých vzorcích. Možná zkus jít dál ať se třeba dostaneš k funkcím a celý kód lépe strukturuješ do logických částí, které vždy budeš spouštět, když budeš potřebovat.

Dívu se ti na kód a poslední podmínka by šla upravit do více verzí, aby jsi to měl jednodušší. Jeden ze způsobů může být pomocí zmenšení znaků. Poté pak nemusíš řešit, zda je to písmeno malé či velké.

string = "Takto vYpAdA sTriNg"
print(string.lower())  # Vystup: takto vypada string

Další možnost se pak nabízí pomocí klíčového slova in, zda se vyskytuje v daném listu. K tomu se ale dostaneš až později v python kurzu.

Způsobů jak co zapsat je spoustu. Doporučuji zkoušet, ale nebát se i pokračovat, protože ti to nabídne další možnosti, jak si kód trochu zjednodušit.

Odpovedať
"Jediný způsob, jak dělat skvělou práci, je milovat to, co děláte. Pokud jste to ještě nenašli, hledejte dál. Ne...
Avatar
Odpovedá na Vakos
Petr Nadvornik:31.1.2021 18:26

Pecka, díky za tip, určitě vyzkouším . Ano nejdříve chci pokračovat v kurzu a přidat do kódu návazné vzorce. Prozatím jsem spokojen s kalkulačkou, tak jak je, zbytek v přidám budoucnosti. V životě by mě nenapadlo, že si po letech budu opakovat matematiku. :)

Odpovedať
"WHY I LOVE LINUX $ unzip; strip; touch; finger; grep; mount; fsck; more; yes; fsck; fsck; unmount; sleep "
Avatar
Petr Zipoo Vošický:8.2.2021 12:13

Opět super a přehledné :)

Avatar
Jan Svoboda
Člen
Avatar
Jan Svoboda:9.2.2021 18:26

Hezké příklady

Avatar
Cyril Ševčík:1.4.2021 18:28

Ahoj, začínal jsem kdysi na interpretovaném Basicu (Commodore C64), tak mne trochu zaskočilo objektové chování cyklů. Abych si ověřil toto chování, tak jsem sestavil algoritmus, který po vložení libovolně dlouhého čísla spočítá počet jednotlivých číslic ve vloženém čísle. Jediný problém, který jsem měl, bylo vytvoření jednodimenzio­nálního pole, do kterého umísťuji počty číslic, kde index je současně zjišťovanou číslicí - použil jsem seznam. To, že k tomu budu potřebovat metodu ".append" a vložit počáteční hodnotu (nulu) mne trochu zaskočilo, ale dobrá zkušenost pro další lekci ...Nakonec z toho vyšel tento algoritmus:

cislo = str(input("Vlož libovolné číslo: "))
i=0
cislice = []
for i in range(0,10):
    cislice.append(0)
for i in range(0,10):
      znak = str(i)
      for znak in cislo:
          if znak in str(i):
                cislice[i] = cislice[i]+1
      else:
               pass
print("V čísle: ",cislo," je:")
for i in range (0,10):
    print("číslice: ",i," - ",cislice[i]," krát")
input("Stiskni klávesu")

V klasickém Basicu by to byl kód asi tak 3x delší ... - jde ten můj v Pythonu ještě zkrátit?

Avatar
Jindřich Milec:3.4.2021 12:12

Ahoj, porad nejak nerozumim tomu, proc se pred cyklem (while) promenne prirazuje boolovska hodnota True nebo False a jak tato hodnota cyklus ovlivnuje.

Posledné komentáre sú na spodnej časti poslednej stránky.
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 10 správy z 161.