项目商场储物柜
做一个类似商场储物柜的小站点, 商场超市都会有给顾客放东西的储物柜。点击就能获取一个随机的16位数字字母组成的条形码,不能和现在已经储物的柜子的条形码数据相同
。已知:
- 超市一共有10个空柜子
; - 条形码仅使用一次有效
; - 条形码有效期内同一个人不能再次打开一个新的储物柜;
要求:
1.定义相关的Class并定义方法解决问题;提示: 可以有一个储物柜的类, 一个人类
。
2.储物柜的类可以有以下功能:
2.1 获取一个空的柜子(生成随机条码, 记录用户, 该用户归还柜子前不能再次获取一个空柜子)
2.2 使用随机条码归还柜子。
编写完成后,相关代码如下:
import random
柜子
class Box:
def init(self):
self.box_num = 10
self.user_dict = {}
def get_verification_code(self):
s = "1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKZXCVBNML"
code = ""
for x in range(16):
code = code + random.choice(s)
print(code)
return code
# 获取柜子
def get_box(self, p):
if self.box_num > 0:
user = self.user_dict.get(p)
if user:
print("尊敬的用户,%s您已经取过了,请先还柜子~" % p.name)
else:
code = self.get_verification_code()
self.user_dict[p] = code
p.my_code(code)
self.box_num -= 1
# 还回柜子
def put_box(self, p):
code = p.code
if self.box_num < 10:
if code:
if code in self.user_dict.values():
print("该柜门已打开,请取回您的东西")
p.code = ""
self.box_num += 1
else:
print("取件码错误")
else:
print("无取件码")
class Person:
def init(self, name):
self.name = name
self.code = ''
def my_code(self, v):
self.code = v
if name == "main":
p1 = Person("a")
p2 = Person('B')
p3 = Person('c')
b = Box()
b.get_box(p1)
b.get_box(p2)
b.get_box(p1)
b.put_box(p1)
b.put_box(p3)
b.put_box(p2)