此代码检查数字组合是否产生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
问题是什么?如何改进我已编写的代码?
答案 0 :(得分:5)
存在逻辑问题。这一行:
check = cmp(vamp.sort(),vamp_check.sort())
每次都会check = 0
,因为.sort()
list
方法排序并返回None
。