2017-08-07 33 views
2

我的python文件就像下面一样,但我不知道为什么结果是差别, 唯一的区别是关于z & k,z是int并且k是str。python中不同数据类型的结果差异

l = [] 
j = [] 
for x in range(100,1000): 
    for y in range(100,1000): 
     z = (x * y) 
     k = str(x*y) 

     if k == k[::-1]: 
      '''print (k) 
      print('========================')''' 
      l.append(k) 
     if str(z) == str(z)[::-1]: 
      '''print (z) 
      print ('+++++++++++++++++++++++++++')''' 
      j.append(z) 

print('*********************************************') 
print max(l) 
print max(j) 
print (l) 
+0

'if'语句提问“这是一个回文?” - 扭转时是否一样? –

回答

3

l包含字符串,j包含整数。

所以在l的情况下,执行max字典比较(忽略的数值,在此情况下常规的字符串比较),而在jmax按预期工作通过取的最大整数。

>>> "99999" > "906609" 
True 

旁白:

max(i for i in (x*y for x in range(100,1000) for y in range(x,1000)) if str(i)==str(i)[::-1]) 

(注意,没有必要从100开始为内环,从x开始:您可以在一个行中使用传递到max嵌套推导计算最大值因为乘法是可交换的)