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