Vlastní funkce – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Vlastní funkce – Python – Fórum – Programujte.comVlastní funkce – Python – Fórum – Programujte.com

 

nestor0
Newbie
15. 8. 2006   #1
-
0
-

čtu si nyní pěknou učebnici na internetu s názvem "Jak se naučit programovat".
čtení je to moc pěkné, ale některé příklady nechápu, proč fungují tak, jak fungují. S tím ale počítám. Jsem nováček. Například v článku o tom, jak definovat vlastní funkci je tento příklad:
#########################################
def tabulkaNasobku(n):
s = ""
for i in range(1, 13):
s = s + "%d x %d = %dn" % (i, n, i*n)
return s

print tabulkaNasobku(7)
#########################################

To vypíše skutečně všechny požadované násobky. Ale nechápu,
proč je tam to s = "" .


Zkusil jsem to tedy bez toho takhle:
#########################################
def tabulkaNasobku(n):
for i in range(1, 13):
s = "%d x %d = %dn" % (i, n, i*n)
return s

print tabulkaNasobku(7)
#########################################

Toto vypíše jen poslední násobek, tedy 12x7=84.

Proč to tak funguje, prosím?

Nahlásit jako SPAM
IP: ...–
Jakub Vojáček
~ Moderátor
0
Grafoman
15. 8. 2006   #2
-
0
-

no, myslím že bys sis měl trochu víc prozkoumat dokumentaci :toto:

není to až zas tak moc složité.

V prvním příkladě musí být to s už deklarováno, jinak ti to vrátí chybu. Jistě znáš co dělá cyklus for. Kdyby ne, tak ti to tedy ukážu:



for i in range(1, 13):
print i

>>>
1
2
3
4
5
6
7
8
9
10
11
12

s = s + "%d x %d = %dn" % (i, n, i*n)
#tady to se děje v každém cyklu a i je vždy o jedno větší, takže by mělo být jasné co stane.


v druhém příkladu ten cyklus opakuješ taky 12 ale hodnota proměnné s se vždy nahradí novou, takže ti to vrátí pouze poslední násobek...

snad jsem to vysvětlil dostatečně, nejsem v tomhle dostatečně zběhlý :skunk2:

Nahlásit jako SPAM
IP: ...–
Navštivte server Matematika pro každého
Najdete zde články zabývající se matematikou základních a středních škol a databázi hlavolamů.
Pro vyzkoušení Vaš
geon0
Grafoman
16. 8. 2006   #3
-
0
-

ten druh? p??klad ti ale mus? kon?it s chybou (pokud tam vr?t?? podle origin?lu to s=s+..., aby ti to fungovalo jak m?)! Vem si p??klad, kdy? m?? t?eba

>>> a=a+1
Traceback (most recent call last):
File "<stdin>", line 1, in ?
NameError: name 'a' is not defined

Co mysl??, ?e m? Pyhon dosadit za to druh? "a", to, kter? je za z?vorkou? Nic, nev?, a proto tento p??klad skon?? s chybou.

Je nutn? v t?chto p??padech prom?nnou "inicializovat":
>>> a=0
>>> a=a+1
>>> a
1

No a s t?m ?et?zcem to je podobn

Nahlásit jako SPAM
IP: ...–
geon. volume doprava.
nestor0
Newbie
17. 8. 2006   #4
-
0
-

geon napsal:

ten druh? p??klad ti ale mus? kon?it s chybou (pokud tam vr?t?? podle origin?lu to s=s+..., aby ti to fungovalo jak m?)! Vem si p??klad, kdy? m?? t?eba

>>> a=a+1
Traceback (most recent call last):
File "<stdin>", line 1, in ?
NameError: name 'a' is not defined

Co mysl??, ?e m? Pyhon dosadit za to druh? "a", to, kter? je za z?vorkou? Nic, nev?, a proto tento p??klad skon?? s chybou.

Je nutn? v t?chto p??padech prom?nnou "inicializovat":
>>> a=0
>>> a=a+1
>>> a
1

No a s t?m ?et?zcem to je podobn?.


No, zjusil jsem to bez incializace s t?m s + takhle

def tabulkaNasobku(n):
for i in range(1, 13):
s = s + "%d x %d = %dn" % (i, n, i*n)
return s

print tabulkaNasobku(7)

Chybu to nahl?silo, ale v?sledky to vypsalo.
nestor

Nahlásit jako SPAM
IP: ...–
Jakub Vojáček
~ Moderátor
0
Grafoman
17. 8. 2006   #5
-
0
-

mě to teda hodilo tuhle chybu:



Traceback (most recent call last):
File "C:Documents and SettingsBluPlochazkouska.pyw", line 6, in -toplevel-
print tabulkaNasobku(7)
File "C:Documents and SettingsBluPlochazkouska.pyw", line 3, in tabulkaNasobku
s = s + "%d x %d = %dn" % (i, n, i*n)
UnboundLocalError: local variable 's' referenced before assignment

Nahlásit jako SPAM
IP: ...–
Navštivte server Matematika pro každého
Najdete zde články zabývající se matematikou základních a středních škol a databázi hlavolamů.
Pro vyzkoušení Vaš
nestor0
Newbie
17. 8. 2006   #6
-
0
-

No, zkusil jsem to bez incializace s tím s + takhle

def tabulkaNasobku(n):
for i in range(1, 13):
s = s + "%d x %d = %dn" % (i, n, i*n)
return s

print tabulkaNasobku(7)

Chybu to nahlásilo, ale výsledky to vypsalo.
nestor


Dělám volovinu. Beru zpět. Sorry.

Nahlásit jako SPAM
IP: ...–
nestor0
Newbie
17. 8. 2006   #7
-
0
-

Já už vím, jsem pako. Omlouvám se. :((

Nahlásit jako SPAM
IP: ...–
geon0
Grafoman
17. 8. 2006   #8
-
0
-

Škoda, že teď nejde www.py.cz, tam je o UnboundLocalError velmi hezký článek. Dokonce i Google ho najde jako první ;-)

Nahlásit jako SPAM
IP: ...–
geon. volume doprava.
nestor0
Newbie
17. 8. 2006   #9
-
0
-

...to mne taky ?tvalo, kdy? jsem p?ed p?r dny za?al nach?zet sympatie k Pythonu.
Kdy to p?jde a pro? to nejde?

Nahlásit jako SPAM
IP: ...–
geon0
Grafoman
17. 8. 2006   #10
-
0
-

Nevím a nevím.

Nahlásit jako SPAM
IP: ...–
geon. volume doprava.
geon0
Grafoman
21. 8. 2006   #11
-
0
-

Už to jde.

Nahlásit jako SPAM
IP: ...–
geon. volume doprava.
nestor0
Newbie
22. 8. 2006   #12
-
0
-

No jo, tak to už jsem navštívil nedávno. Našel jsem to nějak skrz gůgl na zrcadle nějakého Schvarze tady http://www.svarz.cz/translate/.
Kdybych tušil, že je to ono, napsal to sem. Jsem to ale nedovtípálek :? .
Já jsem jen začátečník, ale asi bude zajímavé na jeho stránkách hned to o tom "Web FrameWork: Django", nebo ne??

Nahlásit jako SPAM
IP: ...–
Farundel0
Super člen
22. 8. 2006   #13
-
0
-

[url=www.svarz.cz/translate/]www.svarz.cz/translate/[/url]


Tu stranku jsem si jeste ani nestacil poradne prohlidnout, protoze jen co jsem tam vesel, tak jsem hned zacal koukat na tu perfektni prednasku o Djangu :o) Fakt super! Diky moc za odkaz ;o)

Nahlásit jako SPAM
IP: ...–
To follow the path:
look to the master,
follow the master,
walk with the master,
see through the master,
become the master.
nestor0
Newbie
23. 8. 2006   #14
-
0
-

Nemáš za co. Jsem v tom nevinně :-)
Já jsem teprve ve čtyřce Phytonovského kurzu, takže důvod, proč tě tolik rozradostnilo, ještě nejsem schopen pochopit :O. Popravdě, já jsem si to ani nepouštěl, protože bych stejně asi nevěděl, která bije.

Nahlásit jako SPAM
IP: ...–
Farundel0
Super člen
23. 8. 2006   #15
-
0
-

Rozradostnilo me to z toho duvodu, ze ackoliv uz delam asi pet let v PHP, rad bych zacal pouzivat pro tvorbu webu Python. A perfektni zpusob, jak to delat je s pomoci frameworku Django. Moc jsem Django zatim nestudoval, byl jsem linej a mam jine starosti, ale kdyz jsi mi tak naserviroval prednasku developera Djanga primo pod nos..... ;o)))

PHP je fajn, akorat 99% veci v nem naprogramovanych je naprostej bordel a dzungle. Jeho problem je v tom, ze se v nem lidi uci proste delat stranky. Nic jineho je nezajima (asi je to trochu vina i literatury) a tak prasi, prasi a prasi... mluvim z vlastni zkusenosti - pred peti lety jsem se PHP ucil za stejnym ucelem: proste delat stranky, bez nejakeho promysleni nad logickym oddelenim obsahu od kodu :o) Vetsina kodu v PHP proto pripomina totalni bastl... a Python + Django je podle me idealni reseni, jak se dostat ze zacarovaneho kruhu :o)

Dusledne oddeleni logiky kodu od obsahu, to je podle me to, co v ucebnicich PHP chybi.

Samozrejme ze se da v PHP programovat elegantne, prehledne a efektivne, s vyuzitim templatu... ale jelikoz mam rad Python a libi se mi vic nez PHP, tak mi prijde jednodusii zacit s Djangem nez se trvrde preucovat stare navyky s PHP :o)

No, to jen takove strusne vysvetleni ;o)

Nahlásit jako SPAM
IP: ...–
To follow the path:
look to the master,
follow the master,
walk with the master,
see through the master,
become the master.
nestor0
Newbie
23. 8. 2006   #16
-
0
-

Co jsem zatím četl o Pythonu, tak udělat v něm stránky snad jde. nevím jestli jednodušeji než v php. Vždyť php bylo uděláno právě pro vývoj webovek. Já php umím jen na úrovni tak asi maximálně po vytvoření blogu. Když jsem chtěl něco složitějšího chodil jsem pro rozumy k Rosalyndě, známé to pomocnici začínajících kodérů html a programátorů v php (ještě dříve k Juhůovi). Ale o Pythonu jsem vyserfoval většinou informace o tom, že stránky sice uděláš, ale nemáš je kde hostovat. Šel jsem do něj jako do jazyku, který mi dá základy o programování a připraví mne třeba na c++. Reference na něj z tohoto pohledu byly jasně nejpřesvědčivější a po 4 lekcích se mi zdá, že nelhaly. Mým cílem je umět tvořit jak webové aplikace v něčem jném než je php, tak i aplikace desktopové. To zvládne jistě Python také, myslel jsem ale, že clem a univerzálem se mi musí nutně stát c++ spolu s Pythonem. Desktopovky (asi se tomu říká GUI, že?) znám jen jako uživatel v práci. Je to většinou uděláno pod delfi+firebird. Než jsem šel do Pythonu, dost jsem četl diskuse na téma, "v čem začít", "v čem se stát programátorem", pro a proti, apod. To mi jen dokanale zamotalo hlavu. Spíše samé flamy. Nakonec mi z toho přehršle názorů vyšel Python a c++. Když děláš 5 let v php, třeba máš za sebou podobná dilema i zkušenosti, možná mi trochu vyčistíš brejle :-). Za každou myšlenku díky předem.

Nahlásit jako SPAM
IP: ...–
Jakub0
Super člen
23. 8. 2006   #17
-
0
-

Nemohu než souhlasit s Farundelem. V php programuji sic nejčastěji, ale co bych za to dal, kdyby byl po ruce freehosting s Pythonem. Taky se občas dostanu do situace, kdy bych nejradšji použil elegantnější pythonérskou konstrukci.

Jinak co se týká šablonovacích systémů pro php. Můj názor je takový, že pro menší projekty představují kladivo na mouchy, ale pro střední a větší, kde se podílí minimálně webdesignér a programátor, mohou být neocenitelnou pomůckou.

Nahlásit jako SPAM
IP: ...–
Věřím, že můžete v životě získat všechno, co budete chtít, když budete pomáhat druhým lidem, aby dostali to, co si přejí oni. - Zig Ziglar TOPlist
Josef Hornych0
Návštěvník
25. 8. 2006   #18
-
0
-
Nahlásit jako SPAM
IP: ...–
Jakub Vojáček
~ Moderátor
0
Grafoman
31. 8. 2006   #19
-
0
-

nějak se v tom nevyznám, můžeš sem dát link na určitě bezplatnej web?

Nahlásit jako SPAM
IP: ...–
Navštivte server Matematika pro každého
Najdete zde články zabývající se matematikou základních a středních škol a databázi hlavolamů.
Pro vyzkoušení Vaš
Farundel0
Super člen
2. 9. 2006   #20
-
0
-

Sorry, chlapi, byl jsem ted nejakou dobu mimo, tak odpovidam az ted :o)

2nestor: Rozhodne sis jako programovaci jazyk na uceni vybral vyborne. Python je pro to primo idealni. Muj nazor je ten, ze Python je programovaci jazyk budoucnosti. Doufam ze za spoustu let, pokud ze me opravdu bude informatik (och, jak moc bych si pral byti PhD. in computer science ;o)))), tak budu v praci porad pouzivat Python :o)
Mas pravdu v tom, ze jej muzes pouzit jak na delani beznych aplikaci (at uz konzolovych, ci pomoci GTK, QT, Tkinteru), tak i tech webovych (ano, muze fungovat podobnym zpusobem jako PHP).
Ja mam podobny plan jako ty: naucit se dokonale Python a C (k C++ mam kvuli jeho obrovske rozsahlosti celkem respekt, ale rad bych ho jednou umel taky).

Nechtel jsem rict, ze PHP je spatny jazyk, neni, i kdyz vyhrady k nemu mam (z casti to bude ale tim, ze Python mam proste __rad__ :o)). To, co jsem kritizoval neni chyba jazyka, anobrz webmasteru alias takyprogramatoru (i kdyz to jsou i vlastnosti jazyka, ktere muzou lidi k nekterym nepeknym vecem svadet).

Urcite na internetu najdes fundovanejsi a konkretnejsi informace, nez tyhle moje reci ;o)))

...co bych za to dal, kdyby byl po ruce freehosting s Pythonem.


Proc freehosting? Ja sve budouci osobni stranky (ktere bych chtel vytvorit prave v Pythonu) budu mit [url=http://www.klenot.cz]tady[/url]. U hostingu za 300 Kc na rok sice Python uveden neni, ale s majitelem nebude problem se dohodnout... sam mi ho kdysi nabidnul, kdyz jsem si na abclinuxu.cz ztezoval na absenci Python hostingu... 300 korun to neni zadna cena, to je skoro zadarmo :o)

Jinak co se týká šablonovacích systémů pro php. Můj názor je takový, že pro menší projekty představují kladivo na mouchy, ...


Na tom taky neco bude, samozrejme... pro obycejnou knihu navstev je nejaka sablona zbytecna. Me se proste ale na PHP nelibi to osklivy michani HTML a PHP, ktery jsem se pred nekolika lety naucil a kteryho bych se ted rad zbavil :o)

Nahlásit jako SPAM
IP: ...–
To follow the path:
look to the master,
follow the master,
walk with the master,
see through the master,
become the master.
Zdeněk Lehocký
~ Šéfkorektor
+2
Grafoman
2. 9. 2006   #21
-
0
-

Nechci být malicherný, ale pro příště bych prosil kódy do příslušného tagu. Ať to tu máme pěkné :)) :P

A aby vám Fórum ten váš kód nezformátovalo (cykly for, kde se používá proměnná i), tak se vyvarujte velmi blízké kombinace znaku levé ostré závorky s písmenem i. Jinak byste to měli kurzývou. V tom horím případu kus kódu tatam.

Nahlásit jako SPAM
IP: ...–
* Šéfkorektor *
geon0
Grafoman
3. 9. 2006   #22
-
0
-

Frosty napsal:

Nechci b?t malichern?, ale pro p???t? bych prosil k?dy do p??slu?n?ho tagu. A? to tu m?me p?kn? :)) :P

A aby v?m F?rum ten v?? k?d nezform?tovalo (cykly for, kde se pou??v? prom?nn? i), tak se vyvarujte velmi bl?zk? kombinace znaku lev? ostr? z?vorky s p?smenem i. Jinak byste to m?li kurz?vou. V tom hor??m p??pad? kus k?du tatam.



to je smutn?, velmi smutn?, proto se rad?i p??slu?n?ch tag? vyvarov?v?m :-(

Nahlásit jako SPAM
IP: ...–
geon. volume doprava.
Josef Hornych0
Návštěvník
7. 9. 2006   #23
-
0
-

Blujacker napsal:

nějak se v tom nevyznám, můžeš sem dát link na určitý bezplatnej web?


:och: to jako fakt?? Tak třeba http://110mb.com/

Nahlásit jako SPAM
IP: ...–
geon0
Grafoman
7. 9. 2006   #24
-
0
-

jojo napsal:

:och: to jako fakt?? Tak třeba http://110mb.com/


sem to zkusil, ale ftp přenos je šíleně pomalej, je to na nic, když to leží někde na druhé straně atlantiku... už asi půl hodiny přenáším pár souborů....

Nahlásit jako SPAM
IP: ...–
geon. volume doprava.
Josef Hornych0
Návštěvník
geon0
Grafoman
8. 9. 2006   #26
-
0
-

Myslím, že to bude vše stejné ... Ty teda nemáš žádnou kladnou zkušenost s některým z nich, že?

Nahlásit jako SPAM
IP: ...–
geon. volume doprava.
Josef Hornych0
Návštěvník
11. 9. 2006   #27
-
0
-

geon napsal:

mysl?m, ?e to bude v?e stejn? ... ty teda nem?? ??dnou kladnou zku?enost s n?kter?m z nich, ?e?



ee...

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, 11 hostů

 

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