[Tutor PyCZ] Dalsi problem s Livewires
geon
geon na post.cz
Úterý Únor 28 07:42:08 CET 2006
Tomáš Bělonožník napsal(a):
> Ahoj,
> tak jsem se taky jal vyrabet roboti hru z toho Livewires tutorialu a
> zasekl jsem se temer na zacatku. Procital jsem si tuhle konferenci a
> snazil jsem se tedy vyvarovat global. Muj problem je asi v tom, ze
> dostatecne nerozumim prikazu return, nikde sem ani nenasel nejaky
> vyklad.
return někdy předčasně, někdy až na konci opuští cyklus a vrací jednu
nebo několik hodnot.
> Pokusil jsem se aplikovat postup, ktery platil na vyrobHrace i
> na posunHrace, ale háže mi to chybu, kterou si nejsem schopen
> prelozit"
>
> Hrac_telo, xh, yh = posunHrace()
> TypeError: unpack non-sequence
>
Ty se pak ukládají do odpovídajících proměnných
Je-li ve funkci mojeFunkce() return a, b - tak funkce vrací dvě
proměnné, které se musí do dvou proměnných zapsat:
pocet, velikost = mojeFunkce(). Odpovídá to zápisu:
pocet=a
velikost=b
Je to vlastně praktické využití jedné pythonoské fíčurky:
a,b,c = 1,2,3
nebo taky
a,b,c=[1,2,3]
a,b,c=(1,2,3)
return a,b je ve skutečnosti return (a,b), takže se vrací tuple, která
se samorozbaluje do přislušných proměnných.
Pokud není soulad v počtu proměnných, dostáváš tuto chybu--> vracíš dvě
proměnné (xy, yh), očekáváš tři (Hrac_telo, xh, yh ).
> Muj kod ted vypada takhle:
>
> import random
> from livewires import *
> begin_graphics()
> allow_moveables()
> def vyrobHrace():
> xh=random.randint(0, 639)
> yh=random.randint(0, 479)
> Hrac_telo = circle(xh, yh, 5, filled=1, colour=Colour.red)
> return xh, yh, Hrac_telo
> def posunHrace():
> stisky = keys_pressed()
>
tahle (výše uvedená)řádka tam být nemusí (nebo nemá?)
> if "2" in stisky:
>
if "2" in klavesy:
> move_to(Hrac_telo, xh, yh+1)
> return xh, yh
>
> xh, yh, Hrac_telo = vyrobHrace() # Jak tak nad tim premyslim tak tuhle
> radku nechapu...
> while 1:
> klavesy = keys_pressed()
> Hrac_telo, xh, yh = posunHrace() # Tady je problém
> if "q" in klavesy:
> break
> end_graphics()
>
> Díky za jakoukoliv pomoc, mozna mi bude stacit jen vysvetleni toho return...
>
S tím return to může být ještě zamotanějsí, ale snad to takhle zatím
stačí...
--
geon
Vyjímka je pravidlo. Rekurzivní.
Další informace o konferenci Tutor