-4

Pythonでintを文字列(数値を含む)と比較する場合、文字列を明示的に変換する必要はないと思いました。しかし、次のコードは私にレッスンを教えてくれました:

size = raw_input("a numeric value:")
a_str = 'abcdefghijklmn'
if len(a_str) > size:
    print("The string is longer.")
elif len(a_str) < size:
    print("The string is shorter.")
else:
    print("they are equal in length.")

入力した値に関係なく、int(size)を使用してサイズを変換するまで、常にlen(a_str)<sizeを選択しました。

4

1 に答える 1

2

pythonマニュアルはそれを明確に述べました

CPython 実装の詳細: 数値以外の異なる型のオブジェクトは、型名によって並べ替えられます。適切な比較をサポートしない同じタイプのオブジェクトは、アドレス順に並べられます。

異なる数値型と異なる文字列型を除いて、異なる型のオブジェクトが等しく比較されることはありません。そのようなオブジェクトは一貫して任意に並べ替えられます (異種配列を並べ替えても一貫した結果が得られるようにするため)。さらに、一部の型 (たとえば、ファイル オブジェクト) は、その型の 2 つのオブジェクトが等しくない比較の縮退概念のみをサポートします。繰り返しますが、このようなオブジェクトは任意ですが一貫して順序付けられます。<、<=、>、および >= 演算子は、オペランドが複素数の場合に TypeError 例外を発生させます。

関連する質問:

Python は string と int をどのように比較しますか?

于 2012-07-25T03:20:15.467 に答える