此代码检查数字组合是否产生 vampire number但如果 x = 2947051 和 y = 8469153,则返回不正确的 True。
def vampire_test(x, y):
vamp = (list(str(x) + str(y)))
prod = x*y
vamp_check = list(str(prod))
print vamp, vamp_check
if '-' in vamp and '-' not in vamp_check:
return False
else:
check = cmp(vamp.sort(),vamp_check.sort())
if check == 0 and len(vamp) == len(vamp_check):
return True
else:
return False
问题是什么?我该如何改进我已经编写的代码?
最佳答案
逻辑有问题。这一行:
check = cmp(vamp.sort(),vamp_check.sort())
每次都会做check = 0
,因为list
的.sort()
方法原地排序,返回None
。
关于python - 与 Vampire Numbers 列表比较失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28871940/