有没有办法在Python中提取数字的符号?

时间:2015-04-09 09:29:52

标签: python algorithm sign

我正在用Python编写Bolzano算法。这是我现在的代码:

def Bolzano(fonction, a, b, tol=0.000001):
   while abs(b-a)>tol:
       m=(a+b)/2
       if cmp(fonction(m))==cmp(fonction(a)):
           a=m
       else:
           b=m
   return a, b

它一直有效,直到它遇到cmp,它无法识别。但是我没有看到另一种方法,因为Python没有签名功能。有没有其他方法来提取数字的符号?

3 个答案:

答案 0 :(得分:3)

  

有没有其他方法可以提取数字的符号?

如何写自己的?

实施

def sign(num):
    return -1 if num < 0 else 1

示例

>>> sign(10)
1
>>> sign(-10)
-1

Ohh和cmp是一个需要两个参数(数字)的内置函数,只需比较它们并检查它们中哪一个更大。您应该按如下方式使用它

def Bolzano(fonction, a, b, tol=0.000001):
   while abs(b-a)>tol:
       m=(a+b)/2
       if cmp(fonction(m), fonction(a)) == 0:
           a=m
       else:
           b=m
   return a, b

答案 1 :(得分:3)

也许使用:

if cmp(fonction(m),fonction(a)) == 0:

答案 2 :(得分:1)

def same_sign(a, b):
    return (a * b) >= 0

示例:

>>> same_sign(3, 4)
True

>>> same_sign(-3, 4)
False

>>> same_sign(3, -4)
False

>>> same_sign(-3, -4)
True

>>> same_sign(-3, 0)
True