mirror of
https://github.com/TheAlgorithms/Python.git
synced 2025-02-23 01:28:26 +00:00
fix is_ip_v4_address_valid
This commit is contained in:
parent
f3f32ae3ca
commit
ba356ca4b4
|
@ -1,13 +1,17 @@
|
||||||
"""
|
"""
|
||||||
|
wiki: https://en.wikipedia.org/wiki/IPv4
|
||||||
|
|
||||||
Is IP v4 address valid?
|
Is IP v4 address valid?
|
||||||
A valid IP address must be four octets in the form of A.B.C.D,
|
A valid IP address must be four numbers in the form of A.B.C.D,
|
||||||
where A,B,C and D are numbers from 0-254
|
where A,B,C and D are numbers from 0-255
|
||||||
for example: 192.168.23.1, 172.254.254.254 are valid IP address
|
|
||||||
192.168.255.0, 255.192.3.121 are invalid IP address
|
for example:
|
||||||
|
192.168.23.1, 172.254.254.254 are valid IP address
|
||||||
|
192.168.01.0, 256.192.3.121 are invalid IP address
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
def is_ip_v4_address_valid(ip_v4_address: str) -> bool:
|
def is_ip_v4_address_valid(ip: str) -> bool:
|
||||||
"""
|
"""
|
||||||
print "Valid IP address" If IP is valid.
|
print "Valid IP address" If IP is valid.
|
||||||
or
|
or
|
||||||
|
@ -17,12 +21,15 @@ def is_ip_v4_address_valid(ip_v4_address: str) -> bool:
|
||||||
True
|
True
|
||||||
|
|
||||||
>>> is_ip_v4_address_valid("192.255.15.8")
|
>>> is_ip_v4_address_valid("192.255.15.8")
|
||||||
False
|
True
|
||||||
|
|
||||||
>>> is_ip_v4_address_valid("172.100.0.8")
|
>>> is_ip_v4_address_valid("172.100.0.8")
|
||||||
True
|
True
|
||||||
|
|
||||||
>>> is_ip_v4_address_valid("254.255.0.255")
|
>>> is_ip_v4_address_valid("0.0.0.0")
|
||||||
|
True
|
||||||
|
|
||||||
|
>>> is_ip_v4_address_valid("254.256.0.255")
|
||||||
False
|
False
|
||||||
|
|
||||||
>>> is_ip_v4_address_valid("1.2.33333333.4")
|
>>> is_ip_v4_address_valid("1.2.33333333.4")
|
||||||
|
@ -40,17 +47,33 @@ def is_ip_v4_address_valid(ip_v4_address: str) -> bool:
|
||||||
>>> is_ip_v4_address_valid("1.2.A.4")
|
>>> is_ip_v4_address_valid("1.2.A.4")
|
||||||
False
|
False
|
||||||
|
|
||||||
>>> is_ip_v4_address_valid("0.0.0.0")
|
>>> is_ip_v4_address_valid("1.2.3.05")
|
||||||
True
|
|
||||||
|
|
||||||
>>> is_ip_v4_address_valid("1.2.3.")
|
|
||||||
False
|
False
|
||||||
"""
|
"""
|
||||||
octets = [int(i) for i in ip_v4_address.split(".") if i.isdigit()]
|
|
||||||
return len(octets) == 4 and all(0 <= int(octet) <= 254 for octet in octets)
|
parts = ip.split('.')
|
||||||
|
|
||||||
|
if len(parts) != 4:
|
||||||
|
return False
|
||||||
|
|
||||||
|
for part in parts:
|
||||||
|
if not part:
|
||||||
|
return False
|
||||||
|
|
||||||
|
for i in range(len(part)):
|
||||||
|
if not part[i].isdigit():
|
||||||
|
return False
|
||||||
|
|
||||||
|
if part[0] == '0' and len(part) > 1:
|
||||||
|
return False
|
||||||
|
|
||||||
|
if not (0 <= int(part) <= 255):
|
||||||
|
return False
|
||||||
|
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
ip = input().strip()
|
ip = input().strip()
|
||||||
valid_or_invalid = "valid" if is_ip_v4_address_valid(ip) else "invalid"
|
result = "valid" if is_ip_v4_address_valid(ip) else "invalid"
|
||||||
print(f"{ip} is a {valid_or_invalid} IP v4 address.")
|
print(f"{ip} is a {result} IPv4 address.")
|
||||||
|
|
Loading…
Reference in New Issue
Block a user