Valide una dirección IP usando Python sin usar RegEx

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álida

Entrada: 110.234.52.124
Salida: dirección IP válida

Entrada: 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'))
Producción

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'))
Producción

Valid Ip address

Publicación traducida automáticamente

Artículo escrito por rajataro0 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *