1
1
"""
2
+ wiki: https://en.wikipedia.org/wiki/IPv4
3
+
2
4
Is IP v4 address valid?
3
5
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
7
9
"""
8
10
9
11
10
- def is_ip_v4_address_valid (ip_v4_address : str ) -> bool :
12
+ def is_ip_v4_address_valid (ip : str ) -> bool :
11
13
"""
12
14
print "Valid IP address" If IP is valid.
13
15
or
@@ -16,13 +18,13 @@ def is_ip_v4_address_valid(ip_v4_address: str) -> bool:
16
18
>>> is_ip_v4_address_valid("192.168.0.23")
17
19
True
18
20
19
- >>> is_ip_v4_address_valid("192.255 .15.8")
21
+ >>> is_ip_v4_address_valid("192.256 .15.8")
20
22
False
21
23
22
24
>>> is_ip_v4_address_valid("172.100.0.8")
23
25
True
24
26
25
- >>> is_ip_v4_address_valid("254. 255.0.255 ")
27
+ >>> is_ip_v4_address_valid("255.256.0.256 ")
26
28
False
27
29
28
30
>>> is_ip_v4_address_valid("1.2.33333333.4")
@@ -45,12 +47,29 @@ def is_ip_v4_address_valid(ip_v4_address: str) -> bool:
45
47
46
48
>>> is_ip_v4_address_valid("1.2.3.")
47
49
False
50
+
51
+ >>> is_ip_v4_address_valid("1.2.3.05")
52
+ False
48
53
"""
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
51
70
52
71
53
72
if __name__ == "__main__" :
54
73
ip = input ().strip ()
55
74
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