my program is supposed to exit it out and not give the class or whether its publ
ID: 3586733 • Letter: M
Question
my program is supposed to exit it out and not give the class or whether its public or private if the ip address is not valid. currently as i have it, it still displays the class and public/private even when its not a valid address. how can i fix my code so when its a invalid address the program stops and doesn't display anything else? my code is below:
import sys
# Determine if this is a valid IP address
def is_valid_ip(a1, a2, a3, a4):
if 1 <= a1 <= 255 and
0 <= a2 <= 255 and
0 <= a3 <= 255 and
0 <= a4 <= 255:
print("This is a valid IP address")
else:
print("This is not a valid IP address")
sys.exit
# Determine the class of the IP address
def determine_ip_class(a1):
if 1 <= a1 <= 127:
print("This is a class A address")
elif 128 <= a1 <= 191:
print("This is a class B address")
elif 192 <= a1 <= 223:
print("This is a class C address")
elif 224 <= a1 <= 239:
print("This is a class D address")
elif 240 <= a1 <= 255:
print("This is a class E address")
# Determine if this is a public or private address
def is_private_ip(a1, a2, a3, a4):
if 10 <= a1 <= 10 and
0 <= a2 <= 255 and
0 <= a3 <= 255 and
0 <= a4 <= 255:
print("This is a Private address")
elif 127 <= a1 <= 127 and
0 <= a2 <= 255 and
0 <= a3 <= 255 and
0 <= a4 <= 255:
print("This is a private address")
elif 172 <= a1 <= 172 and
16 <= a2 <= 31 and
0 <= a3 <= 255 and
0 <= a4 <= 255:
print("This is a private address")
elif 192 <= a1 <= 192 and
88 <= a2 <= 88 and
99 <= a3 <= 99 and
0 <= a4 <= 255:
print("This is a private address")
elif 192 <= a1 <= 192 and
168 <= a2 <= 168 and
0 <= a3 <= 255 and
0 <= a4 <= 255:
print("This is a private address")
else:
print("This is a public address")
# Have user input 4 components of an IP address separated by commas
def main():
a1,a2,a3,a4 = eval(input("Enter 4 components of an IP address separated by commas: "))
is_valid_ip(a1, a2, a3, a4)
determine_ip_class(a1)
is_private_ip(a1, a2, a3, a4)
main()
Explanation / Answer
# Determine if this is a valid IP address
def is_valid_ip(a1, a2, a3, a4):
if 1 <= a1 <= 255 and
0 <= a2 <= 255 and
0 <= a3 <= 255 and
0 <= a4 <= 255:
return True
else:
return False
# Determine the class of the IP address
def determine_ip_class(a1):
if 1 <= a1 <= 127:
print("This is a class A address")
elif 128 <= a1 <= 191:
print("This is a class B address")
elif 192 <= a1 <= 223:
print("This is a class C address")
elif 224 <= a1 <= 239:
print("This is a class D address")
elif 240 <= a1 <= 255:
print("This is a class E address")
# Determine if this is a public or private address
def is_private_ip(a1, a2, a3, a4):
if 10 <= a1 <= 10 and
0 <= a2 <= 255 and
0 <= a3 <= 255 and
0 <= a4 <= 255:
print("This is a Private address")
elif 127 <= a1 <= 127 and
0 <= a2 <= 255 and
0 <= a3 <= 255 and
0 <= a4 <= 255:
print("This is a private address")
elif 172 <= a1 <= 172 and
16 <= a2 <= 31 and
0 <= a3 <= 255 and
0 <= a4 <= 255:
print("This is a private address")
elif 192 <= a1 <= 192 and
88 <= a2 <= 88 and
99 <= a3 <= 99 and
0 <= a4 <= 255:
print("This is a private address")
elif 192 <= a1 <= 192 and
168 <= a2 <= 168 and
0 <= a3 <= 255 and
0 <= a4 <= 255:
print("This is a private address")
else:
print("This is a public address")
# Have user input 4 components of an IP address separated by commas
def main():
a1,a2,a3,a4 = eval(input("Enter 4 components of an IP address separated by commas: "))
if is_valid_ip(a1, a2, a3, a4):
determine_ip_class(a1)
is_private_ip(a1, a2, a3, a4)
main()
Sample output:
Copy pastable link: https://paste.ee/p/3qWRa
Basically what this now does is, it checks whether a ip is valid, if it is not valid it exit else it goes on to print its class and private/public.
Please note I have removed print statement indicating valid/invalid address.
Let me know if you want them as well. (also note sys.exit should be sued when its really required.)
Please do give a thumbs up if I have solved your problem.
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.