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
Ondřej Vajda:3.7.2021 8:25

Ahoj, protože jsem se nudil, udělal jsem v pythonu příběhovku. Ale narazil jsem na problém. Když mám if choice2==1, jako první možnost a uvnitř mám 3 možnosti, tak u některých chci mít GAME OVER a další aby pokračovali, tak jsem tam napsal choice2=0, aby to ty choice další nepsalo, ale píše to další printy, které tam mám. Pokud na to existuje nějaký příkaz nebo nevím, tak budu rád, když mi odpovíte.

if choice2==1:

    if weapon=="kámen":
        print("Tajně ses k němu přiblížil a hodil jsi po něm kámen.")
        print("Bohužel si ho tím jenom naštval a začal na tebe útočit.")
        print("Divočák do tebe útočil tak silně, až to umlátil k smrti.\n")
        print("GAME OVER")
        choice3=0

    elif weapon=="sekera":
        print("Tajně ses k němu přiblížil a hodil jsi po něm sekeru.")
        print("Sekera se do něho zasekla a divočák ze svým tělem spadl na zem a nehýbal se.")
        print("Pomalu jsi se k němu přiblížil a ujistil jses že jsi ho opravdu zabil!")
        print("Potom jsi ho pomalu odtáhl do své jeskyně a měl jsi postaráno o další den a o příští snídani.\n")

    elif weapon=="dřevěný meč":
        print("Tajně ses k němu přiblížil a hodil jsi po něm dřevěný meč.")
        print("Bohužel dřevěné meče nejsou železné, takže ho to trochu škráblo a divočák se naštval a začal na tebe útočit.")
        print("Divočák do tebe útočil tak silně, až tě umlátil k smrti.\n")
        print("GAME OVER")
        choice3=0



if choice2==2:
    print("Jak jsi pokračoval a vzdaloval jses metr od metru od jeskyně, tak jsi zahlédl srnce.")
    print("Tento srnec už byl mrtvý, ale maso bylo čerstvé a proto jsi ho vzal do své jeskyně.")
    print("A měl jsi postaráno o další den a o příští snídani.\n")

print("ODPOLEDNE\n")
print("Opět vyjdeš z jeskyně a půjdeš se projít dál do okolí.")
print("Nakonec konečně najdeš daleko v údolí vesničku, která očividně byla obydlená.")
if choice3==3:
    print("jzxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")
 
Odpovědět
3.7.2021 8:25
Avatar
Zdeněk Vrbík:9.9.2021 21:44

Opsal jsem si zdrojový kód té Kalkulačky a nefungovalo mně to. Když jsem zadal "y" pro pokračování, neustále se opakovala otázka, jestli si přeju zadat další příklad. Možná jsem ale něco v tom kódu špatně opsal.
Řekněme, že nejsem úplný začátečník, ale vzhledem k tomu, že jsem doposud samouk, začal jsem tady na ITNetwork úplně od začátku. Neřešil bych takový případ jako u té kalkulačky cyklem "while", ale posílám scan se zdrojovým kódem mého řešení, které funguje. (Vyzkoušel jsem to!)
Zajímal by mě názor někoho ze zkušenějších na toto moje řešení.

 
Odpovědět
9.9.2021 21:44
Avatar
Neaktivní uživatel:12.9.2021 11:19

ahoj, myslím že máte chybu v Kalkulačce na vašem 28. řádku
odpoved = input("\nPřejete si zadat další příklad? y / n: ")
napsal jsem:
odpoved = str(input("n\pře­jete si zadat další příklad? y / n: "))
kalkulačka pak funguje

Odpovědět
12.9.2021 11:19
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Neaktivní uživatel:12.9.2021 11:54

... měl jsem chybu v n\ -> \n ;-)
odpoved = str(input("\npře­jete si zadat další příklad? y / n: "))

Odpovědět
12.9.2021 11:54
Neaktivní uživatelský účet
Avatar
Lukáš Marek:12.9.2021 17:32

Ahoj, měl bych dotaz k výpočtu počtu znaků v rámci slova.
Zkoušel jsem vymyslet, jakým způsobem zobrazit pouze to, zda se jedná o souhlásky, samohlásky atp. Musel bych napsat všechny varianty, které mohou nastat viz přiložená část kódu? Nebo mi něco uniká a je možný to napsat jinak? Děkuji!

print(slovo, 'obsahuje:')
if ((samohlasky > 0) and (souhlasky > 0) and (cisla > 0) and (ostatni > 0)):
    print(samohlasky, 'samohlasek')
    print(souhlasky, 'souhlasek')
    print(cisla, 'cisel')
    print(ostatni, 'ostatnich znaku')
elif ((souhlasky > 0) and (cisla > 0) and (ostatni > 0)):
    print(souhlasky, 'souhlasek')
    print(cisla, 'cisel')
    print(ostatni, 'ostatnich znaku')
elif ((cisla > 0) and (ostatni > 0)):
    print(cisla, 'cisel')
    print(ostatni, 'ostatnich znaku')
else:
    print('slovo neobsahuje zadny znak')
input('\nKonec aplikace')
 
Odpovědět
12.9.2021 17:32
Avatar
Alesh
Tvůrce
Avatar
Odpovídá na Lukáš Marek
Alesh:12.9.2021 21:37

Chápu správně, že to je fragment upraveného kódu z této lekce, kde tedy usiluješ o to, aby se nevypisovalo oznámení počtu dané kategorie znaků (samohlásky, souhlásky, čísla a ostatní), pokud v tom slově daná kategorie znaků není zastoupená?

 
Odpovědět
12.9.2021 21:37
Avatar
Odpovídá na Alesh
Lukáš Marek:13.9.2021 18:37

Ano je to tak, jde mi vlastně o to, že v případě, že slovo bude obsahovat jen souhlásky, vypíše to jen souhlásky atp.
Jediné, co mě napadá, tak vypsat všechny varianty, ale hádám, že existuje možnost, jak to vyřešit, ale pravděpodobně až v dalších lekcích.

 
Odpovědět
13.9.2021 18:37
Avatar
Alesh
Tvůrce
Avatar
Odpovídá na Lukáš Marek
Alesh:13.9.2021 20:57

No, to ses nad tím moc nezamyslel. ;-) Jak se dělají podmínky if - elif - else už je podle mě v této fázi kurzu kompletně vysvětleno, vše další je už jen o tom, jak dokážeš přemýšlet v kombinaci se zkušenostmi, které máš. Pokud moc zkušeností nemáš, o to víc musíš zapojit tu hlavu. ;-)
To, co jsi vytvořil, je chybné, odpověz si na otázku, co se vypíše v případě, že slovo obsahuje např. jen souhlásky.
Správné řešení tvého požadavku je, že uděláš jednotlivé if, kde si vždy ověříš jen jednu z těch kategorií a tu pak při splnění podmínky tuto kategorii vypíšeš.

 
Odpovědět
13.9.2021 20:57
Avatar
Michal
Člen
Avatar
Michal:14.9.2021 18:48

Ahoj,
zajímalo by mě, proč je volen z mého pohledu tak komplikovaný přístup při řešení výpisu sudých čísel. Proč další IF a celočíselené dělení 2?

Nevystačil by si člověk s prostým sčítáním a polovičním počtem cyklů? Vím, že je dnes výkon PC takový, že člověka tento výpočet nezdrží, ale z mého pohledu by se měl vždy volit nejméně složitý postup nejen s ohledem na přehlednost, ale i minimalizování zatížení PC. Nebo mi něco uniká?

Co takovéto řešení bez dalšího IF a výkonově náročného dělení?

print("Program vypíše všechna sudá kladná čísla.")
max = int(input("Zadej maximální hodnotu čísla: "))
cislo = 0
while (cislo <= max):
    print(cislo)
    cislo = cislo + 2
else:
    print("Konec programu!")

Díky za reakce

Michal

 
Odpovědět
14.9.2021 18:48
Avatar
Alesh
Tvůrce
Avatar
Odpovídá na Michal
Alesh:14.9.2021 20:16

Já bych to bral jako ukázku, prostě máš cyklus a v něm podmínku. Jinak máš samozřejmě pravdu. Taky by to šlo řešit přes for cyklus. Jinak inkrementaci proměnné lze psát taky spořivěji:

# cislo = cislo + 2
cislo += 2
 
Odpovědět
14.9.2021 20:16
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.