Definování uživatelských funkcí-problém začátečníka – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Definování uživatelských funkcí-problém začátečníka – Python – Fórum – Programujte.comDefinování uživatelských funkcí-problém začátečníka – Python – Fórum – Programujte.com

 

Racek
~ Anonymní uživatel
4 příspěvky
15. 7. 2007   #1
-
0
-

Dobrý den, mám problém s následujícím skriptem z e-knihy Létající cirkus-python tutoriál:

>>> def tiskni_text(answer, text = "nedefinovan", pocet = 1):

for foo in range(pocet):
print answer, text or "prazdny retezec"


>>> tiskni_text("Parametr text je")
Parametr text je nedefinovan
>>> tiskni_text("Parametr text je", "obycejny text")
Parametr text je obycejny text
>>> tiskni_text("Parametr text je", "obycejny text", 3)
Parametr text je obycejny text
Parametr text je obycejny text
Parametr text je obycejny text
>>>


Něčemu v tomto skriptu rozumím, něčemu ne. Například, proč za for je zrovna foo a jestli tam může být i cokoli jiného kromě klíčových slov Pythonu, pak proč je tam v části print answer, text or "prazdny retezec" ten "prazdny retezec, když stejně není nikde vytisknut a jiné pro mne nesrozumitelné věci. Našel by se nějaký dobrák, který by mi tento skript objasnil, kde se co děje? Například přidal komentáře nebo podobně? Byl bych Vám moc vděčný. S pozdravem, Racek

Nahlásit jako SPAM
IP: ...–
geon0
Grafoman
16. 7. 2007   #2
-
0
-

# -*- coding: utf-8 -*- 

# definice má vypadat spíše takto: (text=""), aby se ti následně podařiolo vytisknout "prazdny retezec"
def tiskni_text(answer, text = "", pocet = 1):
print "-"*40 # at máme hezky oddělený tisk

# jméno "foo" je jakýsi standard, když zrovna nevíš, jak proměnnou pojmnovat. POužívá se hlavně v tutoriálech. A jestli tam může být cokoliv jiného? Proč se ptáš, proč to nevyzkoušíš? (může)
for foo in range(pocet):

# or se používá jako logické nebo. Zjednodušeně: toto vytiskne JEN text, pokud v proměnné text něco je, pokud v ní nic není (je prázdná nebo nulová nebo podobně), tak se vytiskne druhá část výrazu za "or", tedy v tomto případě "prázdný řetězec"
print text or "prazdny retezec"

tiskni_text("Parametr text je")
tiskni_text("Parametr text je", "obycejny text")
tiskni_text("Parametr text je", "obycejny text", 3)


Nahlásit jako SPAM
IP: ...–
geon. volume doprava.
Racek
~ Anonymní uživatel
4 příspěvky
16. 7. 2007   #3
-
0
-

Mnohokrát Vám děkuji za odpověď, a mám ještě jednu otázku:), pochopil jsem správně význam funkce? Že v tělu funkce je seznam jednoduchých formálních parametrů, například def neco(a, b:, a příkazy, například print a, b, a pak mimo tělo funkce jenom dodáváme data(například aby to místo a vytisklo větu s tím, že příkazy(např. print) nemusíme neustále opakovat? Takto to zatím chápu já, nevím, jestli je to dobře nebo špatně, mohli byste mně k tomu něco písnout?(doufám, že jsem se nějak nezamotal a že můj hodně těžký slovosled nějak přeberete:), předem dík

Nahlásit jako SPAM
IP: ...–
geon0
Grafoman
16. 7. 2007   #4
-
0
-

Pokud se v tvém programu něco vyskytuje několikrát (stačí i 2x) to samé, nebo velmi podobné, je vhodné to dát do funkce. Samotné print asi ne (to bys jakoby nic neuspořil), ale pokud u toho print ještě něco, anebo ještě něco. Tak asi tak.

Nahlásit jako SPAM
IP: ...–
geon. volume doprava.
Racek
~ Anonymní uživatel
4 příspěvky
16. 7. 2007   #5
-
0
-

Díky moc, to jsem potřeboval

Nahlásit jako SPAM
IP: ...–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 9 hostů

Podobná vlákna

Problém začátečníka — založil Zoufalec

Problém s funkcí — založil mistr jirka

Problém s funkcí — založil mistr jirka

Problém s funkcí strtok() — založil Sprinter

Problém s funkcí strcat() — založil Sprinter

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý