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

पायथन में आईपी पता मान्य करें


मान लीजिए कि हमारे पास एक स्ट्रिंग है; हमें यह जांचना होगा कि दिया गया इनपुट एक मान्य 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 की सीमा में है, फिर सही है, अन्यथा गलत है

  • एक विधि checkv6(x) को परिभाषित करें, यह इस प्रकार काम करेगा -

    • यदि x> 4 का आकार है, तो झूठी वापसी करें

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

  • मुख्य विधि से

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

  • यदि इनपुट में सात कोलन हैं, और प्रत्येक भाग के लिए मैं checkv6(i) सत्य है, तो "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. पायथन में एक आईपी पते को परिभाषित करना

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

  1. पायथन में एकाधिक मान लौटाना?

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