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

我这里有这个功能:


def g(x: int) -> int:

    if x > 0:

        x = x * (-1)

    if x < 0:

        x = x * (-1)

    return x

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


拉丁的传说
浏览 95回答 2
2回答

慕斯王

您检查了两次,因此您两次负值,简单的解决方案:def g(x: int) -> int:&nbsp; &nbsp; if x > 0:&nbsp; &nbsp; &nbsp; &nbsp; x = x * (-1)&nbsp; &nbsp; elif x < 0:&nbsp; &nbsp; &nbsp; &nbsp; x = x * (-1)&nbsp; &nbsp; return x&nbsp; &nbsp;&nbsp;print(g(10))输出:-10

饮歌长啸

您的代码太复杂,因为两个 if 条件下的操作是相同的 - 您可以简化它:def g(x: int) -> int:&nbsp; &nbsp; 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:&nbsp; &nbsp; if x > 0:&nbsp; &nbsp; &nbsp; &nbsp; x = x * (-1)&nbsp; &nbsp; elif x < 0:&nbsp; &nbsp; &nbsp; &nbsp; x = x * (-1)&nbsp; &nbsp; return x这本来可以达到你想要的结果 - 但正如这个答案顶部提到的那样,对于你实际想要做的事情来说太复杂了。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python