NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Lekce 8 - Podmínky (větvení) v Pythonu

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
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. ")
Odpovědět
31.1.2021 14:54
"WHY I LOVE LINUX $ unzip; strip; touch; finger; grep; mount; fsck; more; yes; fsck; fsck; unmount; sleep "
Avatar
Vakos
Tvůrce
Avatar
Odpovídá 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.

Odpovědět
31.1.2021 15:16
"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
Odpovídá 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.

Odpovědět
31.1.2021 15:19
"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
Odpovídá 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. :-)

Odpovědět
31.1.2021 16:16
"WHY I LOVE LINUX $ unzip; strip; touch; finger; grep; mount; fsck; more; yes; fsck; fsck; unmount; sleep "
Avatar
Vakos
Tvůrce
Avatar
Odpovídá 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.

Odpovědět
31.1.2021 16:42
"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
Odpovídá 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. :)

Odpovědět
31.1.2021 18:26
"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é :)

 
Odpovědět
8.2.2021 12:13
Avatar
Jan Svoboda
Člen
Avatar
Jan Svoboda:9.2.2021 18:26

Hezké příklady

 
Odpovědět
9.2.2021 18:26
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?

 
Odpovědět
1.4.2021 18:28
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.

 
Odpovědět
3.4.2021 12:12
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 158.