[英]CodeWars Kata Move zeros to end of list
嘿伙计们,所以我几乎解决了这个 kata,但我的代码一直未能通过这个测试。 有任何想法吗?
def move_zeros(array):
n = len(array)
count = 0
for i in range(n):
if array[i] is not 0:
if type(array[i]) != int or type(array[i]) != float:
array[count] = array[i]
count += 1
else:
array[count] = array[i]
count += 1
while count < n:
array[count] = 0
count += 1
return array
这是失败的测试:
[9, 0.0, 9, 1, 2, 1, 1, 0.0, 3, 1, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0]
应该等于[9, 9, 1, 2, 1, 1, 3, 1, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
。
我假设它的浮点值将其丢弃,因此我尝试使用第二个 if 语句来解释它,但无济于事。
比较数字时不要使用is not
。 这不是预期的用途。 而是使用==
比较运算符。
is
和is not
或用于比较实际对象,而不是文字。
深入研究为什么由于使用而这不起作用是:
is
检查对象字面上是否引用相同的 object。 所有数字都是 python 中的对象,但0
的int
object 与0.0
的float
object 不同。
在“引擎盖”下,这些对象通过定义适当的__eq__
方法来允许int
s 和float
s 之间的相等性,该方法最终在您调用0 == 0.0
时使用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.