2017-08-07 50 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嵌套推導計算最大值因爲乘法是可交換的)