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

Julieta Rangel julieta_rangel@hotmail.com
Thu, 03 May 2001 01:14:54 -0500


I feel like an idiot.  Either I'm really tired, or there's something wrong 
with me.  I've been staring at the reply to my question and I still don't 
see what you are talking about.  At the end of the program, am I supposed to 
write
import poly
s.integrate()
print s   ??

I am thankful for all 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: Thu, 03 May 2001 00:44:25 -0400
>
>
>
>Julieta Rangel wrote:
>
> > 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.
>
>s is a Poly object defined in the 'poly' module, and s has a method called
>'integrate'.
>so to access s.integrate()  from the interpreter, i input
>import poly                # this executes all the code in poly.py, and
>therefore creates 's'
>poly.s.integrate()
>I do not need the 'poly.' part  if i want to refer the object from  the 
>module
>it lives in.
>
>
>read my previous message carefully. The answer to your question was in 
>there...
>
> >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 ?
>
>I advise you to read the Python tutorial (especially the part dealing with
>modules) and/or the book called 'Learning Python', so that you can progress 
>more
>rapidly in Python.
>
>Benoit
>
>
>
> >
> >
> > 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
> >
> > _______________________________________________
> > 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