Diskuze: Vysvetlenie kratkeho kodu

Člen

Zobrazeno 7 zpráv z 7.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
Ja bych to chapal takto (python jsem resil jen okrajove, tak to je mozna spatne):
for p,mr,ma in pole
for value0,value1,value2 in pole
pole = [
( value0, value1, value2),
( value0, value1, value2),
( value0, value1, value2),
if pos<value0 then return [value0, value1]
return [value0, value1][0] = value0
pct = value0 amt??? a nebo
pct, amt = [value0, value1] z tabulky, kterou vytvori cyklus a z ni vyberes radek 0.
Pak by to hledalo prvni hodnotu, ktera odpovida podmince, to ale mohli ukoncit pomoci break.
amt by mohla byt nejaka globalni promena
amt = amount = mnozstvi, castka (podle google)
Python je celkom dobrý jazyk ale vďaka tomuto ma dokáže veľakrát pekne nahnevať
Tá funkcia prechádza cez list . List sa skladá z trojic (p, mr, ma)
Ak je čislo p menšie ako argument pos , tak ho pridáme do dočasného listu
.
Z tohto listu potom vyberieme prvý prvok a ten vrátime
Ten algoritmus ma niekoľko múch
Prepísal by som to takto
pole = [
(30000 , 0.4, 0),
(50000 , 0.5, 50),
(1000000 , 1.0, 1600),
(5000000 , 2.1, 11300),
(10000000, 4.0, 15700),
]
def lookup_maint(pos):
for item in pole:
p,mr,ma = item #Rozbijeme trojicu do premených p ,mr a ma
if(p > pos):
return (mr/100 ,ma)
raise Exception
V prípade chyby (mimo rozsah) som dal generickú výnimku .
Ty si tam daj to čo ti vyhovuje , neviem kde sa tá funkcia používa
ps: hodilo by sa premenovať premenné aby bolo zrejme aké údaje obsahujú
Ak by sa mal list v premennej "pole" rozširiť , tak by som to vyčlenil do nového objektu tato
class Triplet:
def __init__(self, p, mr, ma):
self.p = p
self.mr = mr
self.ma = ma
def result(self):
return (self.mr/100, self.ma)
@classmethod
def createList(cls, triplets):
result = []
for item in triplets:
p,mr,ma = item
result.append(Triplet(p,mr,ma))
return result
pole = Triplet.createList([
(30000 , 0.4, 0),
(50000 , 0.5, 50),
(1000000 , 1.0, 1600),
(5000000 , 2.1, 11300),
(10000000, 4.0, 15700),
])
def lookup_maint(pos):
for item in pole:
if(item.p > pos):
return item.result()
raise Exception
Podle mne to budou nejake marketingove, obchodni pojmy, zkratky. Pokud nemas nastudovany ten obor, tak ti to nedava smysl. Takze bych to googloval se slovy: sales compute bussiness Economics Marketing shotcut
pos
p, mr, ma
pct, amt <- mr, ma
amt = amount = mnozstvi
pct = Progressive Consumption Tax = prepocitana cena s dani | price total?
mr = Marginal revenue | Markup Rate
ma = Moving Average
p = price? pieces?
pos = ?
Cili, zatim bych to hadal jako tabulku [cena, ???, mnozstvi (quantity)], ze
ktere vybere prvni polozku, ktera ma cenu mensi nez cislo 'pos' a vybere jen
sloupce [cena, mnozstvi].
Jinymi slovy, pojmenovani promennych je uplne na prd. Pouziva se min 3-5 znaku,
obvykle. Mene se pouziva leda pro takove bezvyznamne nebo proflaknute pojmy,
ktere souvisi s tematem, jako treba u fyziky s = v * t. Ale bez tematu se neda
urcit, co tim chce vlastne docilit.
Ale, mozna, ze python, pokud je kod spravne, spocita prumerne hodnoty pro
vsechny radky, kde to cislo je mensi nez 'pos' Spis ne, spis je ten algoritmus
uplne spatne. Mozna bych si i tipnul, ze to nekdo strelil od boku a pak se
prisel zeptat na forko, zda to dela, co si myslel, ze to bude delat.
Dakujem za vysvetlenie kodu. Musim sa priznat, ze potom ako som to sem
napisal, ma napadlo, ze skusim nejaky online python compiler, kod som spustil
cez neho, aby som videl ake hodnoty ta funkcia vracia. Teraz po vysvetleni ten
kod chapem uz presnejsie.
A co sa tyka nazvov tych premennych , su to skratky , ta funkcia je len jedna
cast z celeho vypoctu kde sa pocita vysledna cena.
"Z nejakého dôvodu pokračuje v hľadaní aj keď správnu trojicu už
našiel"
No, ja jsem nad tim jeste premyslel.
Ten kod nevraci prvni nalezenou hodnotu, ale posledni vyhovujici podmince, jak
pise Zemiak.
Cili, kdyz to pole mas serazene ASC podle p (prvni sloupec, tak ti to vrati
nejblizsi hodnotu, ktera odpovida zadane cene). Coz je mozna presne to, co to ma
delat, co aplikace potrebuje.
A ted je otazka
Zobrazeno 7 zpráv z 7.