使用python的Euler4项目:最大回文产品

使用python的Euler4项目:最大回文产品,python,numbers,project,palindrome,digit,Python,Numbers,Project,Palindrome,Digit,我是python(和编程)新手,我被困在Euler4项目中。问题是: “回文数字的两种读取方式相同。由两个两位数的乘积构成的最大回文数为9009=91×99 查找由两个3位数字的乘积构成的最大回文。” 以下是我到目前为止的收获: ProductOfThree = [] ProductOfThreeSTR = [] PalindromicNumber = [] #This first for loop displays all the results possible from the produ

我是python(和编程)新手,我被困在Euler4项目中。问题是:

“回文数字的两种读取方式相同。由两个两位数的乘积构成的最大回文数为9009=91×99

查找由两个3位数字的乘积构成的最大回文。”

以下是我到目前为止的收获:

ProductOfThree = []
ProductOfThreeSTR = []
PalindromicNumber = []
#This first for loop displays all the results possible from the product of two 3 digit Number
for k in range(100, 1000):
    for j in range(k, 1000):
        Result = k * j
        ProductOfThree.append(Result)
#This second loop converts the list of number to a list of string
for i in ProductOfThree:
    a = str(i)
    ProductOfThreeSTR.append(a)
#The third loop compare the digit of each number of the list to find all the palindromic number of that list
for d in ProductOfThreeSTR:
    if len(d) == 6:
        if (d[0] == d[5]) and (d[1] == d[4]) and (d[2] == d[3]):
            PalindromicNumber.append(d)
    elif len(d) == 5:
        if (d[0] == d[4]) and (d[1] == d[3]):
            PalindromicNumber.append(d)
#And finally here the program display the largest number of the list, which contains only the palindromic numbers
Largest = PalindromicNumber[0]
for p in PalindromicNumber:
    if Largest <= p:
        Largest = p        
print(Largest)
ProductOfThree=[]
ProductOfthTreestr=[]
回文编号=[]
#第一个for循环显示两个3位数的乘积可能产生的所有结果
对于范围(1001000)内的k:
对于范围(k,1000)内的j:
结果=k*j
ProductOfThree.append(结果)
#第二个循环将数字列表转换为字符串列表
对于三个乘积中的i:
a=str(i)
ProductOftTreestr.append(a)
#第三个循环比较列表中每个数字的数字,以找到该列表中的所有回文数字
对于ProductOfThreeSTR中的d:
如果len(d)==6:
如果(d[0]==d[5])和(d[1]==d[4])以及(d[2]==d[3]):
回文编号追加(d)
elif len(d)==5:
如果(d[0]==d[4])和(d[1]==d[3]):
回文编号追加(d)
#最后,程序显示列表中最大的数字,它只包含回文数字
最大=回文数[0]
对于回文编号中的p:

如果最大问题是,在上一个循环中,当您查找最大值时,比较字符串而不是整数。这样做,它将为您提供您期望的结果:

Largest = int(PalindromicNumber[0])
for p in PalindromicNumber:
    if Largest <= int(p):
        Largest = int(p)   
max=int(回文数[0])
对于回文编号中的p:

如果最大我认为最简单的方法是使用字符串创建回文列表,但使用整数获取最大值。这就是我想到的:

x=100

pal=[]

当x<1000时:

for i in range(100,1000):
    for j in range(100,1000):
        prod = str(i*j)
        if prod == prod[::-1]:
            pal.append(int(prod))
        x = x+1
打印(最大(pal))