Как проверить, что после чисел идут точки в Python?

Есть ip-адрес, который пользователь вводит из командной строки. Например, 10.100.100.1 Как проверить, что после чисел идут точки? (Сделать это надо без регулярных выражений и подключения дополнительных модулей)


Ответы (3 шт):

Автор решения: kotleni

Возможное решение:

def validIP(address):
    parts = address.split(".")
    if len(parts) != 4:
        return False
    for item in parts:
        if not item.isdigit():
            return False
        if not 0 <= int(item) <= 255:
            return False
    return True
→ Ссылка
Автор решения: gil9red

Пример:

def is_valid_ip(ip_string: str) -> bool:
    parts = ip_string.split(".")
    if len(parts) != 4:
        return False

    return all(x.isdigit() and 0 <= int(x) <= 255 for x in parts)

Проверка работы:

print(is_valid_ip('1.1.1.1'))
print(is_valid_ip('1.1.'))
print(is_valid_ip('1.1.1.1.1'))
print(is_valid_ip('255.255.255.255'))
print(is_valid_ip('255.255.255.256'))
print(is_valid_ip('255.255.abc.256'))
print(is_valid_ip('1.2.3.4.a'))
# True
# False
# False
# True
# False
# False
# False

PS.

Такое же решение, но с использованием функции socket.inet_aton

import socket

def is_valid_ip(ip_string: str) -> bool:
    try:
        socket.inet_aton(ip_string)
        return True
    except socket.error:
        return False
→ Ссылка
Автор решения: Данияр

Ребят я тут покопался поэтому поводу и сделал свое:

while True:

    ip_adress = input("Введите IP: ").split(".")

    for f in ip_adress:
        if "," in f:
            print("Адрес — это четыре числа, разделённые точками.")

        try:
            if int(f) > 255:
                print(f"{f} превышает 255.")
            else:
                continue
        except ValueError:
            print(f"{f} - это не целое число")
        break
    else:
        print("IP-адрес корректен.")

Код не идеальный но требования задачи выполняет

→ Ссылка