微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决为什么此函数不返回负数?

在这里有此功能

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。