为什么此函数不返回负数?

问题描述

在这里有此功能

def g(x: int) -> int:
    if x > 0:
        x = x * (-1)
    if x < 0:
        x = x * (-1)
    return x

当我为g(10)调用函数时,它返回10。为什么不返回-10?我该怎么做才能使其返回-10?

解决方法

您检查了两次,因此您两次否定值,简单的解决方法:

def g(x: int) -> int:
    if x > 0:
        x = x * (-1)
    elif x < 0:
        x = x * (-1)
    return x
    
print(g(10))

输出:

-10
,

您的代码过于复杂,因为两种情况下的操作都是相同的,您可以简化一下:

def g(x: int) -> int:
    return x * (-1)

但是,为什么您的原始代码不起作用-

想象一下您传递的值是10。

因此满足条件if x > 0的第一个条件并且x现在变为-10(x=x * -1

然后测试第二个if条件if x < 0-现在也为True,因此x改回10。

这两个if语句彼此独立,并且按照您给它们的顺序运行,一个接一个。

如果您希望它们是从属的,则使用elif:

def g(x: int) -> int:
    if x > 0:
        x = x * (-1)
    elif x < 0:
        x = x * (-1)
    return x

那会实现您想要的结果-但正如该答案顶部所提到的那样,对于您实际上要执行的操作来说太简单了。