【问题标题】:Weird problem with a kata on codewars (python) [closed]codewars(python)上kata的奇怪问题[关闭]
【发布时间】:2021-04-17 08:25:59
【问题描述】:

Kata description:

在这个简单的作业中,你得到一个数字,并且必须将其设为负数。但也许这个数字已经是负数了? 示例:

Kata.MakeNegative(1); // return -1
Kata.MakeNegative(-5); // return -5
Kata.MakeNegative(0); // return 0

注意事项:

  • 数字可能已经是负数,在这种情况下不需要更改。
  • 不检查零 (0) 是否有任何特定符号。负零没有数学意义。

好的,所以这个 kata 要求我将任何数字变为负数,我知道我可以用 if 做到这一点,但我希望看到它以这种方式工作:

def make_negative( number ):
    number = ((number)*(-1))
    return number

当我测试它时它可以工作,但是当我尝试它时,我得到这个:“9 应该等于 -9”,即使它是我之前通过的一个基本测试用例(我在随机测试用例上也遇到了同样的错误)。有什么想法吗?

【问题讨论】:

  • 是的,这很奇怪,当我在任何其他编译器中尝试它时,它可以完美运行,当我在 codewars 中这样做时,我得到这个:“基本测试用例测试通过 9 应该等于 -9 测试通过完成在 0.02 毫秒内"
  • 如果数字为负数 (-9),那么您的函数会将其设为正数。这可能会导致它在某些测试用例中失败(即您的函数在应该为 -9 时返回 9)。虽然我们只能猜测,因为不清楚预期的结果和测试用例是什么。
  • 我认为您需要发布 kata 的确切文本。
  • abs() 的答案应该可以,你复制的时候一定是做错了。
  • 您的代码将把-5 变成5,它应该保留为-5。下面的答案应该有效。

标签: python multiplication


【解决方案1】:

为了得到一个总是否定的结果,我建议使用 abs 结合 -1 乘法

def make_negative(number):
    return -1 * abs(number)

print(make_negative(10))  # -10
print(make_negative(-10))  # -10

【讨论】:

  • 是的,它仍然一团糟,如果我猜到了,我会硬着头皮使用,不过感谢您的评论,祝您有美好的一天
  • if 语句比这更有效的是什么? @纳菲科斯
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-20
  • 2012-12-08
  • 1970-01-01
  • 1970-01-01
  • 2016-07-21
  • 2023-01-17
  • 2012-01-01
相关资源
最近更新 更多