【问题标题】:near_ten() appears to have a bug on Codingbat [closed]near_ten() 似乎在 Codingbat 上有一个错误 [关闭]
【发布时间】:2021-12-01 08:02:24
【问题描述】:

Codingbat 有一道练习题 Under Logic-1, Python。它被称为 near_10。

给定一个非负数“num”,如果 num 在 10 的倍数的 2 以内,则返回 True。注意:(a % b) 是 a 除以 b 的余数,所以 (7 % 5) 是 2

一位用户的 GitHub 上的解决方案如下所示

def near_ten(num):
  
  within = num%((num/10)*10) if num >= 10 else num
  return within in [8,9,0,1,2]

这被接受为代码检查表中包含的所有示例的正确答案

但是,在 Jupyter Notebook 中,当我在函数 near_ten() 中传递上表中的 False 示例时,我会得到不同的结果

我在 S.O. 上搜索过这里。并通过 UltraInstinct 找到了一个有效的答案 Python near_ten function/method

【问题讨论】:

  • 是的,这个解决方案是无稽之谈,10 * (num / 10) 什么都不做,只是将num 作为float 返回。由于num 保证为非负数,因此您实际上只需要num % 10
  • "It is more an issue of a website having a faulty code check for a solution which beginning coders use to train for technical interviews. This question thereby helps the development community and should be reopened in my opinion." - 这仍然不适合 SO,将错误报告给 Codingbat 本身,我们对他们网站上的错误无能为力,可以吗?
  • 我联系了 Codingbat。新程序员应该注意这个问题。他们中的大多数人主要搜索 SO。所以你认为不合适的意见就是,你的意见@h4z3
  • 你是对的,他们去了 SO,但正如我所指出的,这不是从其他网站报告问题的地方 + 那里没有真正的问题,你只是说“有一个错误" 就是这样
  • 问题不仅仅是 GitHub 存储库上的答案中的拼写错误,正如关闭此问题的原因所暗示的那样。它可以随时复制,只需尝试 Codingbat 练习即可。所以结束这个问题的两个原因是错误的。这是一个网站对解决方案的代码检查错误的问题,初学者使用该解决方案来培训技术面试。我联系了 Codingbat 并没有收到任何回复。因此,这个问题有助于开发社区,我认为应该重新提出。

标签: python list function set modulo


【解决方案1】:

您提供的解决方案确实是错误的,根本不起作用。看看第一个术语((num/10)*10):它的计算结果为num。这意味着对于所有大于 9 的整数,您的结果是 num % num,它将始终为 0。此外,由于此代码使用正常除法,它会将所有项转换为浮点数。

您提供的第二个解决方案是正确的,因为您只需要第一个非十进制数字。

【讨论】:

    猜你喜欢
    • 2014-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多