» »

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.

Rokm ::

Python ima za kombinacije že ustvarjeno funkcijo, ki se priročno imenuje combinations.

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 ;)
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?

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?
"Myths which are believed in tend to become true."
--- 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č.

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]

Isotropic ::

list comprehensions

WarpedGone ::

Kaj?
Zbogom in hvala za vse ribe

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.

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.

Zgodovina sprememb…

  • spremenil: Meizu ()


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Izdelava algoritma

Oddelek: Znanost in tehnologija
61470 (850) Klemen86
»

Matlab pomoč

Oddelek: Programiranje
142018 (1322) Jan23
»

python- pomoč pri nalogi

Oddelek: Programiranje
182388 (2065) ktka
»

Šah [Pacsal]

Oddelek: Programiranje
152138 (1741) NeOman
»

funkcije za 8.r

Oddelek: Šola
102038 (1879) root987

Več podobnih tem