2017-07-21 1 views
2

Ich versuche, Android-Versionsnummern in meinem Code zu vergleichen. Wenn eine Version kleiner als 4.1 ist, möchte ich diese Versionsnummer.Versionsnummer Vergleich

Sollte ich Vergleich auf Strings direkt als unten verwenden?

Beispiele:

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

Sie diese Zeichenfolge in Python direkt vergleichen kann, Es wird Ihnen die erwarteten Ergebnisse. –

+8

** Nein, du solltest nicht **. '10.2 <4.1 'gibt' True 'zurück. Zeichenkettenvergleiche finden jeweils für ein Zeichen statt. Im obigen Beispiel wird "1" mit "4" verglichen und verliert. –

+1

Sehen Sie sich dieses Thema an: https://stackoverflow.com/questions/11887762/compare-version-strings-in-python – CrazyElf

Antwort

0

Versuchen Sie, diese

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

Ausgabe

False 
True 
-2

können Sie die Versionsstring umwandeln zu schweben. Und dann vergleiche sie.

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

Ich möchte derjenige, der downvote hinterlassen Sie Ihren Kommentar. – stamaimer