• 0

كيف أقارن عدد الإصدار في بايثون؟

أريد مقارنة أعداد إصدارات لبرنامج معين في بايثون ومعرفة ما الإصدار الأحدث، حاولت مقارنة السلاسل النصية لكنها تعطي نتيجة خاطئة كالتالي:

>>> "2.3.1" > "10.1.1"
True

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

يمكنك فعل ذلك بعدة طرق في لغة بايثون، فيمكنك على سبيل المثال استخدام دوال LooseVersion وstrictVersion من وحدة distutils.version وبعدها تقوم بعملية المقارنة المعتادة وسيتم إرجاع قيمة منطقية (True/False) كما في المثال التالي:

>>> from distutils.version import LooseVersion, StrictVersion
>>> LooseVersion("2.3.1") < LooseVersion("10.1.2")
True
>>> StrictVersion("2.3.1") < StrictVersion("10.1.2")
True
>>> StrictVersion("1.3.a4")
Traceback (most recent call last):
...
ValueError: invalid version number '1.3.a4'

أو يمكنك تحويل أعداد الإصدارات إلى tuple عن طريق استخدام حلقة التكرار map بالإضافة إلى دوال split و int ومن ثم تقوم بعملية المقارنة كما في المثال التالي:

def versiontuple(v):
    return tuple(map(int, (v.split("."))))

>>> versiontuple("2.3.1") > versiontuple("10.1.1")
False

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن