为了账号安全,请及时绑定邮箱和手机立即绑定

为什么这个函数不返回负数?

为什么这个函数不返回负数?

拉丁的传说 2023-09-12 10:39:50
我这里有这个功能:def g(x: int) -> int:    if x > 0:        x = x * (-1)    if x < 0:        x = x * (-1)    return x当我调用 g(10) 函数时,它返回 10。为什么它不返回 -10?我该怎么做才能让它返回-10?
查看完整描述

2 回答

?
慕斯王

TA贡献1864条经验 获得超2个赞

您检查了两次,因此您两次负值,简单的解决方案:


def g(x: int) -> int:

    if x > 0:

        x = x * (-1)

    elif x < 0:

        x = x * (-1)

    return x

    

print(g(10))

输出:


-10


查看完整回答
反对 回复 2023-09-12
?
饮歌长啸

TA贡献1951条经验 获得超3个赞

您的代码太复杂,因为两个 if 条件下的操作是相同的 - 您可以简化它:


def g(x: int) -> int:

    return x * (-1)

但至于为什么你的原始代码不起作用 -


假设您传入的值是 10。


因此第一个 if 条件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

这本来可以达到你想要的结果 - 但正如这个答案顶部提到的那样,对于你实际想要做的事情来说太复杂了。


查看完整回答
反对 回复 2023-09-12
  • 2 回答
  • 0 关注
  • 92 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信