Anonymní profil Joker – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Joker – Programujte.comAnonymní profil Joker – Programujte.com

 

Příspěvky odeslané z IP adresy 2a00:1028:9194:8452:1456:d1e8:32fd:1592...–

Joker
Python › Update položky u 3D pole
12. 1. 2020   #385204

#5 gna
Ahoj,

 tohle mi uniklo. Hledal jsem chybu až dál. Problém vyřešen.

Díky moc.

Joker
Python › Update položky u 3D pole
12. 1. 2020   #385202

#3 Joker
Ahoj, tak jsem na to nepřišel. Posílám ukázku kódu. Udělal jsem si simulaci v1, kde mi to nevychází. V simulaci v2, je výsledek, který očekávám ve ve v1. Díky za pomoc.

Kód:


global_variables.py
glstStructures = ['2;3;1']

glstProcessedStructure = []

calc.py

from global_variables import *
import random

# transfer to list
def model_code_to_list(structure):
    core_list = []
    y_list = []
    z_list = [None, None, None, None]
    x_val_num = 0
    for x_val in structure.split(";"):
        for y in (x_val):
            y_list = [z_list for n in range(int(y))] #
        #
        core_list.append(y_list) # navazu na vrstvy
        x_val_num = x_val_num + 1 # pocitam vrstvy od 0
    return core_list

def PrepareStructure(model):
    for structure in model:
        vlstProcessedStructure = model_code_to_list(structure)
    return vlstProcessedStructure
#
def set_Z0(model:list, x:int, y:int):
    model[x][y][0] = random.random()
#
def get_x_count(model:list):
    res = len(model)
    return res
#
def get_y_count(model:list, y:int):
    res = len(model[y])
    return res
#
def init_Z0(model):
    for x in range(get_x_count(model)):
        for y in range(get_y_count(model, x)):
            set_Z0(model,x,y)
#
def GetCalc():
    print('v1')
    global glstStructures
    global glstProcessedStructure
    glstProcessedStructure = PrepareStructure(glstStructures)
    print(glstStructures)
    print(glstProcessedStructure)
    init_Z0(glstProcessedStructure)
    print(glstProcessedStructure)
    #
    print('v2')
    lstTest = [[[None, None, None, None], [None, None, None, None]], [[None, None, None, None], [None, None, None, None], [None, None, None, None]], [[None, None, None, None]]]
    print(lstTest)
    init_Z0(lstTest)
    print(lstTest)

Výstup:

v1
['2;3;1']
[[[None, None, None, None], [None, None, None, None]], [[None, None, None, None], [None, None, None, None], [None, None, None, None]], [[None, None, None, None]]]
[[[0.5528923455878277, None, None, None], [0.5528923455878277, None, None, None]], [[0.5528923455878277, None, None, None], [0.5528923455878277, None, None, None], [0.5528923455878277, None, None, None]], [[0.5528923455878277, None, None, None]]]

v2
[[[None, None, None, None], [None, None, None, None]], [[None, None, None, None], [None, None, None, None], [None, None, None, None]], [[None, None, None, None]]]
[[[0.2211728906012852, None, None, None], [0.5469049609999701, None, None, None]], [[0.4679316891134424, None, None, None], [0.31030164075610256, None, None, None], [0.18368361201238603, None, None, None]], [[0.05110759583922786, None, None, None]]]

Joker
Python › Update položky u 3D pole
12. 1. 2020   #385201

Ahoj,

 chci poděkovat za rychlo reakci. Udělal jsem si simulaci bokem, kde vše fungovalo jak má. Zjistil jsem, že to bylo způsobeno deklarování globální proměnné v pomocné metodě, kterou jsem využíval. Gp jsem si ji totiž dotahoval i do main metody. Takže když jsem gp odstranil z pomocné metody a dotáhl tam hodnotu jako argument z main metody, vše funguje jak má. Nejsem si jist, v čem přesně ta chyba spočívá. Mám totiž samostatatný pyfile, kde mám tyto gp. Pokud mám vnořených více metod, občas se mi nechce protahovat proměnnou všemi, tak to zkouším takto.

Díky

 

 

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