首页 > 解决方案 > near_ten() 在 Codingbat 上似乎有一个错误

问题描述

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 示例时,我会得到不同的结果

我在 SO 上搜索并找到了 UltraInstinct 的答案,该答案适用于 Python near_ten 函数/方法

标签: pythonlistfunctionsetmodulo

解决方案


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

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


推荐阅读