我正在尝试用Python解决这个问题:
“查找由两个3位数字的乘积制成的最大回文。”这是我的代码:
list_number = reversed(range(10000, 998002))
def check_number(x):
for element in reversed(range(100, 1000)):
while True:
if x >= 100:
if element * x == i:
print(i)
break
else:
x -= 1
continue
else:
break
for i in list_number:
if str(i) == str(i)[::-1]:
check_number(999)
else:
continue
代码使用2位数字,但不能使用3位数字。 有人可以请求告诉我什么是不正确的吗?
答案 0 :(得分:0)
您的代码编写得非常糟糕,但真正的问题在于语句x -= 1
:x
的值在内循环的每次迭代和的末尾递减第一个内循环,x
为99.这使得外部循环的所有后续迭代的条件if x >= 100
为false。
在x=999
之后立即添加for element in reversed(range(100, 1000))
。或者,更好的是,学习一些好的编程并完全重写程序。