Portál AbcLinuxu, 9. května 2025 20:48
while index_krivek < len(krivky):
krivka = curve(radius=0.05, color = barvy[index_krivek])
index_bodu_jednotlive_krivky=0
while index_bodu_jednotlive_krivky <= casovy_bod_na_krivce:
krivka.append(pos=(osa_x_krivek, osa_y_jednotlive_krivky, osa_z_jednotlive_krivky))
index_bodu_jednotlive_krivky += 1
index_krivek+=1
Jeho úkolem je vytvořit několik objektů, které se zobrazí jako jednotlivé grafy umístěné vedle sebe v 3D prostoru. V prvním cyklu while vytvářím několikrát za sebou objekt (krivka=curve...) a ten potom v podřízeném cyklu dále rozkresluji (krivka.append...). Problém je, že všechny takto vytvořené objekty mají název "krivka" a po dokončení cyklu už na ně nemám jak odkazovat (např. abych je mohl smazat a překreslit novými). Takže bych potřeboval v rámci cyklu při každé jeho iteraci vytvářet ten objekt s jiným jménem, např. "krivka_1, krivka_2, krivka_3, atd.". Tím bych měl získat řadu objektů s jedinečnými názvy a mohl pak s každým pracovat individuálně. Jak ale vytvořit ty názvy?
Co třeba list:
krivky=[] for i in range(0,pocetKrivek): krivka=curve(...) krivky.append(krivka) assert(len(krivky)==pocetKrivek) krivka[0] krivka[1] # ...
Nebo ještě více pythonovsky
krivky=[curve(...) for i in range(0,pocetKrivek)] krivka[0] krivka[1] #...
koule = [] for i in range(5): koule[i] = sphere() #IndexError: list assignment index out of range
koule = [] for i in range(5): koule.append(sphere())Díky, zase jsem se dostal o krůček vpřed.
>>> a = [1,2,3] >>> del a[1] >>> a [1, 3]Podle mne řešíš nějaký neexistující problém, naneštěstí stále netuším jaký. Odpověď ale vždy je, že jména proměnných jsou jen klíče v jakémsi speciálním slovníku, takže cokoli, co chceš dělat s lokálním slovníkem (jmény proměnných), můžeš udělat stejně dobře s jinou datovou strukturou. V tomto případě nejlépe polem.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.