Question: class DriversLicense: def _ _ init _ _ ( self , first _ name, last _ name, age, voter _ status, state, license _ number

class DriversLicense:
def __init__(self, first_name, last_name, age, voter_status, state, license_number):
self.first_name = first_name
self.last_name = last_name
self.age = age
self.voter_status = voter_status
self.state = state
self.license_number = license_number
def __lt__(self, other):
return self.license_number < other.license_number
def __gt__(self, other):
return self.license_number > other.license_number
def __le__(self, other):
return self.license_number <= other.license_number
def __ge__(self, other):
return self.license_number >= other.license_number
def __eq__(self, other):
return self.license_number == other.license_number
def __ne__(self, other):
return self.license_number != other.license_number
def __str__(self):
return f"{self.license_number}: {self.last_name},{self.first_name}({self.age}){self.voter_status} in {self.state}"
def __repr__(self):
return f"DriversLicense('{self.first_name}','{self.last_name}',{self.age},'{self.voter_status}','{self.state}',{self.license_number})"
class DMV:
def __init__(self, file_name):
self.drivers = self.read_drivers(file_name)
def read_drivers(self, file_name):
drivers =[]
try:
with open(file_name, 'r') as file:
for line in file:
data = line.strip().split(',')
# Assuming the file format is:
# first_name,last_name,age,voter_status,state,license_number
if len(data)==6:
first_name, last_name, age, voter_status, state, license_number = data
try:
drivers.append(DriversLicense(
first_name,
last_name,
int(age), # Ensure age is an integer
voter_status,
state,
int(license_number) # Ensure license_number is an integer
))
except ValueError:
print(f"Skipping invalid record (invalid age or license number): {line.strip()}")
else:
print(f"Skipping invalid record (incorrect number of fields): {line.strip()}")
except FileNotFoundError:
print(f"File {file_name} not found.")
return drivers
def print_menu(self):
print("Select an option:")
print("1) Print all Drivers Info, sorted by drivers license number")
print("2) Print all unregistered voters")
print("3) Print all drivers within age range")
print("4) Print all out of state drivers (outside KS)")
print("5) Quit")
def print_all_drivers(self):
sorted_drivers = sorted(self.drivers)
for driver in sorted_drivers:
print(driver)
def print_unregistered_voters(self):
for driver in self.drivers:
if driver.voter_status.lower()!= "registered":
print(driver)
def print_drivers_in_age_range(self):
age_range = input("Enter age range (low-high): ").strip()
try:
low, high = map(int, age_range.split('-'))
for driver in self.drivers:
if low <= driver.age <= high:
print(driver)
except ValueError:
print("Invalid age range format. Please use low-high.")
def print_out_of_state_drivers(self):
for driver in self.drivers:
if driver.state.upper()!="KS":
print(driver)
def run(self):
while True:
self.print_menu()
choice = input("Enter your choice: ").strip()
if choice =="1":
self.print_all_drivers()
elif choice =="2":
self.print_unregistered_voters()
elif choice =="3":
self.print_drivers_in_age_range()
elif choice =="4":
self.print_out_of_state_drivers()
elif choice =="5":
print("Goodbye!")
break
else:
print("Invalid choice. Please try again.")
# Main function
def main():
file_name = input("Enter the name of the file containing driver records: ").strip()
myDMV = DMV(file_name)
myDMV.run()
if __name__=="__main__":
main()
What is the best way to fix this code

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Programming Questions!