Forum » Programiranje » problem v pythonu
problem v pythonu
Meizu ::
Ejla. Mam en problem v pythonu, oz. po domače povedano, nevem kako bi se lotil problema.
Imamo recimo en seznam.
seznam = [(2,8), (3,8), (5,9), (4,8)]
Rad bi naložil programu, da mi izračuna koeficient daljic med temi koordinatami:
k = (y2 - y1)/(x2 - x1)
Kako narest, da mi v zanki program po vrsti čekira tale seznam in mi vsak par teh koordinat med seboj poračuna po zgornji formuli, da dobim te koeficiente ven?
Če mi zna kdo pomagat bi bil hvaležen.
Imamo recimo en seznam.
seznam = [(2,8), (3,8), (5,9), (4,8)]
Rad bi naložil programu, da mi izračuna koeficient daljic med temi koordinatami:
k = (y2 - y1)/(x2 - x1)
Kako narest, da mi v zanki program po vrsti čekira tale seznam in mi vsak par teh koordinat med seboj poračuna po zgornji formuli, da dobim te koeficiente ven?
Če mi zna kdo pomagat bi bil hvaležen.
Rokm ::
Python ima za kombinacije že ustvarjeno funkcijo, ki se priročno imenuje combinations.
float rabiš zato da se ne izvede celoštevilko deljenje, ki bi prineslo napačne rezultate.
from itertools import combinations for (x1, y1), (x2, y2) in combinations([(2,8), (3,8), (5,9), (4,8)], 2): k = float(y2 - y1)/(x2 - x1)
float rabiš zato da se ne izvede celoštevilko deljenje, ki bi prineslo napačne rezultate.
Meizu ::
Zanimivo, ampak če to napišem v konzolo mi vrne rezultat 1.0, kar je napačen rezultat, saj je očitno, da je smerni koeficient prvih dveh koordinat enak 0 (obe y koord. sta 8), pravtako pa ne izvede celotnega loopa po koordinatah ampak očitno le prvega.
Mavrik ::
Ti gledaš rezultat zadnjega para, ker se ti rezultat računanja v "k" vedno znova prepiše.
Ne samo debilno prepisovat kode brez da bi razumel kaj dela no ;)
Ne samo debilno prepisovat kode brez da bi razumel kaj dela no ;)
The truth is rarely pure and never simple.
Meizu ::
Ne, če v kodo vključim, da mi printa k, mi sprinta samo 1.0, neglede na to, kje obrnem print. Kaj naj, bom probal še mal čarat.
mimogrede, tale seznam, ki sem ga podal, je le simboličen, originalen je mnogo večji. A se da v for zanki, namesto prepisanega seznama vstavit spremenljivko seznama? Ter kako?
mimogrede, tale seznam, ki sem ga podal, je le simboličen, originalen je mnogo večji. A se da v for zanki, namesto prepisanega seznama vstavit spremenljivko seznama? Ter kako?
Zgodovina sprememb…
- spremenil: Meizu ()
FrEaKmAn ::
verjetno nekaj takega
from itertools import combinations points = [(2,8), (3,8), (5,9), (4,8)] # tvoj poljubni seznam for (x1, y1), (x2, y2) in combinations(points, 2): print float(y2 - y1)/(x2 - x1)
root987 ::
Meni ta koda popolnoma normalno izpisuje rezultate.
Si morda dal print izven for zanke?
Si morda dal print izven for zanke?
"Myths which are believed in tend to become true."
--- George Orwell
--- George Orwell
Meizu ::
Verjetno je to to, ampak rezultatov mi še vedno noče printat sprotoma.
Če pristavim zravn ukaz print(k) mi program sploh ne izpisuje cifer ven. Niti zadnjega rezultata ne. Pa če ga postavim v samo for zanko ali izven, problem je zmeraj enak.
root987 - Ja, koda se izvršuje ča čisto normalno, problem je v tem, da mi ne izpisuje k spremenljivke ven.
Ubistvu, če ne izvršujem kode znotraj mojega programa, ampak zapišem tole v konzolo, potem če hočem vsaj zadnji rezultat, moram print ukaz napisati izven zanke. To mi je čudno. Če pa jo izvajam znotraj mojega programa, mi pa sploh ne napiše nič.
Če pristavim zravn ukaz print(k) mi program sploh ne izpisuje cifer ven. Niti zadnjega rezultata ne. Pa če ga postavim v samo for zanko ali izven, problem je zmeraj enak.
root987 - Ja, koda se izvršuje ča čisto normalno, problem je v tem, da mi ne izpisuje k spremenljivke ven.
Ubistvu, če ne izvršujem kode znotraj mojega programa, ampak zapišem tole v konzolo, potem če hočem vsaj zadnji rezultat, moram print ukaz napisati izven zanke. To mi je čudno. Če pa jo izvajam znotraj mojega programa, mi pa sploh ne napiše nič.
Zgodovina sprememb…
- spremenil: Meizu ()
Daedalus ::
Probaj takole
for (x1, y1), (x2, y2) in combinations([(2,8), (3,8), (5,9), (4,8)], 2): k = float(y2 - y1)/(x2 - x1) print k
Man is condemned to be free; because once thrown into the world,
he is responsible for everything he does.
[J.P.Sartre]
he is responsible for everything he does.
[J.P.Sartre]
Meizu ::
Ubistvu sem po kratkem browsanju po netu ugotovil, da to sploh ni to kar iščem. Jst nucam, da mi po vrsti računa po seznamu med točkami smerne koeficiente, ter jih primerja. Tole pa očitno dela med seznamom vse možne kombinacije, kar ni to kar nucam.
Sicer pa sem po nekaj googlanja ugotovu, da je treba seznam najprej razbit na dva dela, en seznam vsebuje x, drugi pa y koordinate. Potem pa lahko nastaviš funkcijo, ki lepo po vrsti po obeh seznamih primerja koordinate. Lahko, da sicer ima python kakšno integrirano funkcijo za tole, vendar je nisem našel.
Sicer pa sem po nekaj googlanja ugotovu, da je treba seznam najprej razbit na dva dela, en seznam vsebuje x, drugi pa y koordinate. Potem pa lahko nastaviš funkcijo, ki lepo po vrsti po obeh seznamih primerja koordinate. Lahko, da sicer ima python kakšno integrirano funkcijo za tole, vendar je nisem našel.
Meizu ::
Še eno vprašanje imam. Kako izmed naključnega nabora koordinat y dopovedat programu, da mi kot true izpiše samo tiste, prek katerih lahko postavim konkaven graf?
Edit: No, ne naključen nabor ampak pač y koordinate iz nekega seznama.
Edit: No, ne naključen nabor ampak pač y koordinate iz nekega seznama.
Zgodovina sprememb…
- spremenil: Meizu ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Izdelava algoritmaOddelek: Znanost in tehnologija | 1539 (919) | Klemen86 |
» | Matlab pomočOddelek: Programiranje | 2107 (1411) | Jan23 |
» | python- pomoč pri nalogiOddelek: Programiranje | 2520 (2197) | ktka |
» | Šah [Pacsal]Oddelek: Programiranje | 2218 (1821) | NeOman |
» | funkcije za 8.rOddelek: Šola | 2099 (1940) | root987 |