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:

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
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 :)

Editované
Avatar
Martin Petrovaj
Tvůrce
Avatar
Odpovedá 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
Odpovedať
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 ("")

Avatar
Martin Petrovaj
Tvůrce
Avatar
Odpovedá 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}!")
Odpovedať
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".

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

Avatar
gcx11
Tvůrce
Avatar
Odpovedá 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.

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("")

Avatar
Ondra Hájek
Člen
Avatar
Odpovedá 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.")

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"):
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.