此代码旨在查找由两个 3 位数乘积创建的最大回文数。
我确信有更有效的方法来解决这个问题,欢迎您发布它们,但在我学习的这个阶段,我最感兴趣的是如何编辑我的代码已编写以使其正常工作。
当我运行此代码时,它正确创建了一个回文排序列表,但列表中的最大数字是 99,999。我不明白为什么这个列表没有超出这个范围。
def palindromes():
product_list=[]
palindrome_list=[]
for a in range(100,1000):
for b in range(100,1000):
product_list.append(a*b)
for product in product_list:
product = str(product)
if len(product) % 2 == 0:
if product[0]==product[5] and product[1]==product[4] and product[2]==product[3]:
palindrome_list.append(product)
if len(product) % 2 != 0:
if product[0]==product[4] and product[1]==product[3]:
palindrome_list.append(product)
palindrome_list = sorted(set(palindrome_list))
return palindrome_list
print(palindromes())
最佳答案
您的代码正在执行您告诉它执行的操作。
与您的假设相反,您的列表中有很多大于 99,999 的数字。
我已经执行了您的代码,列表中的第一个结果是:101101
显然是 > 99999
。
但是还有其他更大的,例如 561165
和 888888
,它们也在您的列表中。
该列表总共包含 650
个回文。这些是您可以根据开始条件生成的唯一内容
您无法达到 999,999,因为它无法在您的 for
循环中达到...
Python 只是按照你告诉它的去做。
编辑:就像奥斯卡的回答所说,你应该将限制设置为1001
,然后回文999,999
就会出现。
关于python - 为什么代码创建的列表不包含大于 99,999 的值 (Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15822924/