我在这里有此功能:
def g(x: int) -> int:
if x > 0:
x = x * (-1)
if x < 0:
x = x * (-1)
return x
当我为g(10)调用函数时,它返回10。为什么不返回-10?我该怎么做才能使其返回-10?
答案 0 :(得分:0)
您检查了两次,因此您两次否定值,简单的解决方法:
def g(x: int) -> int:
if x > 0:
x = x * (-1)
elif x < 0:
x = x * (-1)
return x
print(g(10))
输出:
-10
答案 1 :(得分:0)
您的代码过于复杂,因为两种情况下的操作都是相同的,您可以简化一下:
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
那会实现您想要的结果-但正如该答案顶部所提到的那样,对于您实际上要执行的操作来说太简单了。