7 svar
98 visningar
be5612 146
Postad: 29 jan 2021

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 6182
Postad: 29 jan 2021

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 146
Postad: 29 jan 2021
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 6182
Postad: 29 jan 2021

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 146
Postad: 29 jan 2021
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 687 – Lärare
Postad: 29 jan 2021
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 13433
Postad: 29 jan 2021

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

Lindehaven 687 – Lärare
Postad: 29 jan 2021
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 Avbryt
Close