有什么方法可以在Python中提取数字的符号吗?

问题描述 投票:0回答:4

我正在用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 没有符号函数。还有其他方法可以提取数字的符号吗?

python algorithm sign
4个回答
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

3
投票

也许使用:

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

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

0
投票

我可以想到一个简单的解决方案: a//abs(a)

如果高于 0,则返回 1;如果低于,则返回 -1,但存在除以 0 的风险,所以可能不是一个好的解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.