7 svar
441 visningar
be5612 147
Postad: 29 jan 2021 12:28

addera två polynom listor

Hej!

jag har kört fast på en uppgift där man ska definera add_poly(p,q) för att addera två polynom till varandra 

p= 2+x^2

q= -2+x+x^4

jag har gjort på det sättet

def add_poly(p,q)

for i in range(len(q))

  print(q[i]+p[i])

men eftersom listorna inte har samma längd så blir det fel. har ni några tips på hut man kan gå tillväga?

Dr. G 9479
Postad: 29 jan 2021 12:33

Har du koefficienterna sparade i listor, d.v.s i exemplet

p = [2,0,1]

q = [-2,1,0,0,4]

?

Du kan ju t.ex lägga till nollor i den kortare listan, så p =[2,0,1,0,0].

be5612 147
Postad: 29 jan 2021 12:41
Dr. G skrev:

Har du koefficienterna sparade i listor, d.v.s i exemplet

p = [2,0,1]

q = [-2,1,0,0,4]

?

Du kan ju t.ex lägga till nollor i den kortare listan, så p =[2,0,1,0,0].

yes jag har dem i listor och jag har provat lägga nollor och det funkade men är osäker om man kan göra så :(

Dr. G 9479
Postad: 29 jan 2021 13:33

Det fungerar, men du är osäker på om man kan göra så?

I din funktion så kan du undersöka vilken lista som har flest element. Lägg sedan till ett lämpligt antal nollor i den kortare listan. Lägg ihop elementvis. 

be5612 147
Postad: 29 jan 2021 14:48
Dr. G skrev:

Det fungerar, men du är osäker på om man kan göra så?

I din funktion så kan du undersöka vilken lista som har flest element. Lägg sedan till ett lämpligt antal nollor i den kortare listan. Lägg ihop elementvis. 

Okej tack :D

man ska även testa om funktionerna längst ner funkar, jag har definierat eq_poly(q,p) men jag vet inte hur jag ska gå tillväga föratt avsluta den så koden körs

Lindehaven 820 – Lärare
Postad: 29 jan 2021 14:49
be5612 skrev:

yes jag har dem i listor och jag har provat lägga nollor och det funkade men är osäker om man kan göra så :(

Om det funkar så kan man göra så.

Vilka testdata har du använt för att veta att funktionen funkade? Ger funktionen rätt resultat med exempelvis dessa testdata:

add_poly([], []) # Borde ge []
add_poly([2,0,1], [-2,1,0,0,4]) # Borde ge [0, 1, 1, 0, 4]

add_poly([-2,1,0,0,4], [2,0,1]) # Borde ge [0, 1, 1, 0, 4]

Laguna Online 30482
Postad: 29 jan 2021 15:10

Dina funktioner borde bygga nya listor, och inte skriva ut någonting.

Lindehaven 820 – Lärare
Postad: 29 jan 2021 15:21
Laguna skrev:

Dina funktioner borde bygga nya listor, och inte skriva ut någonting.

Håller med Laguna om det. När funktionerna returnerar listor blir de användbara och enklare att testa.

Ett enkelt sätt att testa är att använda assert, t ex:

    assert add_poly([1], [-2]), [-1]
    assert add_poly([2,0,1], [0,0,4]), [2,0,5]
    assert add_poly([2,0,1], [-2,1,0,0,4]), [0,1,1,0,4]
    assert add_poly([-2,1,0,0,4], [2,0,1]), [0,1,1,0,4]
Svara
Close