Dada una dirección IP como entrada, la tarea es escribir un programa Python para verificar si la dirección IP dada es válida o no sin usar RegEx.
¿Qué es una dirección IP (Protocolo de Internet)?
Cada computadora conectada a Internet se identifica mediante una string única de cuatro partes, conocida como su dirección de Protocolo de Internet (IP). Una dirección IP (versión 4) consta de cuatro números (cada uno entre 0 y 255) separados por puntos. El formato de una dirección IP es una dirección numérica de 32 bits escrita como cuatro números decimales (llamados octetos ) separados por puntos; cada número se puede escribir de 0 a 255 (p. ej., de 0.0.0.0 a 255.255.255.255).
Ejemplos:
Entrada: 192.168.0.1
Salida: dirección IP válidaEntrada: 110.234.52.124
Salida: dirección IP válidaEntrada: 666.1.2.2
Salida: dirección IP no válida
Método #1: Comprobación del número de períodos usando el método count() y luego el rango de números entre cada período.
Python3
# Python program to verify IP without using RegEx # explicit function to verify IP def isValidIP(s): # check number of periods if s.count('.') != 3: return 'Invalid Ip address' l = list(map(str, s.split('.'))) # check range of each number between periods for ele in l: if int(ele) < 0 or int(ele) > 255 or (ele[0]=='0' and len(ele)!=1): return 'Invalid Ip address' return 'Valid Ip address' # Driver Code print(isValidIP('666.1.2.2'))
Invalid Ip address
Método #2: usar una variable para verificar el número de períodos y usar un conjunto para verificar si el rango de números entre períodos está entre 0 y 255 (inclusive).
Python3
# Python program to verify IP without using RegEx # explicit function to verify IP def isValidIP(s): # initialize counter counter = 0 # check if period is present for i in range(0, len(s)): if(s[i] == '.'): counter = counter+1 if(counter != 3): return 0 # check the range of numbers between periods st = set() for i in range(0, 256): st.add(str(i)) counter = 0 temp = "" for i in range(0, len(s)): if(s[i] != '.'): temp = temp+s[i] else: if(temp in st): counter = counter+1 temp = "" if(temp in st): counter = counter+1 # verifying all conditions if(counter == 4): return 'Valid Ip address' else: return 'Invalid Ip address' # Driver Code print(isValidIP('110.234.52.124'))
Valid Ip address