Skip to content

Commit 68b4c6b

Browse files
mahditavasolim.tavasolipre-commit-ci[bot]MaximSmolskiy
authored
fix is_ip_v4_address_valid.py (#12394)
* fix is_ip_v4_address_valid * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Update is_ip_v4_address_valid.py --------- Co-authored-by: m.tavasoli <[email protected]> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Maxim Smolskiy <[email protected]>
1 parent f45e392 commit 68b4c6b

File tree

1 file changed

+28
-9
lines changed

1 file changed

+28
-9
lines changed

Diff for: maths/is_ip_v4_address_valid.py

+28-9
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
"""
2+
wiki: https://en.wikipedia.org/wiki/IPv4
3+
24
Is IP v4 address valid?
35
A valid IP address must be four octets in the form of A.B.C.D,
4-
where A,B,C and D are numbers from 0-254
5-
for example: 192.168.23.1, 172.254.254.254 are valid IP address
6-
192.168.255.0, 255.192.3.121 are invalid IP address
6+
where A, B, C and D are numbers from 0-255
7+
for example: 192.168.23.1, 172.255.255.255 are valid IP address
8+
192.168.256.0, 256.192.3.121 are invalid IP address
79
"""
810

911

10-
def is_ip_v4_address_valid(ip_v4_address: str) -> bool:
12+
def is_ip_v4_address_valid(ip: str) -> bool:
1113
"""
1214
print "Valid IP address" If IP is valid.
1315
or
@@ -16,13 +18,13 @@ def is_ip_v4_address_valid(ip_v4_address: str) -> bool:
1618
>>> is_ip_v4_address_valid("192.168.0.23")
1719
True
1820
19-
>>> is_ip_v4_address_valid("192.255.15.8")
21+
>>> is_ip_v4_address_valid("192.256.15.8")
2022
False
2123
2224
>>> is_ip_v4_address_valid("172.100.0.8")
2325
True
2426
25-
>>> is_ip_v4_address_valid("254.255.0.255")
27+
>>> is_ip_v4_address_valid("255.256.0.256")
2628
False
2729
2830
>>> is_ip_v4_address_valid("1.2.33333333.4")
@@ -45,12 +47,29 @@ def is_ip_v4_address_valid(ip_v4_address: str) -> bool:
4547
4648
>>> is_ip_v4_address_valid("1.2.3.")
4749
False
50+
51+
>>> is_ip_v4_address_valid("1.2.3.05")
52+
False
4853
"""
49-
octets = [int(i) for i in ip_v4_address.split(".") if i.isdigit()]
50-
return len(octets) == 4 and all(0 <= int(octet) <= 254 for octet in octets)
54+
octets = ip.split(".")
55+
if len(octets) != 4:
56+
return False
57+
58+
for octet in octets:
59+
if not octet.isdigit():
60+
return False
61+
62+
number = int(octet)
63+
if len(str(number)) != len(octet):
64+
return False
65+
66+
if not 0 <= number <= 255:
67+
return False
68+
69+
return True
5170

5271

5372
if __name__ == "__main__":
5473
ip = input().strip()
5574
valid_or_invalid = "valid" if is_ip_v4_address_valid(ip) else "invalid"
56-
print(f"{ip} is a {valid_or_invalid} IP v4 address.")
75+
print(f"{ip} is a {valid_or_invalid} IPv4 address.")

0 commit comments

Comments
 (0)