NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
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
brevnovak
Člen
Avatar
brevnovak:8.2.2018 18:51

vsiml jsem si, ze se for pouziva i uprostřed vyrazu:

print (any(c.isalnum()  for c in str))

je to tu nekde popsane? a lze takto používat i jiné cykly?

diky moc :)

Editováno 8.2.2018 18:52
 
Odpovědět
8.2.2018 18:51
Avatar
Martin Petrovaj
Tvůrce
Avatar
Odpovídá na brevnovak
Martin Petrovaj:8.2.2018 19:39

To, čo je v tvojom príklade sa volá "generátorová notácia" (angl. list comprehension):

http://www.secnetix.de/…ensions.hawk
https://docs.python.org/…uctures.html#…

V skratke povedané, jedná sa o konštrukciu veľmi podobnú tzv. lambda výrazom (anonymným funkciám), ktorá ti dovolí stručne a elegantne vykonať nejakú operáciu s prvkami nejakej štruktúry, napr. poľa. Dajú sa tak upravovať existujúce polia, ale aj vytvárať nové:

pole = [1, 2, 3, 4]


# všeobecný tvar: vyraz for premenna in struktura if podmienka

rovnake_pole = [ i for i in pole ]

dvojnasobne_pole = [ i*2 for i in pole ]

pole_druhych_mocnin_parnych_cisel = [ i**2 for i in pole if i%2 == 0 ]
# áno, je to dlhý názov premennej a podmienka sa dala zapísať aj ako if not i%2
Odpovědět
8.2.2018 19:39
if (this.motto == "") { throw new NotImplementedException(); }
Avatar
Adam Kovář
Člen
Avatar
Adam Kovář:16.3.2018 13:07

Ahoj, nefunguje mi toto cvičení. Pokaždé píše, že tam nejsou žádné samohlásky. Navíc jsem úplně nepochopil, jak Python ví, že znak je první, druhé, třetí, atd.. písmeno ve slově.

print ("Program zjistí zda dané slovo obsahuje samohlásky")
slovo = str(input("Zadejte slovo:" ))
samohlasky = False
for znak in slovo:
if znak in "aáeéěiíoóuúůyý":
samohlásky = True
break
if samohlasky:
print(slovo, "obsahuje samohlásky")
else:
print(slovo, "neobsahuje samohlásky")
input ("")

 
Odpovědět
16.3.2018 13:07
Avatar
Martin Petrovaj
Tvůrce
Avatar
Odpovídá na Adam Kovář
Martin Petrovaj:16.3.2018 13:59

Máš tam len preklep v mene premennej :-)

print ("Program zjistí zda dané slovo obsahuje samohlásky.")
slovo = str(input("Zadejte slovo: " ))
samohlasky = False
for znak in slovo:
    if znak in "aáeéěiíoóuúůyý":
        samohlasky = True       # preklep u teba - namiesto premennej "samohlasky" priraďuješ do "samohlásky" s dĺžňom
        break
if samohlasky:
    print(slovo, " obsahuje samohlásky")
else:
    print(slovo, " neobsahuje samohlásky")

input()

No a Pythonovský for môžeš chápať ako foreach v iných jazykoch. Ak iné jazyky nepoznáš (alebo som ti jednoducho nepomohol), tak Python si pred cyklom reťazec "rozmení" na jednotlivé znaky a s každým znakom vykoná príkazy, ktoré napíšeš do tela cyklu.

string1 = "vták"
print(string1 + " je slovo!")

for znak in string1:
    print(f"Teraz cyklus pracuje s písmenom {znak}!")

# for vie pracovať aj s inými iterovateľnými objektami,
# napr. s n-ticami (tuple) či zoznamami (list),
# nie len s reťazcami
print("\nAha! Pozri sa hore!")
string2 = "lietadlo"

for slovo in string1, string2, "Superman":
    print(f"Je to {slovo}!")
Odpovědět
16.3.2018 13:59
if (this.motto == "") { throw new NotImplementedException(); }
Avatar
Zdenek Štěpán:29.11.2018 15:57

Je to sice drobnost, ale v řetězci s definovanými souhláskami chybí písmeno "q".

 
Odpovědět
29.11.2018 15:57
Avatar
Jakub Kovar
Člen
Avatar
Jakub Kovar:30.11.2018 11:07

Ahoj, v následujícím příkladu maš chyby.
print ("Program zjistí zda dané slovo obsahuje samohlásky.")
slovo = str(input("Zadejte slovo: " )) # u promenne slovo chybi str
samohlasky = False
for znak in slovo:
if znak in "aáeéěiíoóuúůyý":
samohlasky = True
break #break je spatne umisteny.
if samohlasky:
print(slovo, " obsahuje samohlásky")
else:
print(slovo, " neobsahuje samohlásky")

Moje nevycvicene oko melo docela problem to odhalit. Oprav to, prosim.
Diky Jakub

 
Odpovědět
30.11.2018 11:07
Avatar
gcx11
Tvůrce
Avatar
Odpovídá na Jakub Kovar
gcx11:1.12.2018 0:18

K první výtce, funkce input vrací string, takže přetypovávání na string je zbytečné. K druhé výtce, díky za upozornění, pošlu článek na opravu.

 
Odpovědět
1.12.2018 0:18
Avatar
Michael Smutný:7.5.2019 9:42

Ahoj, co znamená to "samohlasky = False"? Proč to tam je? A proč je na 5. řádku zespodu "if samohlasky"? Nejde mi na hlavu, jak mohu nejprve napsat, že samohlasky=False a v zápětí, že samohlasky=True. Díky za odpověď.

print("Program zjistí zda dané slovo obsahuje samohlásky.")
slovo = input("Zadejte slovo: ")
samohlasky = False
for znak in slovo:
if znak in "aáeéěiíoóuúůyý":
samohlasky = True
break
if samohlasky:
print(slovo, "obsahuje samohlásky.")
else:
print(slovo, "neobsahuje samohlásky.")
input("")

 
Odpovědět
7.5.2019 9:42
Avatar
Ondra Hájek
Člen
Avatar
Odpovídá na Michael Smutný
Ondra Hájek:12.8.2019 11:59

Ahoj Michael Smutný, já to chápu následovně:
"samohlasky = False" znamená, že proměnné s názvem "samohlásky" přiřazuješ booleovskou hodnotu False (nepravda).

if znak in "aáeéěiíoóuúůyý":
samohlasky = True
break toto je podmínka "if" v těle cyklu, která pokud je splněna, tak se
hodnota proměnné "samohlasky" překlopí do hodnoty
True(pravda) a zároveň se cyklus přeruší příkazem "break"

A pak následuje větvení "if - elese" které říká: pokud má proměnná "samohlásky" hodnotu True, vykonej print(slovo, "obsahuje samohlásky.")
jinak vykonej (slovo, "neobsahuje samohlásky.")

 
Odpovědět
12.8.2019 11:59
Avatar
Michaela Honková:11.11.2019 15:11

V poslednim kodu kalkulacky melo byt misto

elif (odpoved == "n" or odpoved == "n"):

tohle..

elif (odpoved == "n" or odpoved == "N"):
 
Odpovědět
11.11.2019 15:11
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.