回文(euler项目)

时间:2018-01-13 22:10:07

标签: python python-2.7 palindrome

我正在尝试用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位数字。 有人可以请求告诉我什么是不正确的吗?

1 个答案:

答案 0 :(得分:0)

您的代码编写得非常糟糕,但真正的问题在于语句x -= 1x的值在内循环的每次迭代和的末尾递减第一个内循环,x为99.这使得外部循环的所有后续迭代的条件if x >= 100为false。

x=999之后立即添加for element in reversed(range(100, 1000))。或者,更好的是,学习一些好的编程并完全重写程序。