【发布时间】:2018-01-22 18:09:42
【问题描述】:
我为project Euler question #4 编写了以下代码:
回文数的两种读法相同。由两个 2 位数字的乘积构成的最大回文数是 9009 = 91 × 99。
找出由两个 3 位数字相乘的最大回文数。
def foo():
for x in xrange (999,100,-1):
for y in xrange (999,100,-1):
product= (x*y)
if str(product)== str(product)[::-1]:
print product
foo()
此代码生成所有回文的连续输出,因为我省略了中断。但是输出如下:
580085
514415
906609
119911
282282
141141
853358
650056
601106
..
..
我不明白为什么最大的数字没有首先打印出来。 C 中的类似代码在最顶部给出了最大的数字。我缺少关于 Python for 循环的东西吗?
【问题讨论】:
-
您应该更仔细地查看
x和y的价值观在生产这些产品... -
尝试用
print x,y,product代替print product,看看你注意到了什么。 -
由于 C 中没有
xrange,我很好奇“C 中的类似代码”是什么样的。 -
如果您希望对回文进行排序,请在 for 循环期间将它们存储在列表中,然后排序并在末尾打印。
-
我希望你注意到你的输出包含每个回文两次。作为初学者,您确定要使用Python 2 而不是 Python 3?
标签: python python-2.7