Python駐車管理システム
19941 ワード
要件:
駐車管理システムの設計:
# 1. 基本バージョン:
#プロパティ:
#駐車場の最大駐車数;max_car;
#現在の駐車数;cur_car;
#現在の駐車リスト;car_list = []
#メソッド:
#駐車:park()
# 1). 最大駐車数に達していない場合は、駐車を許可します.
2). 最大駐車数に達していない場合は、駐車を許可します.
#出駐車場:exit()
1). 車が入っているかどうかを判断し、入っていればcarを削除するリストに関連する情報;
2). 車が入っていない場合は、管理者に連絡します.
# 2. バージョンのアップグレード
1). 各車には属性があり、ナンバープレート、車主、連絡先、残高、駐車場に入る時間、駐車場を出る時間が含まれています.
2). 車主はカードで計時料金を徴収し、駐車料金は5元/時間である.
コード:
これは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)は問題を解決した
駐車管理システムの設計:
# 1. 基本バージョン:
#プロパティ:
#駐車場の最大駐車数;max_car;
#現在の駐車数;cur_car;
#現在の駐車リスト;car_list = []
#メソッド:
#駐車:park()
# 1). 最大駐車数に達していない場合は、駐車を許可します.
2). 最大駐車数に達していない場合は、駐車を許可します.
#出駐車場:exit()
1). 車が入っているかどうかを判断し、入っていればcarを削除するリストに関連する情報;
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)は問題を解決した