TheBrain نشر 12 يناير 2016 أرسل تقرير نشر 12 يناير 2016 أريد مقارنة أعداد إصدارات لبرنامج معين في بايثون ومعرفة ما الإصدار الأحدث، حاولت مقارنة السلاسل النصية لكنها تعطي نتيجة خاطئة كالتالي:>>> "2.3.1" > "10.1.1" True اقتباس
0 هشام رزق الله نشر 12 يناير 2016 أرسل تقرير نشر 12 يناير 2016 يمكنك فعل ذلك بعدة طرق في لغة بايثون، فيمكنك على سبيل المثال استخدام دوال 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 اقتباس
السؤال
TheBrain
أريد مقارنة أعداد إصدارات لبرنامج معين في بايثون ومعرفة ما الإصدار الأحدث، حاولت مقارنة السلاسل النصية لكنها تعطي نتيجة خاطئة كالتالي:
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.