2017-07-21 28 views
2

私のコードでアンドロイドバージョン番号を比較しようとしています。いずれかのバージョンが4.1より小さい場合は、そのバージョン番号が必要です。バージョン番号の比較

以下のように文字列の比較を直接行う必要がありますか?

例:

"4.0.3" < "4.1" # should return. 
"5.0" < "4.1" # should not return. 
+0

を試してみてください、それはあなたに期待される結果が得られます。 –

+8

**あなたは**しないでください。 '10.2 <4.1'は' True'を返します。文字列の比較は、一度に1文字ずつ行われます。上記の例では、 '' 1''は '' 4''と比較され、失われます。 –

+1

このトピックを見てください:https://stackoverflow.com/questions/11887762/compare-version-strings-in-python – CrazyElf

答えて

0

あなたは直接Pythonでこの文字列を比較することができ、この

def compare_versions_greater_than(v1, v2): 
    for i, j in zip(map(int, v1.split(".")), map(int, v2.split("."))): 
     if i == j: 
      continue 
     return i > j 
    return len(v1.split(".")) > len(v2.split(".")) 

a = "2.0.3" 
b = "2.1" 
print(compare_versions_greater_than(a, b)) 
print(compare_versions_greater_than(b, a)) 

出力

False 
True 
-2

あなたが浮かぶようにバージョン文字列を変換することができます。そしてそれらを比較する。

def version2float(version): 
    main, *tail = version.split('.') 
    temp = ''.join(tail) 
    return float('.'.join([main, temp])) 
+0

私はdownvoteあなたのコメントを残す人にしたい。 – stamaimer