আমি লিখতে চান cmp
-একটি ফাংশন যা দুই সংস্করণ সংখ্যা এবং আয় তুলনা -1
, 0
অথবা 1
তাদের তুলনায় valuses উপর ভিত্তি করে।
-1
সংস্করণ A সংস্করণ বি এর চেয়ে পুরানো হলে ফিরে আসুন0
সংস্করণ A এবং B সমান হলে ফিরে আসুন1
সংস্করণ A সংস্করণ বি এর চেয়ে নতুন হলে ফিরে আসুন
প্রতিটি অনুচ্ছেদটি একটি সংখ্যা হিসাবে ব্যাখ্যা করার কথা, সুতরাং 1.10> 1.1।
পছন্দসই ফাংশন আউটপুট হয়
mycmp('1.0', '1') == 0
mycmp('1.0.0', '1') == 0
mycmp('1', '1.0.0.1') == -1
mycmp('12.10', '11.0.0.0.0') == 1
...
এবং এখানে আমার বাস্তবায়ন, উন্নতির জন্য উন্মুক্ত:
def mycmp(version1, version2):
parts1 = [int(x) for x in version1.split('.')]
parts2 = [int(x) for x in version2.split('.')]
# fill up the shorter version with zeros ...
lendiff = len(parts1) - len(parts2)
if lendiff > 0:
parts2.extend([0] * lendiff)
elif lendiff < 0:
parts1.extend([0] * (-lendiff))
for i, p in enumerate(parts1):
ret = cmp(p, parts2[i])
if ret: return ret
return 0
আমি পাইথন ২.৪.৫ বিটিডাব্লু ব্যবহার করছি। (আমার কর্মক্ষেত্রে ইনস্টল করা ...)।
আপনি ব্যবহার করতে পারেন এখানে একটি ছোট 'টেস্ট স্যুট'
assert mycmp('1', '2') == -1
assert mycmp('2', '1') == 1
assert mycmp('1', '1') == 0
assert mycmp('1.0', '1') == 0
assert mycmp('1', '1.000') == 0
assert mycmp('12.01', '12.1') == 0
assert mycmp('13.0.1', '13.00.02') == -1
assert mycmp('1.1.1.1', '1.1.1.1') == 0
assert mycmp('1.1.1.2', '1.1.1.1') == 1
assert mycmp('1.1.3', '1.1.3.000') == 0
assert mycmp('3.1.1.0', '3.1.2.10') == -1
assert mycmp('1.1', '1.10') == -1