I'm writing a Python function to validate IPv4 addresses. for a Task of CS50 Python. My function should:
Ensure the format is X.X.X.X, where each X is a number between 0-255.
Return True for valid IPv4 addresses and False otherwise.
However, my test case is failing with this error message:
:( test_numb3rs.py catches numb3rs.py only checking if first byte of IPv4 address is in range**
my main code is:
import re
def main():
print(validate(input("IPv4 Address: ")))
def validate(ip):
match = re.fullmatch(r"(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})", ip)
return bool(match) and all(0 <= int(octet) <= 255 for octet in match.groups())
if __name__ == "__main__":
main()
and my Test Code is:
from numb3rs import validate
def test_validate():
# Valid cases
assert validate("127.0.0.1") == True
assert validate("255.255.255.255") == True
# Invalid cases
assert validate("512.512.512.512") == False
assert validate("1.2.3.1000") == False
assert validate("cat") == False
I have tried following multiple solutions available but still could not understand the issue.
I Tried using exit(1) in a different version of my code, but that also did not solve the issue. Instead, it made the cases where any one octet goes above 255 fail.