Vianoce v ITnetwork sú tu! Dobí si teraz kredity a získaj až 80 % extra kreditov na e-learningové kurzy ZADARMO. Zisti viac.
Hľadáme nové posily do ITnetwork tímu. Pozri sa na voľné pozície a pridaj sa k najagilnejšej firme na trhu - Viac informácií.

Diskusia – 7. 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
Avatar
rogzyn
Člen
Avatar
rogzyn:22.3.2014 17:52

nerozumiem prikazu break na co je vhodne ho tam dat.
neda sa to napisat bez toho ?

a tiez neviem naco by bolo uzitocne niekedy pouzit prikaz continue

dakujem za vysvetlenie

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úů":
        samohlasky = True
        **break**
if samohlasky:
    print(slovo, "obsahuje samohlásky.")
else:
    print(slovo, "neobsahuje samohlásky.")
input("")
 
Odpovedať
22.3.2014 17:52
Avatar
rogzyn
Člen
Avatar
rogzyn:22.3.2014 18:00

premenna znak nebola nikde definovana. co vlastne predstavuje v strukture ?
je to len "povinna vata", akysi medzistupen, bez ktoreho sa to neda napisat ?
dik

 
Odpovedať
22.3.2014 18:00
Avatar
gcx11
Tvůrce
Avatar
gcx11:22.3.2014 18:09

Ahoj, znak je povinná vata. Je to proměnná do které se ukládá aktuální znak z řetězce v tomto případě řetězce slovo. Tu proměnou lze pojmenovat i jinak. Poté s tím znakem děláš co potřebuješ. V tomto případě zjistíš, zda-li je v "aáeéěiíoóuúů". Pokud ano - je to samohláska.

Ten break tam být nemusí, ale jakmile jednou zjistíš, jestli tam je samohláska, tak to zjišťovat pro další znaky nemá význam.

Jestli jsi to nepochopil, klidně se ptej :)

Editované 22.3.2014 18:09
 
Odpovedať
22.3.2014 18:09
Avatar
gcx11
Tvůrce
Avatar
Odpovedá na rogzyn
gcx11:22.3.2014 18:17

Ten continue - rovnou pokračuje v další iteraci cyklu.

Například chceš-li sčítat všechna lichá čísla od 1 do čísla zadaného uživatelem, tak sudá přeskočíš:

print("Program sečte všechna lichá čísla do n")
maximalni_cislo = input("Zadejte číslo: ")
vysledek = 0
for cislo in range(maximalni_cislo):
    if cislo % 2 == 0: #je sudé
        continue
    else:
        vysledek = vysledek + cislo
print("Výsledek je", vysledek)
input("")

EDIT: U předchozí opovědi jsem se špatně vyjádřil, bez toho znak (nebo čehokoliv jiného) se to napsat nedá. Je to taková syntaxe cyklu for.

Editované 22.3.2014 18:20
 
Odpovedať
22.3.2014 18:17
Avatar
rogzyn
Člen
Avatar
rogzyn:22.3.2014 19:10

je toho viac co mi je nejasne, ale nechcem sa pytat uz lebo ostatni sa budu asi hnevat
ale pre mna je to nove, kedze som este neprogramoval

 
Odpovedať
22.3.2014 19:10
Avatar
rogzyn
Člen
Avatar
rogzyn:22.3.2014 19:59

tento kod ti nesuhlasi s obrazkom k tomu

print("Program zjistí z čeho se skládá slovo.")
slovo = input("Zadejte slovo: ")
samohlasky = 0
souhlasky = 0
ostatni = 0
cisel = 0
for znak in slovo:
    if znak in "aáeéěiíoóuúů":
        samohlasky = samohlasky + 1
    elif znak in "bcčdďfghjklmnňprřsštťvwxzž":
        souhlasky = souhlasky + 1
    elif znak in slovo:
        cisel = cisel + 1
    else:
        ostatni = ostatni + 1
print(slovo, "má: ")
print(samohlasky, "samohlásek")
print(souhlasky, "souhlásek")
print(cisel, "čísel")
print(ostatni, "ostatních znaků...")
input("\nAplikaci ukončíte stisknutím libovolné klávesy...")

v printe ma byt prve textovy retazec az potom premenna

a nechapem ako si nadefinoval cisla. znak je automaticky cislo alebo neviem si to predstavit. nemalo tam byt nieco ako
cisel = type(number)

len strielam....

mozes vysvetlit mne ako laikovy co znamena Iteracia, Iterovat ?

Editované 22.3.2014 20:02
 
Odpovedať
22.3.2014 19:59
Avatar
gcx11
Tvůrce
Avatar
gcx11:22.3.2014 20:08

Dík, no vidíš že to chápeš :D Opravím to.

Syntaxe cyklu for je:

for proměnná in iterovatelný_ob­jekt

No a ten cyklus bere postupně jednotlivé prvky toho iterovatelného objektu (v tomto případě jednotlivé znaky řetězce). No a v aktuálním průchodu cyklem se ti do proměnné uloží momentální znak. S ním pak něco můžeš dělat.

Klidně se ptej, aspoň pokud to bude číst někdo další tak to pochopí. Mně to přijde jasné, jelikož to s tím mám zkušenosti, ale na začátku jsem to taky moc nechápal.

 
Odpovedať
22.3.2014 20:08
Avatar
gcx11
Tvůrce
Avatar
Odpovedá na rogzyn
gcx11:22.3.2014 20:14

V pythonu definovat nic nemusíš, sám pozná datový typ podle toho co do něj přiřazuješ. Iterace je opakování, iterovatelný objekt je objekt, který lze rozložit do více objektů. Např. řetězec se skládá z jiných řetězců... Ale pro čísla toto neplatí! Musel by jsi ho převést na řetězec.

 
Odpovedať
22.3.2014 20:14
Avatar
rogzyn
Člen
Avatar
rogzyn:22.3.2014 20:16

nie nechapem, inak som to myslel
nevadi

gl

 
Odpovedať
22.3.2014 20:16
Avatar
gcx11
Tvůrce
Avatar
Odpovedá na rogzyn
gcx11:22.3.2014 20:22

Nechtěl aby jsi myslel, že tě chci odbýt. Asi to neumím vysvětlit :(
znak není číslo, do něj se ukládají jednotlivé znaky z řetězce.
Při prvním průchodu cyklem se do něj uloží první. Pak zjišťuješ, jestli je ten znak samohláska, nebo něco jiného... Při druhém průchodu cyklem se do něj uloží druhé písmeno (ne navíc, přepíše minulý znak) a tak dále...

 
Odpovedať
22.3.2014 20:22
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.

Zatiaľ nikto nevložil komentár - buď prvý!