我这里有这个功能: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
饮歌长啸
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
这本来可以达到你想要的结果 - 但正如这个答案顶部提到的那样,对于你实际想要做的事情来说太复杂了。
添加回答
举报
0/150
提交
取消