2016-03-22 35 views
2

次のコードがTrue、False、Trueの結果をもたらす理由を理解できません。文字列と数値の比較 - Python

print("3" < "4") 
print("3" < "10") 
print("3" < "30") 

私は第一と第三のコードを理解するが、なぜprint("3" < "10")True応答を与えるものではありません。 comparison操作上のPythonのドキュメントから

おかげ

答えて

2

文字列は、その文字の数値当量(組み込み関数ORDの結果を())を使用して辞書と比較されます。

文字比較は最初の文字から始まり、文字の相違が見つかるまで比較される文字列をステップします。

あなたの第二文があるためFalseを返します。

ord("3") > ord ("1") 
2

提案のリンクはあなたの精巧な答えを与えるだろう。しかし、私はあなたがプログラミングを始めていると仮定しているので、私は非常に簡単な方法で説明しようとしています。

"ab"<"bc" 

"30"<"400" 

これを想像してみて:

['a', 'b'] <['b', 'c'] 
['3', '0'] <['1', '0', '0'] 

今の比較は、両方のリストの最初の要素の上に作られており、場合にのみ、次の要素に移動しますが、書き込みが開始するとすぐとして文字列の

、彼らは等しいです:

最初は真でなければなりません。 2番目はFalseです。

は同じロジックをフォローしてみてください:

'30'<'31' 

それはTrueに評価する必要があります。