Problem calling math.cos()

Sambo sambo at void.com
Sat Apr 22 17:17:02 EDT 2006


Roy Smith wrote:
> In article <3ev2g.9680$%97.5795 at newsfe15.lga>, Sambo <sambo at void.com> 
> wrote:
> 
> 
>>I have the following module:
>>-------------------------------
>>import math
>>
>>def ac_add_a_ph( amp1, ph1, amp2, ph2 ):
>>
>>    amp3 = 0.0 
>>    ph3 = 0.0
>>    ac1 = ( 0, 0j )
>>    ac2 = ( 0, 0j )                                                      
>>    ac3 = ( 0, 0j )
>>    ac1 = complex( amp1 * math.cos( math.radians( ph1 ) ), amp1 * math.sin( 
>>    math.radians( ph1 ) ) )
>>    ac2 = complex( amp2 * math.cos( math.radians( ph2 ) ), amp2 * math.sin( 
>>    math.radians( ph2 ) ) )
>>    ac3 = ac1 + ac2
>>    amp3 = math.abs( ac3 )
>>    ph3 = math.atan( ac3.imag / ac3.real )
>>    return [amp3, ph3]                  
>>--------------------------------------
>>when I import it (electronics) in python.exe in windows2000 and 
>>try to use it, it croaks.  ??? 
>>
>>
>>>>>import math
>>>>>import electronics
>>>>>print electronics.ac_add_a_ph( 10, 0 , 6 , 45 )
>>
>>Traceback (most recent call last):
>>  File "<stdin>", line 1, in ?
>>  File "f:\devel\python\electronics.py", line 10, in ac_add_a_ph
>>    ac1 = complex( amp1 * math.cos( math.radians( ph1 ) ), amp1 * math.sin( 
>>    math
>>.radians( ph1 ) ) )
>>NameError: global name 'cos' is not defined
>>
> 
> That's not what I get when I run it (admittedly, not on windows).  I get:
> 
> 
>>>>import math
>>>>import electronics
>>>>print electronics.ac_add_a_ph( 10, 0 , 6 , 45 )
> 
> Traceback (most recent call last):
>   File "<stdin>", line 1, in ?
>   File "electronics.py", line 13, in ac_add_a_ph
>     amp3 = math.abs( ac3 )
> AttributeError: 'module' object has no attribute 'abs'
> 
> 
> which is exactly what I expected, since abs (which is indeed absolute 
> value) is a built-in function, not a part of the math module.  Are you sure 
> the stack trace you posted matches the source code you posted?
> 
Well I took the abs( 'complex' ) from the python documentation (python24.chm)
section 3.1.1 
has the following comment after it '# sqrt(a.real**2 + a.imag**2)'

> By the way, when using math functions, I find it's usually easier to import 
> them into my namespace by doing "from math import *", then I can just use 
> sin(), cos(), etc directly, instead of having to do math.sin() or 
> math.cos().  Especially for common math functions, this makes your code a 
> lot easier to read.

Ah, I thought I used to use module functions without the module name.

I think my problem is reimporting electronics(.py) after modifications.
Yes, now it complains about abs().
looks like enother reason to dump this w2000 installation just so I can 
install python from scratch and use idle. 



More information about the Python-list mailing list