欧拉项目:最大回文(Python)。我做错了什么?

欧拉项目:最大回文(Python)。我做错了什么?,python,math,palindrome,Python,Math,Palindrome,我可能做了很多错事,因为我只是一个初学者。有人能帮我吗?目标是打印由两个3位数字的乘积构成的最大回文。谢谢 palindromes = [] for i in range(100, 1000): for x in range(100, 1000): a = x*i str(a) b = a[::-1] if a == b : palindromes.append(a) print (palindro

我可能做了很多错事,因为我只是一个初学者。有人能帮我吗?目标是打印由两个3位数字的乘积构成的最大回文。谢谢

palindromes = []
for i in range(100, 1000):
    for x in range(100, 1000):
        a = x*i
        str(a)
        b = a[::-1]
        if a == b :
            palindromes.append(a)

print (palindromes[len(palindromes) - 1])

在定义代码之前,在代码中使用
x
,因此该代码将出错。您还有其他错误:您应该能够使用回溯轻松地找到它们。一个逻辑错误是,您找到了
a
的字符串,但没有将其存储在任何位置,因此它丢失了。您还可以将
a
作为一个整数开始,然后尝试将其设置为一个字符串:将类型分开,除非您有很好的理由更改类型。您应该使用更好的变量名:
a、b、i、x
是糟糕的名称。写下他们的意思!多输入几个字符是便宜的,可以防止错误


每个回文必须是两个三位数字的乘积,因此需要两个嵌套循环,范围为(1001000)。使用
x
作为另一个循环变量,无需对代码进行太多更改。

打印前,添加行:

palindrome.sort()
基本要点:

  • 将数字转换为字符串时,必须存储结果
  • 完成后对列表进行排序
  • 使用右端索引获取最后一个元素
  • 当您找到回文时,请保留整数形式,以便排序正常工作。否则,“99999”将作为最大回文
代码:


范围(1001000)
后缺少冒号,未定义x。这到底是为了哪个项目?@Keatinge我在实际代码中做了这些事情。我只是把它们忘在这里了。这是存档中的第四个问题。欢迎使用StackOverflow。请阅读并遵循帮助文档中的发布指南。适用于这里。在您发布代码并准确描述问题之前,我们无法有效地帮助您。这段代码仍然没有运行;您未能提供错误消息。哦,是的,我确实为x提供了另一个for循环,但我忘了放那个。我要补充一点。非常感谢。我把a改成了字符串,这样我就可以把它颠倒过来了。非常感谢!这成功了!伟大的记住投票选出有用的答案,并接受你最喜欢的答案。这使得SO能够正确地归档问题。
palindromes = []
for i in range(100, 1000):
    for x in range(100, 1000):
        a = str(x*i)
        b = a[::-1]
        if a == b :
            palindromes.append(int(a))

print (sorted(palindromes)[-1])