import math
print "python calculator"
print "calc or eval"
while 0 == 0:
check = raw_input() #(experimental evaluation or traditional calculator)
if check == "eval":
a = raw_input("operator\n") #operator
if a == "+":
b = input("arg1\n") #inarg1
c = input("arg2\n") #inarg2
z = b + c
print z
elif a == "-":
b = input("arg1\n") #inarg1
c = input("arg2") #inarg2
z = b - c
print z
elif a == "/":
b = input("arg1\n") #inarg1
c = input("arg2\n") #inarg2
z = b / c
print z
elif a == "*":
b = input("arg1\n") #inarg1
c = input("arg2]n") #inarg2
z = b * c
print z
elif a == "^":
b = input("arg1\n") #inarg1
c = input("arg2\n") #inarg2
z = b ** c
elif a == "sin":
b = input("arg1\n") #inarg1
var = math.degrees(math.sin(b))
print var
elif a == "asin":
b = input("arg1\n") #inarg1
var = math.degrees(math.asin(b))
print var
elif a == "cos":
b = input("arg1\n") #inarg1
var = math.degrees(math.cos(b))
print var
elif a == "acos":
b = input("arg1\n") #inarg1
var = math.degrees(math.acos(b))
print var
elif a == "tan":
b = input("arg1\n") #inarg1
var = math.degrees(math.tan(b))
print var
elif a == "atan":
b = input("arg1\n") #inarg1
var = math.degrees(math.atan(b))
print var
elif check == "calc" :
x = input() #takes input as expression
print x #prints expression's result
不是90度1的正弦? 有了它,它显示为51.2左右的东西? Google的计算器也是这样做的吗? 顺便说一句:这是我的python计算器
b = input("arg1\n") #inarg1
var = math.degrees(math.sin(b))
print var
这个和其他触发功能是问题所在。 在大多数情况下,这只是一个简单的python计算器,但我想添加一些trig函数。
答案 0 :(得分:10)
您不希望将sin()
的返回值转换为度数 - 返回值不是角度。你想要将参数转换为弧度,因为math.sin()
需要弧度:
>>> math.sin(math.radians(90))
1.0
答案 1 :(得分:3)
Python的sin和cos取弧度而非度数。您可以使用math.radians函数进行转换。基本上,你使用的是错误的单位。
答案 2 :(得分:3)
大多数数学函数,包括Python的数学函数,都使用radians作为trigonometric routines的度量。
比较
>>> math.sin(90)
0.8939966636005579
>>> math.sin(3.1415926535)
8.979318433952318e-11
>>> math.cos(180)
-0.5984600690578581
>>> math.cos(2*3.1415926535)
1.0
>>>
答案 3 :(得分:2)
您正在使用学位,但sin
函数需要radians(请参阅文档:help(math.sin)
)。 90°是/ 2。
>>> import math
>>> math.sin(math.pi/2)
1.0
>>> math.radians(90) - math.pi/2
0.0
答案 4 :(得分:2)
在调用math.sin
答案 5 :(得分:2)
var = math.degrees(math.sin(b))
此代码不执行您认为的操作。它需要sin
b
,然后将该答案(弧度中不)从弧度转换为度数。
90弧度的sin
为.894
。 .894弧度是51度。所以这就是你得到答案的原因,但这都是错的。
你可能想要:
var = math.sin(math.radians(b))