Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

เปรียบเทียบหมายเลขเวอร์ชัน (Version Numbers) ใน Python

การเปรียบเทียบหมายเลขเวอร์ชัน เช่น "1.0.1" กับ "1.0" ต้องการตรรกะพิเศษ เนื่องจากจุด (.) ไม่ใช่จุดทศนิยม แต่เป็นตัวคั่นระดับการแก้ไข (revision levels) บทความนี้เสนออัลกอริทึมและโค้ด Python สำหรับเปรียบเทียบเวอร์ชัน

กฎการเปรียบเทียบ

  • แยกเวอร์ชันด้วยจุด (.) เป็นอาร์เรย์ตัวเลข
  • เปรียบเทียบระดับต่อระดับ (left-to-right)
  • ระดับที่ขาดหายไปถือเป็น 0 (เช่น "3.4" เทียบเท่า "3.4.0.0")
  • คืนค่า: 1 ถ้า version1 > version2, -1 ถ้า version1 < version2, 0 ถ้าเท่ากัน

อัลกอริทึม

  1. แปลง version strings เป็นลิสต์จำนวนเต็ม
  2. วนลูปเปรียบเทียบแต่ละระดับจนถึงความยาวสูงสุด
  3. ระดับที่เกินความยาวถือเป็น 0
  4. คืนค่าทันทีเมื่อพบความต่าง
  5. ถ้าทุกระดับเท่ากัน คืนค่า 0

ตัวอย่างโค้ด Python

class Solution:
    def compareVersion(self, version1, version2):
        # แยก string ด้วย '.' และแปลงเป็น int
        versions1 = [int(v) for v in version1.split(".")]
        versions2 = [int(v) for v in version2.split(".")]
        
        # เปรียบเทียบแต่ละระดับ
        for i in range(max(len(versions1), len(versions2))):
            v1 = versions1[i] if i < len(versions1) else 0
            v2 = versions2[i] if i < len(versions2) else 0
            
            if v1 > v2:
                return 1
            elif v1 < v2:
                return -1
        
        return 0

# ทดสอบ
ob1 = Solution()
print(ob1.compareVersion("1.0.1", "1.0"))  # Output: 1

ตัวอย่าง Input/Output

Input: "1.0.1" "1.0"
Output: 1

การประยุกต์ใช้: อัลกอริทึมนี้ใช้ใน package managers (pip, npm), CI/CD pipelines, และ dependency resolution systems