一个Python停车管理系统

要求:

停车管理系统设计:

# 1. 基础版本:

# 属性:

#     停车场最多停车数; max_car;

#     当前停车数;cur_car;

#     当前停车列表; car_list = [] # 方法:

#     停车:park()

#             1). 如果没有达到最多停车数,则允许停车;

              2). 如果没有达到最多停车数,则允许停车; #     出停车场:exit()

              1). 判断该汽车是否进入,如果进入,则删除car_list里面相关的信息;

              2). 如果该汽车从未进入, 则通知联系管理员;

# 2. 升级版本 1). 每辆汽车都有其属性, 包含: 车牌号,车主, 联系方式, 余额, 进入停车场时间, 出停车场时间;

2). 车主实现刷卡计时收费, 停车收费5元/小时;

代码:

#!/usr/bin/env python # coding:utf-8 import time

max_car = 5 cur_car = 0 car_lst = []   class car():  def __init__(self, platenumber, owner, contantway, balance=20, time1=0, time2=0):  self.platenumber = platenumber
        self.owner = owner
        self.contantway = contantway
        self.balance = balance
        self.time1 = time1
        self.time2 = time2

    def park(self):  if len(car_lst) < max_car:  self.time1 = time.time()  car_lst.append(self)  print('停车成功.')  else:  print('车库已满.')   def exit(self):  a = len(car_lst) - 1 if len(car_lst) == max_car else len(car_lst)  for i in range(0, a):  if car_lst[i].platenumber == self.platenumber:  carex = car_lst[i]  car_lst.remove(car_lst[i])  carex.time2 = time.time()  tt = float((carex.time2 - carex.time1) / 3600)  print('停车时间%f小时,停车费用%f元.' % (tt, float(tt / 5)))  else:  if i == len(car_lst) - 1:  print('该汽车从未进入, 请联系管理员.')   while True:  cho = input(  '''  请选择功能:  1.停车  2.出车  3.退出系统  '''  )  if cho == '3':  break  elif cho == '1':  if len(car_lst) >= max_car:  print('车库已满.')  else:  pla = input('输入车牌号:')  own = input('输入车主名:')  cw = input('输入联系方式:')  c = car(pla, own, cw)  c.park()  elif cho == '2':  if len(car_lst) == 0:  print('车库为空, 请联系管理员.')  else:  pl = input('输入车牌号:')  carr = car(pl, 0, 0)  carr.exit()  else:  print('输入错误,请重新选择.')  time.sleep(2)  continue 

这是一个可以停5辆车的车库。受题目要求限制,代码写得较为混乱,例如车库为空或车库已满这类特殊情况下,为了避免多余输入需要在方法外进行判断,导致代码可读性下降。

比较有意思的是exit方法中一开始我写的是:for i in range(0 , len(car_lst)-1)

如果车库里只有1辆车的话就是range(0,0),这样的话I会为空。

而如果用for i in range(0 , len(car_lst)),在车库停满时会提示超出范围。max_car = 5 ,range(0,5) 输出为0到4,不知道为什么会超出范围。好在解决办法简单,加入判断赋值语句a = len(car_lst) 1 if len(car_lst) == max_car else  len(car_lst)解决了问题

    原文作者:停车场模拟问题
    原文地址: https://blog.csdn.net/AKATheIronHead/article/details/80432539
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞