根据其符号增加数字

时间:2016-01-30 23:46:52

标签: python python-2.7

在我的一个项目中,我必须实现一个基于数字符号加1或减1的函数。像这样的东西,

def func(num):
    if num > 0:
        return num + 1
    if num < 0:
        return num - 1

但这似乎是对这种简单行为的不必要的长实现。有没有更简单的方法来实现这一目标。也许是单行?

4 个答案:

答案 0 :(得分:4)

return  num + math.copysign(1, num)

答案 1 :(得分:3)

您可以在此处使用数学模块:

>>> from math import copysign
>>> a = -1
>>> a += copysign(1,a)
>>> a
-2.0
>>> a = 3
>>> a += copysign(1,a)
>>> a
4.0

Numpy还提供了一个签名功能

import numpy as np
a = 5
a += np.sign(a)
6

答案 2 :(得分:1)

可以使用lambda编写一行函数。

a = lambda x: x+1 if x < 0 else x-1

通过这样做来调用它:

print(a(5)) # This would return 4 as the value.

答案 3 :(得分:0)

def func(num):
    if (num == 1):
        return 2
    elif (num == -1):
        return -2
    elif (num > 1):
        return 1 + func(num-1)
    else: 
        return -1 + func(num+1)

如果检查0是否是要检查的输入,则可以添加额外的内容。