题解 | #自动售货系统#
自动售货系统
https://www.nowcoder.com/practice/cd82dc8a4727404ca5d32fcb487c50bf
class xx:
def __init__(self):
self.good = {
"A1": [2, 0],
"A2": [3, 0],
"A3": [4, 0],
"A4": [5, 0],
"A5": [8, 0],
"A6": [6, 0],
}
self.mon = {1: 0, 2: 0, 5: 0, 10: 0}
self.balance = 0
def pars(self, a):
if a[0] == "r":
self.r(a[1:])
elif a[0] == "p":
self.p(a[1:])
elif a[0] == "b":
self.b(a[1:])
elif a[0] == "c":
self.c()
elif a[0] == "q":
self.q(a[1:])
def r(self, a):
b, c = a.split()
b = b.split("-")
c = c.split("-")
for i in range(len(b)):
self.good["A" + str(i + 1)][1] = int(b[i])
self.mon[1] = int(c[0])
self.mon[2] = int(c[1])
self.mon[5] = int(c[2])
self.mon[10] = int(c[3])
print("S001:Initialization is successful")
def p(self, a):
if a not in [" 1", " 2", " 5", " 10"]:
print("E002:Denomination error")
elif a in [" 5", " 10"] and self.mon[1] + 2 * self.mon[2] < int(a[1:]):
print("E003:Change is not enough, pay fail")
elif (
self.good["A1"][1] == 0
and self.good["A2"][1] == 0
and self.good["A3"][1] == 0
and self.good["A4"][1] == 0
and self.good["A5"][1] == 0
and self.good["A6"][1] == 0
):
print("E005:All the goods sold out")
else:
self.balance += int(a[1:])
self.mon[int(a[1:])] += 1
print("S002:Pay success,balance={}".format(self.balance))
def b(self, a):
if a not in [" A1", " A2", " A3", " A4", " A5", " A6"]:
print("E006:Goods does not exist")
elif self.good[a[1:]][1] == 0:
print("E007:The goods sold out")
elif self.balance < self.good[a[1:]][0]:
print("E008:Lack of balance")
else:
self.good[a[1:]][1] -= 1
self.balance -= self.good[a[1:]][0]
print("S003:Buy success,balance={}".format(self.balance))
def c(self):
if self.balance == 0:
print("E009:Work failure")
else:
ls = [0, 0, 0, 0]
while self.balance > 0:
if self.balance >= 10 and self.mon[10] >= 1:
self.balance -= 10
self.mon[10] -= 1
ls[0] += 1
elif self.balance >= 5 and self.mon[5] >= 1:
self.balance -= 5
self.mon[5] -= 1
ls[1] += 1
elif self.balance >= 2 and self.mon[2] >= 1:
self.balance -= 2
self.mon[2] -= 1
ls[2] += 1
elif self.balance >= 1 and self.mon[1] >= 1:
self.balance -= 1
self.mon[1] -= 1
ls[3] += 1
else:
break
print("1 yuan coin number={}".format(ls[3]))
print("2 yuan coin number={}".format(ls[2]))
print("5 yuan coin number={}".format(ls[1]))
print("10 yuan coin number={}".format(ls[0]))
def q(self, a):
if a not in [" 0", " 1"]:
print("E010:Parameter error")
if a == " 0":
for i in sorted(self.good.items(), key=lambda x: x[1][1], reverse=True):
print("{} {} {}".format(i[0], i[1][0], i[1][1]))
if a == " 1":
print("1 yuan coin number={}".format(self.mon[1]))
print("2 yuan coin number={}".format(self.mon[2]))
print("5 yuan coin number={}".format(self.mon[5]))
print("10 yuan coin number={}".format(self.mon[10]))
while True:
try:
a = input().split(";")
yy = xx()
for i in a:
if i:
yy.pars(i)
except:
break
