代码求助
class Car_General:def __init__(self,carid,brand,model,platenum,dayrent,bonus=0,insurance=0,loss=0,adiscount=1):
self.brand=brand
self.model=model
self.platenum=platenum
self.dayrent=dayrent
self.carid=carid
self.bonus=bonus
self.insurance=insurance
self.loss=loss
self.adiscount=adiscount
def get_brand(self):
return self.brand
def get_model(self):
return self.model
def get_platenum(self):
return self.platenum
def get_dayrent(self):
return self.dayrent
def get_carid(self):
return self.carid
def calc_rent(self,day,adiscount=1):
self.day=day
self.adiscount=adiscount
self.rent=self.day*(self.dayrent-self.bonus+self.insurance+self.loss)*self.adiscount
class EconomyCar(Car_General):
def __init__(self,bonus):
self.bonus=bonus
class LuxuryCar(Car_General):
def __init__(self,insurance):
self.insurance=insurance
class SportsCar(Car_General):
def __init__(self,loss):
self.loss=loss
class SUV(Car_General):
def __init__(self,adiscount):
self.adiscount=adiscount
class CarOperation():
cars={}
stocks={'EconomyCar':[],'LuxuryCar':[],'SportsCar':[],'SUV':[]}
carid1=10000
carid2=20000
carid3=30000
carid4=40000
def operate(self):
print('欢迎使用鱼C汽车租赁程序\n')
while True:
op=int(input('1.录入汽车;2.租车服务;3.还车服务;4.退出程序:\n'))
if op == 1:
self.register()
if op == 2:
self.rent_car()
if op == 3:
self.return_car()
if op == 4:
break
def register(self):
sort_=int(input('1.经济型车;2.豪华车;3.跑车;4.SUV:'))
num=int(input('请输入需要录入的数量:'))
for i in range(num):
print(f'请录入第{i+1}辆车\n')
brand=input('品牌:')
model=input('型号:')
platenum=input('车牌:')
dayrent=int(input('租金:'))
if sort_ ==1:
bonus=int(input('补贴:'))
self.carid=self.carid1
carid1+=1
if sort_ ==2:
insurance=int(input('保险:'))
self.carid=self.carid2
carid2+=1
if sort_ ==3:
loss=int(input('损耗:'))
self.carid=self.carid3
carid3+=1
if sort_ ==4:
self.carid=self.carid4
carid4+=1
c=Car_General(carid,brand,model,platenum,dayrent,bonus=0,insurance=0,loss=0,adiscount=1)
cars=c
if sort_ ==1:
stocks['EconomyCar'].append(c)
if sort_ ==2:
stocks['LuxuryCar'].append(c)
if sort_ ==3:
stocks['SportsCar'].append(c)
if sort_ ==4:
stocks['SUV'].append(c)
def rent_car(self):
print(f'1.经济车型(享有补贴),共有{len(stocks["EconomyCar"])}辆。\n')
if stocks['EconomyCar']:
for each in stocks['EconomyCar']:
print(f'车辆编号:{each.carid},品牌:{each.brand},型号:{each.model},日租金:{each.dayrent}-{each.bonus}(补贴)元\n')
print(f'2.豪华车型(需额外购买保险),共有{len(stocks["LuxuryCar"])}辆。\n')
if stocks['LuxuryCar']:
for each in stocks['LuxuryCar']:
print(f'车辆编号:{each.carid},品牌:{each.brand},型号:{each.model},日租金:{each.dayrent}+{each.insurance}(保险)元\n')
print(f'3.跑车(需增加损耗费用),共有{len(stocks["SportsCar"])}辆。\n')
if stocks['SportsCar']:
for each in stocks['SportsCar']:
print(f'车辆编号:{each.carid},品牌:{each.brand},型号:{each.model},日租金:{each.dayrent}+{each.loss}(损耗)元\n')
print(f'3.跑车(需增加损耗费用),共有{len(stocks["SportsCar"])}辆。\n')
if stocks['SportsCar']:
for each in stocks['SportsCar']:
print(f'车辆编号:{each.carid},品牌:{each.brand},型号:{each.model},日租金:{each.dayrent}+{each.loss}(损耗)元\n')
print(f'4.SUV(租赁超过7天,享有额外折上7折优惠),共有{len(stocks["SUV"])}辆。\n')
if stocks['SUV']:
for each in stocks['SUV']:
print(f'车辆编号:{each.carid},品牌:{each.brand},型号:{each.model},日租金:{each.dayrent}元\n')
idins=int(input('请输入需要租赁的车辆编号:'))
day=int(input('请输入需要租赁的天数:'))
total=cars.calc_rent(day)
if idins.starswith('1'):
stocks['EconomyCar'].remove(cars)
if idins.startswith('2'):
stocks['LuxuryCar'].remove(cars)
if idins.startswith('3'):
stocks['SportsCar'].remove(cars)
if idins.startswith('4'):
if day>7:
total=total*0.7
stocks['SUV'].remove(cars)
else:
stocks['SUV'].remove(cars)
print(f'租赁{day}天,总共需要花费:{total}元')
print('恭喜,租赁成功~')
def return_car(self):
idins=int(input('请输入车辆编号:'))
if idins.starswith('1'):
stocks['EconomyCar'].append(cars)
if idins.startswith('2'):
stocks['LuxuryCar'].append(cars)
if idins.startswith('3'):
stocks['SportsCar'].append(cars)
if idins.startswith('4'):
stocks['SUV'].append(cars)
以上代码其中的这一句,如何实现正确赋值呢?
self.carid=self.carid1
carid1+=1 你在代码中想要正确更新每种车的车ID,建议在类实例中使用类属性来保存车ID,并在实例化不同类型的车时增加该车ID。以下是你的代码的一些修正:
1. 在 CarOperation 类中定义每种车的初始车ID。
2. 修正代码中的一些错误。
以下是修改后的代码:
class Car_General:
def __init__(self, carid, brand, model, platenum, dayrent, bonus=0, insurance=0, loss=0, adiscount=1):
self.brand = brand
self.model = model
self.platenum = platenum
self.dayrent = dayrent
self.carid = carid
self.bonus = bonus
self.insurance = insurance
self.loss = loss
self.adiscount = adiscount
def get_brand(self):
return self.brand
def get_model(self):
return self.model
def get_platenum(self):
return self.platenum
def get_dayrent(self):
return self.dayrent
def get_carid(self):
return self.carid
def calc_rent(self, day, adiscount=1):
self.day = day
self.adiscount = adiscount
return self.day * (self.dayrent - self.bonus + self.insurance + self.loss) * self.adiscount
class EconomyCar(Car_General):
pass
class LuxuryCar(Car_General):
pass
class SportsCar(Car_General):
pass
class SUV(Car_General):
pass
class CarOperation:
cars = {}
stocks = {'EconomyCar': [], 'LuxuryCar': [], 'SportsCar': [], 'SUV': []}
carid1 = 10000
carid2 = 20000
carid3 = 30000
carid4 = 40000
def operate(self):
print('欢迎使用鱼C汽车租赁程序\n')
while True:
op = int(input('1.录入汽车;2.租车服务;3.还车服务;4.退出程序:\n'))
if op == 1:
self.register()
if op == 2:
self.rent_car()
if op == 3:
self.return_car()
if op == 4:
break
def register(self):
sort_ = int(input('1.经济型车;2.豪华车;3.跑车;4.SUV:'))
num = int(input('请输入需要录入的数量:'))
for i in range(num):
print(f'请录入第{i+1}辆车\n')
brand = input('品牌:')
model = input('型号:')
platenum = input('车牌:')
dayrent = int(input('租金:'))
if sort_ == 1:
bonus = int(input('补贴:'))
carid = self.carid1
self.carid1 += 1
c = EconomyCar(carid, brand, model, platenum, dayrent, bonus=bonus)
elif sort_ == 2:
insurance = int(input('保险:'))
carid = self.carid2
self.carid2 += 1
c = LuxuryCar(carid, brand, model, platenum, dayrent, insurance=insurance)
elif sort_ == 3:
loss = int(input('损耗:'))
carid = self.carid3
self.carid3 += 1
c = SportsCar(carid, brand, model, platenum, dayrent, loss=loss)
elif sort_ == 4:
carid = self.carid4
self.carid4 += 1
c = SUV(carid, brand, model, platenum, dayrent, adiscount=1)
self.cars = c
self.stocks.append(c)
def rent_car(self):
print(f'1.经济车型(享有补贴),共有{len(self.stocks["EconomyCar"])}辆。\n')
for each in self.stocks["EconomyCar"]:
print(f'车辆编号:{each.get_carid()},品牌:{each.get_brand()},型号:{each.get_model()},日租金:{each.get_dayrent()}-{each.bonus}(补贴)元\n')
print(f'2.豪华车型(需额外购买保险),共有{len(self.stocks["LuxuryCar"])}辆。\n')
for each in self.stocks["LuxuryCar"]:
print(f'车辆编号:{each.get_carid()},品牌:{each.get_brand()},型号:{each.get_model()},日租金:{each.get_dayrent()}+{each.insurance}(保险)元\n')
print(f'3.跑车(需增加损耗费用),共有{len(self.stocks["SportsCar"])}辆。\n')
for each in self.stocks["SportsCar"]:
print(f'车辆编号:{each.get_carid()},品牌:{each.get_brand()},型号:{each.get_model()},日租金:{each.get_dayrent()}+{each.loss}(损耗)元\n')
print(f'4.SUV(租赁超过7天,享有额外折上7折优惠),共有{len(self.stocks["SUV"])}辆。\n')
for each in self.stocks["SUV"]:
print(f'车辆编号:{each.get_carid()},品牌:{each.get_brand()},型号:{each.get_model()},日租金:{each.get_dayrent()}元\n')
idins = int(input('请输入需要租赁的车辆编号:'))
day = int(input('请输入需要租赁的天数:'))
total = self.cars.calc_rent(day)
if str(idins).startswith('1'):
self.stocks["EconomyCar"].remove(self.cars)
elif str(idins).startswith('2'):
self.stocks["LuxuryCar"].remove(self.cars)
elif str(idins).startswith('3'):
self.stocks["SportsCar"].remove(self.cars)
elif str(idins).startswith('4'):
if day > 7:
total *= 0.7
self.stocks["SUV"].remove(self.cars)
print(f'租赁{day}天,总共需要花费:{total}元')
print('恭喜,租赁成功~')
def return_car(self):
idins = int(input('请输入车辆编号:'))
if str(idins).startswith('1'):
self.stocks["EconomyCar"].append(self.cars)
elif str(idins).startswith('2'):
self.stocks["LuxuryCar"].append(self.cars)
elif str(idins).startswith('3'):
self.stocks["SportsCar"].append(self.cars)
elif str(idins).startswith('4'):
self.stocks["SUV"].append(self.cars)
# 运行操作界面
operation = CarOperation()
operation.operate()
请确保上述代码不会产生任何缩进或语法错误。另外,注意在 CarOperation 类中正确使用实例属性和类属性以避免引用错误。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2025-2-20 15:15
你在代码中想要正确更新每种车的车ID,建议在类实例中使用类属性来保存车ID,并在实例化不同类型的车时增加 ...
方法中的参数支持默认值吗? andreahhhhhh 发表于 2025-02-20 17:23
FishC 发表于 2025-2-20 15:15
你在代码中想要正确更 ...
是的,Python 方法中的参数**支持默认值**。
当方法定义中为某个参数提供了默认值时,如果调用方法时没有显式传递该参数的值,那么方法会使用默认值。使用默认值的参数必须放在所有**没有默认值的参数的后面**!
以下是一个示例:
class Example:
def greet(self, name="鱼油", message="你好呀!"):
print(f"{name},{message}")
# 创建对象并调用方法
example = Example()
# 调用时不传递参数,使用默认值
example.greet()# 输出:鱼油,你好呀!
# 只修改第一个参数
example.greet(name="小甲鱼")# 输出:小甲鱼,你好呀!
# 修改所有参数
example.greet(name="小甲鱼", message="欢迎学习编程!")# 输出:小甲鱼,欢迎学习编程!
### 注意事项:
- 默认值参数的顺序非常重要。需要将**无默认值的参数**放在前面,有默认值的参数放在后面。
例如,以下代码会报错:
def example_func(message="你好", name):# 错误,默认值参数须放在后面
pass
正确写法为:
def example_func(name, message="你好"):# 正确
pass
如果你有更多问题,请随时提问!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2025-2-20 17:23
是的,Python 方法中的参数**支持默认值**。
当方法定义中为某个参数提供了默认值时,如果调用方法 ...
class Car_General:
def __init__(self,carid,brand,model,platenum,dayrent,bonus=0,insurance=0,loss=0,adiscount=1):
self.brand=brand
self.model=model
self.platenum=platenum
self.dayrent=dayrent
self.carid=carid
self.bonus=bonus
self.insurance=insurance
self.loss=loss
self.adiscount=adiscount
def get_brand(self):
return self.brand
def get_model(self):
return self.model
def get_platenum(self):
return self.platenum
def get_dayrent(self):
return self.dayrent
def get_carid(self):
return self.carid
def calc_rent(self,day,adiscount=1):
self.day=day
self.adiscount=adiscount
self.rent=self.day*(self.dayrent-self.bonus+self.insurance+self.loss)*self.adiscount
class EconomyCar(Car_General):
def __init__(self,bonus):
self.bonus=bonus
class LuxuryCar(Car_General):
def __init__(self,insurance):
self.insurance=insurance
class SportsCar(Car_General):
def __init__(self,loss):
self.loss=loss
class SUV(Car_General):
def __init__(self,adiscount):
self.adiscount=adiscount
class CarOperation():
cars={}
stocks={'EconomyCar':[],'LuxuryCar':[],'SportsCar':[],'SUV':[]}
carid1=10000
carid2=20000
carid3=30000
carid4=40000
def operate(self):
print('欢迎使用鱼C汽车租赁程序\n')
while True:
op=int(input('1.录入汽车;2.租车服务;3.还车服务;4.退出程序:\n'))
if op == 1:
self.register()
if op == 2:
self.rent_car()
if op == 3:
self.return_car()
if op == 4:
break
def register(self):
sort_=int(input('1.经济型车;2.豪华车;3.跑车;4.SUV:'))
num=int(input('请输入需要录入的数量:'))
for i in range(num):
print(f'请录入第{i+1}辆车\n')
brand=input('品牌:')
model=input('型号:')
platenum=input('车牌:')
dayrent=int(input('租金:'))
if sort_ ==1:
bonus=int(input('补贴:'))
carid=self.carid1
self.carid1+=1
c=Car_General(carid,brand,model,platenum,dayrent,bonus=0,insurance=0,loss=0,adiscount=1)
if sort_ ==2:
insurance=int(input('保险:'))
carid=self.carid2
self.carid2+=1
c=Car_General(carid,brand,model,platenum,dayrent,bonus=0,insurance=0,loss=0,adiscount=1)
if sort_ ==3:
loss=int(input('损耗:'))
carid=self.carid3
self.carid3+=1
c=Car_General(carid,brand,model,platenum,dayrent,bonus=0,insurance=0,loss=0,adiscount=1)
if sort_ ==4:
carid=self.carid4
self.carid4+=1
c=Car_General(carid,brand,model,platenum,dayrent,bonus=0,insurance=0,loss=0,adiscount=1)
self.cars=c
if sort_ ==1:
self.stocks['EconomyCar'].append(c)
if sort_ ==2:
self.stocks['LuxuryCar'].append(c)
if sort_ ==3:
self.stocks['SportsCar'].append(c)
if sort_ ==4:
self.stocks['SUV'].append(c)
def rent_car(self):
print(f'1.经济车型(享有补贴),共有{len(self.stocks["EconomyCar"])}辆。\n')
if self.stocks['EconomyCar']:
for each in self.stocks['EconomyCar']:
print(f'车辆编号:{each.carid},品牌:{each.brand},型号:{each.model},日租金:{each.dayrent}-{each.bonus}(补贴)元\n')
print(f'2.豪华车型(需额外购买保险),共有{len(self.stocks["LuxuryCar"])}辆。\n')
if self.stocks['LuxuryCar']:
for each in self.stocks['LuxuryCar']:
print(f'车辆编号:{each.carid},品牌:{each.brand},型号:{each.model},日租金:{each.dayrent}+{each.insurance}(保险)元\n')
print(f'3.跑车(需增加损耗费用),共有{len(self.stocks["SportsCar"])}辆。\n')
if self.stocks['SportsCar']:
for each in self.stocks['SportsCar']:
print(f'车辆编号:{each.carid},品牌:{each.brand},型号:{each.model},日租金:{each.dayrent}+{each.loss}(损耗)元\n')
print(f'4.SUV(租赁超过7天,享有额外折上7折优惠),共有{len(self.stocks["SUV"])}辆。\n')
if self.stocks['SUV']:
for each in self.stocks['SUV']:
print(f'车辆编号:{each.carid},品牌:{each.brand},型号:{each.model},日租金:{each.dayrent}元\n')
idins=int(input('请输入需要租赁的车辆编号:'))
day=int(input('请输入需要租赁的天数:'))
total=cars.calc_rent(day)
if idins.starswith('1'):
self.stocks['EconomyCar'].remove(cars)
if idins.startswith('2'):
self.stocks['LuxuryCar'].remove(cars)
if idins.startswith('3'):
self.stocks['SportsCar'].remove(cars)
if idins.startswith('4'):
if day>7:
total=total*0.7
self.stocks['SUV'].remove(cars)
else:
self.stocks['SUV'].remove(cars)
print(f'租赁{day}天,总共需要花费:{total}元')
print('恭喜,租赁成功~')
def return_car(self):
idins=int(input('请输入车辆编号:'))
if idins.starswith('1'):
self.stocks['EconomyCar'].append(cars)
if idins.startswith('2'):
self.stocks['LuxuryCar'].append(cars)
if idins.startswith('3'):
self.stocks['SportsCar'].append(cars)
if idins.startswith('4'):
self.stocks['SUV'].append(cars)
上段代码中c=Car_General(carid,brand,model,platenum,dayrent,bonus=0,insurance=0,loss=0,adiscount=1)这一句有问题吗? andreahhhhhh 发表于 2025-02-20 17:52
FishC 发表于 2025-2-20 17:23
是的,Python 方法中 ...
上段代码中这句:
c = Car_General(carid, brand, model, platenum, dayrent, bonus=0, insurance=0, loss=0, adiscount=1)
是有问题的。**原因**与问题如下:
### 1. **缺乏正确传递参数**
这行代码使用了 `Car_General` 类的构造函数,但传入的参数未能匹配实际情况。例如:
- 你在不同的条件下(如录入经济型车、豪华车等)为 `bonus`, `insurance`, `loss` 等传递了固定值 `0`,没有实际使用用户输入的具体值。
- 此外,你为每种车类型提供了专门的子类(如 `EconomyCar`, `LuxuryCar` 等),但却在此使用了 `Car_General` 类,而不是相应的子类。这不符合面向对象设计的原则。
### 2. **忽视不同子类的初始化逻辑**
你的 `EconomyCar`, `LuxuryCar`, `SportsCar` 和 `SUV` 类都重新定义了它们的 `__init__` 方法,但它们的实现不完整。例如,`EconomyCar` 的 `__init__` 方法只初始化了 `bonus` 属性,没有初始化其他通用属性(如 `brand`, `model`, 等)。导致实例化这些子类时,程序会报错。
---
### 修改建议
以下是对 `c = Car_General(...)` 这一句的修正,以及相关子类的问题的全面调整:
#### 修改问题中的语句
在 `register` 方法中,根据选择的车辆类型,应该实例化具体的子类,并正确传入所需的参数。
if sort_ == 1:# 经济型车
bonus = int(input('补贴:'))
carid = self.carid1
self.carid1 += 1
c = EconomyCar(carid, brand, model, platenum, dayrent, bonus=bonus)
elif sort_ == 2:# 豪华车
insurance = int(input('保险:'))
carid = self.carid2
self.carid2 += 1
c = LuxuryCar(carid, brand, model, platenum, dayrent, insurance=insurance)
elif sort_ == 3:# 跑车
loss = int(input('损耗:'))
carid = self.carid3
self.carid3 += 1
c = SportsCar(carid, brand, model, platenum, dayrent, loss=loss)
elif sort_ == 4:# SUV
carid = self.carid4
self.carid4 += 1
c = SUV(carid, brand, model, platenum, dayrent, adiscount=1)
---
#### 修复子类的 `__init__`
确保每个子类在初始化时能够正确继承父类的属性,同时增加其特有的属性。这里可以通过调用父类的 `__init__` 方法来简化逻辑,例如:
class EconomyCar(Car_General):
def __init__(self, carid, brand, model, platenum, dayrent, bonus=0):
super().__init__(carid, brand, model, platenum, dayrent, bonus=bonus)
class LuxuryCar(Car_General):
def __init__(self, carid, brand, model, platenum, dayrent, insurance=0):
super().__init__(carid, brand, model, platenum, dayrent, insurance=insurance)
class SportsCar(Car_General):
def __init__(self, carid, brand, model, platenum, dayrent, loss=0):
super().__init__(carid, brand, model, platenum, dayrent, loss=loss)
class SUV(Car_General):
def __init__(self, carid, brand, model, platenum, dayrent, adiscount=1):
super().__init__(carid, brand, model, platenum, dayrent, adiscount=adiscount)
---
### 最终正确的 `register` 方法
结合上述修正,完整的 `register` 方法如下:
def register(self):
sort_ = int(input('1.经济型车;2.豪华车;3.跑车;4.SUV:'))
num = int(input('请输入需要录入的数量:'))
for i in range(num):
print(f'请录入第{i+1}辆车\n')
brand = input('品牌:')
model = input('型号:')
platenum = input('车牌:')
dayrent = int(input('租金:'))
if sort_ == 1:# 经济型车
bonus = int(input('补贴:'))
carid = self.carid1
self.carid1 += 1
c = EconomyCar(carid, brand, model, platenum, dayrent, bonus=bonus)
elif sort_ == 2:# 豪华车
insurance = int(input('保险:'))
carid = self.carid2
self.carid2 += 1
c = LuxuryCar(carid, brand, model, platenum, dayrent, insurance=insurance)
elif sort_ == 3:# 跑车
loss = int(input('损耗:'))
carid = self.carid3
self.carid3 += 1
c = SportsCar(carid, brand, model, platenum, dayrent, loss=loss)
elif sort_ == 4:# SUV
carid = self.carid4
self.carid4 += 1
c = SUV(carid, brand, model, platenum, dayrent, adiscount=1)
# 记录到库存
self.cars = c
self.stocks.append(c)
---
### 总结
你的 `c = Car_General(...)` 是可以正常运行的,但并没有根据车辆类型动态地创建适当的子类实例。这违背了面向对象编程的基本思想。按照上述修改,通过实例化特定子类,并调用父类的构造函数,你可以优雅地实现程序逻辑。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2025-2-20 17:56
上段代码中这句:
c = Car_General(carid, brand, model, platenum, dayrent, bonus=0, insurance=0, loss=0, adiscount=1)
这一句中 bonus\insurance\loss等我想实现为设置默认值,当对象无相应参数传入时,使用默认值,该如何修改? andreahhhhhh 发表于 2025-02-20 18:03
FishC 发表于 2025-2-20 17:56
上段代码中这句:
...
要实现 `Car_General` 类中的参数 `bonus`, `insurance`, `loss`, `adiscount` 具有默认值,并且在对象无相应参数传入时使用默认值,你只需要在实例化对象时正确传递这些参数即可。
首先确保 `Car_General` 类的构造函数设置了默认值:
class Car_General:
def __init__(self, carid, brand, model, platenum, dayrent, bonus=0, insurance=0, loss=0, adiscount=1):
self.brand = brand
self.model = model
self.platenum = platenum
self.dayrent = dayrent
self.carid = carid
self.bonus = bonus
self.insurance = insurance
self.loss = loss
self.adiscount = adiscount
def get_brand(self):
return self.brand
def get_model(self):
return self.model
def get_platenum(self):
return self.platenum
def get_dayrent(self):
return self.dayrent
def get_carid(self):
return self.carid
def calc_rent(self, day, adiscount=1):
self.day = day
self.adiscount = adiscount
self.rent = self.day * (self.dayrent - self.bonus + self.insurance + self.loss) * self.adiscount
接下来,在 `register` 方法中,需要根据不同的车辆类型传递相应的参数。如果没有提供相应参数,则使用默认值:
def register(self):
sort_ = int(input('1.经济型车;2.豪华车;3.跑车;4.SUV:'))
num = int(input('请输入需要录入的数量:'))
for i in range(num):
print(f'请录入第{i+1}辆车\n')
brand = input('品牌:')
model = input('型号:')
platenum = input('车牌:')
dayrent = int(input('租金:'))
if sort_ == 1:# 经济型车
bonus = int(input('补贴:'))
carid = self.carid1
self.carid1 += 1
c = Car_General(carid, brand, model, platenum, dayrent, bonus=bonus)
elif sort_ == 2:# 豪华车
insurance = int(input('保险:'))
carid = self.carid2
self.carid2 += 1
c = Car_General(carid, brand, model, platenum, dayrent, insurance=insurance)
elif sort_ == 3:# 跑车
loss = int(input('损耗:'))
carid = self.carid3
self.carid3 += 1
c = Car_General(carid, brand, model, platenum, dayrent, loss=loss)
elif sort_ == 4:# SUV
carid = self.carid4
self.carid4 += 1
c = Car_General(carid, brand, model, platenum, dayrent, adiscount=1)
# 记录到库存
self.cars = c
self.stocks.append(c)
这样,如果在创建对象时没有传递相应的参数,则使用默认值。为了完整性,请确保 `stocks` 和 `cars` 使用合适的数据结构存储数据。例如,可以使用列表和字典:
class CarOperation:
cars = {}
stocks = []
carid1 = 10000
carid2 = 20000
carid3 = 30000
carid4 = 40000
def operate(self):
print('欢迎使用鱼C汽车租赁程序\n')
while True:
op = int(input('1.录入汽车;2.租车服务;3.还车服务;4.退出程序:\n'))
if op == 1:
self.register()
elif op == 2:
self.rent_car()
elif op == 3:
self.return_car()
elif op == 4:
break
def register(self):
sort_ = int(input('1.经济型车;2.豪华车;3.跑车;4.SUV:'))
num = int(input('请输入需要录入的数量:'))
for i in range(num):
print(f'请录入第{i+1}辆车\n')
brand = input('品牌:')
model = input('型号:')
platenum = input('车牌:')
dayrent = int(input('租金:'))
if sort_ == 1:# 经济型车
bonus = int(input('补贴:'))
carid = self.carid1
self.carid1 += 1
c = Car_General(carid, brand, model, platenum, dayrent, bonus=bonus)
elif sort_ == 2:# 豪华车
insurance = int(input('保险:'))
carid = self.carid2
self.carid2 += 1
c = Car_General(carid, brand, model, platenum, dayrent, insurance=insurance)
elif sort_ == 3:# 跑车
loss = int(input('损耗:'))
carid = self.carid3
self.carid3 += 1
c = Car_General(carid, brand, model, platenum, dayrent, loss=loss)
elif sort_ == 4:# SUV
carid = self.carid4
self.carid4 += 1
c = Car_General(carid, brand, model, platenum, dayrent, adiscount=1)
# 记录到库存
self.cars = c
self.stocks.append(c)
这样,当实例化 `Car_General` 时,如果不传递 `bonus`, `insurance`, `loss`, `adiscount` 等参数,会使用默认值。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页:
[1]