Skip to content

Commit 799fd61

Browse files
authored
Update and rename check_valid_ip_address.py to is_ip_v4_address_valid.py
New test cases that the algorithm must detect: * [ ] an octet much bigger than 255 * [ ] an octet is negative * [ ] number of octets is less than 4 * [ ] number of octets is greater than 4 * [ ] an octet is a letter
1 parent 78a5d3a commit 799fd61

File tree

2 files changed

+50
-46
lines changed

2 files changed

+50
-46
lines changed

maths/check_valid_ip_address.py

Lines changed: 0 additions & 46 deletions
This file was deleted.

maths/is_ip_v4_address_valid.py

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
"""
2+
Is IP v4 address valid?
3+
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
7+
"""
8+
9+
10+
def is_ip_v4_address_valid(ip_v4_address: str) -> bool:
11+
"""
12+
print "Valid IP address" If IP is valid.
13+
or
14+
print "Invalid IP address" If IP is invalid.
15+
16+
>>> is_ip_v4_address_valid("192.168.0.23")
17+
True
18+
19+
>>> is_ip_v4_address_valid("192.255.15.8")
20+
False
21+
22+
>>> is_ip_v4_address_valid("172.100.0.8")
23+
True
24+
25+
>>> is_ip_v4_address_valid("254.255.0.255")
26+
False
27+
28+
>>> is_ip_v4_address_valid("1.2.33333333.4")
29+
False
30+
31+
>>> is_ip_v4_address_valid("1.2.-3.4")
32+
False
33+
34+
>>> is_ip_v4_address_valid("1.2.3")
35+
False
36+
37+
>>> is_ip_v4_address_valid("1.2.3.4.5")
38+
False
39+
40+
>>> is_ip_v4_address_valid("1.2.A.4")
41+
False
42+
"""
43+
octets = [int(i) for i in ip_v4_address.split(".") if i.isdigit()]
44+
return len(octets) == 4 and all(0 <= int(octet) <= 254 for octet in octets)
45+
46+
47+
if __name__ == "__main__":
48+
ip = input().strip()
49+
valid_or_invalid = "valid" if is_ip_v4_address_valid(ip) else "invalid"
50+
print(f"{ip} is a {valid_or_invalid} IP v4 address.")

0 commit comments

Comments
 (0)