[Tutor] attaching the first element in a list to a string

Julieta Rangel julieta_rangel@hotmail.com
Wed, 02 May 2001 23:08:42 -0500


This modification to the program works well in calculating the integral, but 
it does not print it out when running the program.  When you inputed 
poly.s.integrate() followed by print poly.s (In Python Shell), the integral 
is printed.  What command should we include in the program to make it print 
out automatically while running it.  If I include these commands in the 
actual program, they don't work as they do in Python Shell.

Thanks for your help.

Julieta


>From: Benoit Dupire <bdupire@seatech.fau.edu>
>To: Julieta Rangel <julieta_rangel@hotmail.com>
>CC: tutor@python.org
>Subject: Re: [Tutor] attaching the first element in a list to a string
>Date: Wed, 02 May 2001 21:33:02 -0400
>
>I modified your program in this way:
>
>class Poly:
>     def __init__ ( self, v='x' , c = [0]):
>         """__init__():
>         Initializes a polynomial
>         Default variable is x
>         Default polynomial is zero"""
>         self.var = v
>         self.coef = c
>         self.deg = len(c)-1
>         self.length = len(c)
>     def __str__ (self):
>         """__str__():
>         Converts a polynomial into a string"""
>         x = `self.coef[0]`
>         for i in range (1, self.deg+1):
>             x = x + "+" +`self.coef[i]` + self.var + "^" + `i`
>         return x
>
>
>     def integrate(self):
>         """Input:  an instance of a polynommial
>         Output: a polynomial that is the integral of the input polynomial
>         Side Effects: None"""
>
>         coef=[0]
>         self.deg= self.deg +1
>         for i in range(0,self.deg):
>             coef.append(self.coef[i]/float(i+1))
>         self.coef= coef
>
>
>degree = input('Enter the degree of your polynomial')
>coef=[]
>for i in range (0,degree + 1):
>     coefficient = input('Enter the coefficient for x^ %i ? ' %i)
>     coef.append(coefficient)
>
>s= Poly (c = coef)
>
>
>
>
>The result is now the good one:
> >>> reload(poly)
>Enter the degree of your polynomial3
>Enter the coefficient for x^ 0 ? 2
>Enter the coefficient for x^ 1 ? 5
>Enter the coefficient for x^ 2 ? 6
>Enter the coefficient for x^ 3 ? 1
><module 'poly' from 'C:\Python20\poly.py'>
> >>> poly.s.integrate()
> >>> print poly.s
>0+2.0x^1+2.5x^2+2.0x^3+0.25x^4
>
>
>What are the difference with your program?
>
>integrate is now a method of the class Poly
>so i can use it like this...
>
>s= Poly( c=[1 5 6])            # here, we use __init__
>print s                                # here we use __str__
>s.integrate()                        # guess what ?
>
>So the first argument of integrate() is now 'self' (the polynome itself)
>I first increment the degree (because that's the definition of the 
>integration
>of a polynom)
>The first coeff should normally be 'k', we need an initial condition to set 
>it,
>so for now i put 0
>next coeff = coeff (degree 0) / (0+1)
>next coeff = coeff (degree 1)/ (1+1)
>etc...
>When i have the new list of  coeff, i set it for the current polynom (
>self.coef= coef)
>
>You can also add your derivation function as a method, and use it like
>s.derivate()
>
>Benoit
>
>
>
>
>
>
>
>Julieta Rangel wrote:
>
> > I have this problem.  I'm trying to write a program that calculates the
> > integral of a polynomial.  This is what I have so far:
> >
> > import string
> > class Poly:
> >     def __init__ ( self, v='x' , c = [0]):
> >         """__init__():
> >         Initializes a polynomial
> >         Default variable is x
> >         Default polynomial is zero"""
> >         self.var = v
> >         self.coef = c
> >         self.deg = len(c)-1
> >         self.length = len(c)
> >     def __str__ (self):
> >         """__str__():
> >         Converts a polynomial into a string"""
> >         x = `self.coef[0]`
> >         for i in range (1, self.deg+1):
> >             x = x + "+" +`self.coef[i]` + self.var + "^" + `i`
> >         return x
> >
> > class Poly2:
> >     def __init__ (self, v='x' , c = [0]):
> >         """__init__():
> >         Initializes a polynomial
> >         Default variable is x
> >         Default polynomial is zero"""
> >         self.var = v
> >         self.pc = c
> >         self.deg =len(c)-1
> >         self.length = len(c)
> >     def __str__(self):
> >         """__str__():
> >         Converts a second polynomial into a string"""
> >         x = `self.pc[0]`
> >         for i in range (0, self.deg+1):
> >             x = x + "+" +`self.pc[i]`+ self.var + "^" +`i+2`
> >         return x
> >
> > def Integrate(p):
> >     """Input:  an instance of a polynommial
> >     Output: a polynomial that is the integral of the input polynomial
> >     Side Effects: None"""
> >     pv=p.var
> >     pc=[]
> >     for i in range(0,p.deg):
> >         I=p.coef[i+1]/float(i+2)
> >         pc.append(I)
> >     return Poly2 (v=pv,c=pc)
> >
> > degree = input('Enter the degree of your polynomial')
> > coef=[]
> > for i in range (0,degree + 1):
> >     coefficient = input('Enter the coefficient for x^ %i ? ' %i)
> >     coef.append(coefficient)#attach the coefficient entered to the end 
>of
> > the
> >     #list named coef.
> >
> > s= Poly (c = coef)
> > t= Integrate(s)
> > # This is some code to test new functions
> >
> > print "The integral of %s is: \n %s" % (s,t)
> > print " "
> >
> > My problem is that when I run it I get this:
> >
> > >>>reload(poly1)
> > Enter the degree of your polynomial3
> > Enter the coefficient for x^ 0 ? 2
> > Enter the coefficient for x^ 1 ? 5
> > Enter the coefficient for x^ 2 ? 6
> > Enter the coefficient for x^ 3 ? 1
> > The integral of 2+5x^1+6x^2+1x^3 is:
> > 2.5+2.5x^2+2.0x^3+0.25x^4
> >
> > As you can see, the answer would be right if it weren't for the first 
>term
> > in the polynomial.  The first term should be a 2x, so the answer should 
>look
> > like this:  2x^1+2.5x^2+2x^3+0.25x^4.  Can anyone help me fix this 
>problem?
> > I think that I need to find a way to have the first term on the list 
>labeled
> > pc, which is 2 to be taken into consideration on the string representing 
>the
> > polynomial.  Am I right?  If so, How can I accomplish this?  Also, I 
>need to
> > find a way so that when the coefficient of x^0 ==0 , the output should
> > display a constant c along with the result, so that the answer looks 
>like
> > c+2.5x^2+2x^3+0.23x^4.
> > Can anyone guide me in the right direction?  All inputs or comments 
>about my
> > program are welcomed and appreciated.
> >
> > Julieta
> >
> > _________________________________________________________________
> > Get your FREE download of MSN Explorer at http://explorer.msn.com
> >
> > _______________________________________________
> > Tutor maillist  -  Tutor@python.org
> > http://mail.python.org/mailman/listinfo/tutor
>
>--
>Benoit Dupire
>Graduate Student
>----------------
>I'd like to buy a new Boomerang. How can i get rid of the old one?
>
>

_________________________________________________________________
Get your FREE download of MSN Explorer at http://explorer.msn.com