这打印1817181作为输出是错误的

时间:2018-04-09 10:11:26

标签: python

c = []
for i in range(100,1000):
  for j in range(100,1000) :
    k=i*j
    l=str(k)
    i = i+1
    j= j+1
    b = l[::-1]
    if l == b :
      c.append(l)
print max(c)
print c

我发现两个3位数字的最大倍数是回文。 输出是1817181。 现在在将第10行更改为
之后打印最大的整数     c.append(INT(1)) 但回文问题的答案是错误的

c = []
for i in range(100,1000):
  for j in range(100,1000) :
    k=i*j
    l=str(k)
    b = l[::-1]
    if l == b :
      c.append(int(l))
print max(c)

更新代码给出正确答案

2 个答案:

答案 0 :(得分:2)

正如其他人所说,你的列表中有一个最大字符串,但是如果你需要它们不是字符串,你可以使用它:

 print max(c,key=int)

答案 1 :(得分:1)

这是因为您正在比较' max()'中的字符串。功能。因此,它会根据这些字符串数字的ASCII值进行比较。所以999999作为最大值返回。 相反,您应追加 k列出c

c.append(k)