2016-10-22 6 views
-7
s1 = request.args.get('s1', '') 
s2 = request.args.get('s2', '') 

    if '' not in [s1, s2]: 
     if s1 == s2: 
      if all(ord(c1) is ord(c2) for c1, c2 in zip(s1, s2)): 
      msg = "first" 
      else: 
      msg += "second" 
     else: 
      msg = "thrid" 
     else: 
     msg = 'fourth' 

このコードでは、 "second"を印刷します。python-文字列の等号とord()の比較?

私は S1 =」0.0" これらの入力をしようとしたとs2 = "0.00"

誰もが "if all(ord(c1) is ord(c2) for c1, c2 in zip(s1, s2)):" は、正確に何を意味するのか簡単に説明していただけますか?

私はそれが文字列の等価性に関連していることと、文字列のord()を比較し、これらがどのように異なっているかを知りたいと理解しています。

ご協力いただきありがとうございます。

PS:字下げをお許しください。 Python初心者はここ!

+2

[否定的な質問]を削除しないでください(http://stackoverflow.com/questions/40198062/python-strings-equality- and-ord-comparison#40198062)を使用して、下降声と批判を拭くだけです。 – TigerhawkT3

+1

あなたは3k +評判を得ていますが、コードにはインデントがありません。あなたは今質問する方法を知っている必要があります。 –

+0

@anonymous:私はPythonでプログラミングしていないので、インデントを許してください。そのことに関しては、私の質問でもiveは言及しました。 – Aditya

答えて

0

インターンは実装の詳細なので、そのコードを2番目に印刷する方法は100%ありません。

CPythonのは、すべてのord(c1)が同じidを持っている場合、それが> 256

>>> s1 = "asdሴ" 
>>> s2 = "asdሴ" 
>>> s1 == s2 
True 
>>> all(ord(c1) is ord(c2) for c1, c2 in zip(s1, s2)) 
False 

all(ord(c1) is ord(c2) for c1, c2 in zip(s1, s2))チェックordリターンの何かに渡されたとき、あなたはその文字を必要とするでしょう、[-5, 256]範囲で

を整数をインターンord(c2)iddocumentationから

戻るオブジェクトの「アイデンティティ」。これは、そのオブジェクトの存続期間中に一意で定数であることが保証されている整数です。存続期間が重複しない2つのオブジェクトは、同じid()値を持つことがあります。

CPython実装の詳細:メモリ内のオブジェクトのアドレスです。平易な英語で

+0

このスニペットは、特定の結果を印刷する方法ではなく、スニペットの意味を質問します。 – TigerhawkT3

-1

は、if all(ord(c1) is ord(c2) for c1, c2 in zip(s1, s2))つまりALL ord(s1[i])の値と(ord(s1[i])ord(s2[i])ための基準は、場合c1c2)両方のリスト

についても同様である 0から len(s1 or s2)の範囲 iため ord(s2[i])

zip()文書を確認してください。文書の通り:i番目のタプルは引数配列またはイテレート可能オブジェクトのそれぞれからi番目 元素を含むタプルのリストを返す

ジッパー()。返さ リストが最短引数 配列の長さと長さに切り捨てられ

例えば:

>>> l1 = [1, 2 ,3] 
>>> l2 = [7, 8, 9] 
>>> zip(l1, l2) 
[(1, 7), (2, 8), (3, 9)] 

[ord(c1) is ord(c2) for c1, c2 in zip(s1, s2)]条件ord(c1) is ord(c2)c1に基づいTrue/False値のタプルのリストを返しますc2zip()によって返されたタプルの前のリストからのtupleの対です。

最後の部分です。もしall()Trueを返すならば、リスト[ ... ]True/Falseの値はすべてTrueの値を持つでしょう。単一のアイテムがFalseの場合、all()Falseのように値を返します。