我有一个错误处理模块,这里是一个错误处理车牌:
def is_plate(prompt=""):
format_plate = re.compile(r'[A-Za-z]{3}\d{3}$')
while True:
p = input(prompt).upper()
if format_plate.match(p):
return p
else:
print("Invalid license plate, try again. Your license plate needs to be in this format:(abc123)")
我导入了那个模块,并在我的程序中的一个方法中实现它。下面是我的程序的一个片段:
import error_handle as eh
class Car:
def __init__(self,name,car_type,reg_nr):
self.owner = name
self.car_type = car_type
self.reg_nr = reg_nr
def __str__(self):
return f'{self.owner},{self.car_type},{self.reg_nr}'
class Garage:
def __init__(self):
self.parking_log_list = []
self.account_list = []
def changing_info(self,license_plate):
for car in self.account_list:
if license_plate == car.reg_nr:
edit_choice = int(input("Choose what you like to change:\n1.License Plate\n2.Name\n3.Car Type\n"))
if edit_choice == "1":
car.reg_nr = eh.is_plate("State your new license plate: ")
if edit_choice == "2":
car.owner = input("State your Full name: ")
if edit_choice == "3":
car.type = eh.is_alpha("State your new car type: ")
garage = Garage()
license_plate = eh.is_plate("State your license plate: ")
garage.changing_info(license_plate)
当我运行这个程序时,这是下面的输出:
一个二个一个一个
它不会执行下一行代码
当我把条件语句改为:
if license_plate != car.reg_nr:
它继续执行下一行
我不明白为什么它和!=运算符一起工作,它不应该是==运算符吗?或者是我的错误处理模块上的函数有问题吗?
1条答案
按热度按时间gzszwxb41#
当你有
!=
操作符的时候,它就运行了,因为在你的for
循环中,你是通过self.account_list
循环的,尽管当它循环的时候,这个列表是空的,所以它把car
设置为None
,因此它不会执行,有==
操作符的代码,因为车牌不等于None
。