如何解决为什么此函数不返回负数?
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 举报,一经查实,本站将立刻删除。