Как проверить, что после чисел идут точки в 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-адрес корректен.")
Код не идеальный но требования задачи выполняет