2017-08-07 13 views
2

私のpythonファイルは以下のようになりますが、なぜ結果が異なるのか分かりません。 唯一の違いは約& 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

ljは整数を含む、文字列が含まれています。

だからlの場合には、maxは最大の整数を取ることによって、意図したとおりmaxの動作、jにおける一方辞書比較(数値、この場合の通常の文字列比較を無視する)を行います。余談

>>> "99999" > "906609" 
True 

:あなたはmaxに渡された入れ子の内包表記を使用して1行の最大値を計算することができます

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]) 

xから始まる、内側のループのために100から起動する必要はありませんのでご注意

関連する問題