Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

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.