Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

पायथन में IP एड्रेस मान्य करें


मान लीजिए हमारे पास एक स्ट्रिंग है; हमें जांचना होगा कि दिया गया इनपुट वैध IPv4 एड्रेस है या IPv6 एड्रेस या दोनों नहीं।

IPv4 एड्रेस कैनोनिकली डॉटेड-डेसिमल नोटेशन में दर्शाए जाते हैं, जिसमें चार दशमलव संख्याएं होती हैं, जिनमें से प्रत्येक 0 से 255 तक होती है, डॉट्स (\".\") से अलग। उदाहरण के लिए, 192.168.254.1; इसके अलावा, IPv4 एड्रेस में लीडिंग जीरोज़ अमान्य हैं। उदाहरण के लिए, एड्रेस 192.168.254.01 अमान्य है।

IPv6 एड्रेस को चार हेक्साडेसिमल अंकों के आठ समूहों के रूप में दर्शाया जाता है, प्रत्येक समूह 16 बिट्स का प्रतिनिधित्व करता है। समूहों को कॉलन (\":\") से अलग किया जाता है। उदाहरण के लिए, मान लीजिए एड्रेस 2001:0db8:85a3:0000:0000:8a2e:0370:7334 एक वैध एड्रेस है। इसके अलावा, हम चार हेक्साडेसिमल अंकों में से कुछ लीडिंग जीरोज़ को छोड़ सकते हैं और एड्रेस में कुछ लोअरकेस कैरेक्टर्स को अपरकेस में बदल सकते हैं, इसलिए 2001:db8:85a3:0:0:8A2E:0370:7334 यह एड्रेस भी वैध है।

हालांकि, हम लगातार शून्य मान के समूह को दो लगातार कॉलन (::) का उपयोग करके एक खाली समूह से प्रतिस्थापित नहीं करते हैं ताकि सादगी बनी रहे। इसलिए उदाहरण के लिए, 2001:0db8:85a3::8A2E:0370:7334 एक अमान्य IPv6 एड्रेस है। इसके अलावा, IPv6 में अतिरिक्त लीडिंग जीरोज़ भी अमान्य हैं। एड्रेस 02001:0db8:85a3:0000:0000:8a2e:0370:7334 अमान्य है।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • checkv4(x) नामक एक मेथड परिभाषित करें, यह जांचेगा कि क्या x 0 से 255 की रेंज में है, तो true, अन्यथा false

  • checkv6(x) नामक एक मेथड परिभाषित करें, यह निम्नानुसार काम करेगा -

    • यदि x का आकार > 4 है, तो false लौटाएं

    • यदि x का दशमलव समकक्ष >= 0 और x[0] '-' नहीं है, तो true लौटाएं, अन्यथा false

  • मुख्य मेथड से

  • यदि इनपुट में तीन डॉट्स हैं, और प्रत्येक भाग के लिए checkv4(i) true है, तो \"IPv4\" लौटाएं

  • यदि इनपुट में सात कॉलन हैं, और प्रत्येक भाग के लिए checkv6(i) true है, तो \"IPv6\" लौटाएं

उदाहरण (पायथन)

बेहतर समझ पाने के लिए निम्न कार्यान्वयन देखें -

class Solution(object):
    def validIPAddress(self, IP):
        \"\"\"
        :type IP: str
        :rtype: str
        \"\"\"
        def isIPv4(s):
            try:
                return str(int(s)) == s and 0 <= int(s) <= 255
            except:
                return False
        def isIPv6(s):
            if len(s) > 4:
                return False
            try:
                return int(s, 16) >= 0 and s[0] != '-'
            except:
                return False
        if IP.count(\".\") == 3 and all(isIPv4(i) for i in IP.split(\".\")):
            return \"IPv4\"
        if IP.count(\":\") == 7 and all(isIPv6(i) for i in IP.split(\":\")):
            return \"IPv6\"
        return \"Neither\"

ob = Solution()
print(ob.validIPAddress(\"172.16.254.1\"))

इनपुट

\"172.16.254.1\"

आउटपुट

\"IPv4\"

  1. - पायथन में फ़ंक्शन परिभाषित करना

    आप आवश्यक कार्यक्षमता प्रदान करने के लिए फ़ंक्शन्स को परिभाषित कर सकते हैं। पायथन में फ़ंक्शन परिभाषित करने के लिए यहां सरल नियम हैं। फ़ंक्शन ब्लॉक्स def कीवर्ड से शुरू होते हैं जिसके बाद फ़ंक्शन नाम और पैरेंथेसिस ( ( ) ) आते हैं। कोई भी इनपुट पैरामीटर्स या आर्गुमेंट्स इन पैरेंथेसिस के भीतर रखे ज

  1. - पायथन में IP एड्रेस को डीफैंग करना

    मान लीजिए हमारे पास एक वैलिड IPv4 IP एड्रेस है। हमें IP एड्रेस का डीफैंग्ड वर्जन लौटाना है। एक डीफैंग्ड IP एड्रेस मूल रूप से हर पीरियड . को [.] से बदल देता है। इसलिए यदि IP एड्रेस 192.168.4.1 है, तो आउटपुट 192[.]168[.]4[.]1 होगा। समाधान के चरण हम स्ट्रिंग को डॉट का उपयोग करके स्प्लिट करेंगे, फिर प

  1. - पायथन में एकाधिक मान वापस करना

    पायथन फ़ंक्शन एकाधिक मान वापस कर सकते हैं। इन मानों को सीधे वेरिएबल्स में संग्रहीत किया जा सकता है। एक फ़ंक्शन एक वेरिएबल वापस करने तक सीमित नहीं है, यह शून्य, एक, दो या अधिक मान वापस कर सकता है।यह पायथन की डिफ़ॉल्ट संपत्ति है कि वह एकाधिक मान/वेरिएबल वापस कर सकता है जो C++ या Java जैसी कई अन्य प्रो