某超市门口的自动寄存柜有n 个寄存箱,并且有一个投币控制器,顾客想要寄存小件物品时,只要在投币控制器投入1 个1 元的硬币,如果此时有空闲的箱子,寄存柜就会自动打开一个空的箱子,并且打印输出一张小小的密码纸条;如果没有空闲的箱子,则提示“本柜已满”。当顾客离开超市时,用密码纸条上指定的数字密码依次输入到开箱控制器,则顾客所存包的箱子门就自动打开,顾客取走物品后,关上门。 输入数据时,可先输入寄存箱总数n,再由用户选择是“投硬币”还是“输密码”。 如果选择“投硬币”,则只有硬币值是1 才开箱。如果有空闲的箱子,则输出箱子编号及密码(4 位数字);如果无空闲的箱子,则提示:“本柜已满”。 如果选择“输密码”,若输入的密码与某一箱子密码相符,则显示打开的箱子编号,否则输出提示:“密码错误”。 请编写开箱控制程序实现上述过程。 要求: (1) 程序要添加注释,程序的书写要采用缩进格式。程序要具有一定的健壮性,即当输入数据非法时,程序也能适当地做出反应。 (2) 程序要做到界面友好,在程序运行时用户可以根据相应的提示信息进行操作
时间: 2024-02-09 20:12:09 浏览: 37
好的,这是一个很有趣的问题!下面是我给出的 Python 代码实现,其中使用了字典数据结构来存储密码和箱子状态信息:
```python
# 寄存箱总数
n = int(input("请输入寄存箱总数:"))
# 用字典存储密码和箱子状态信息
boxes = {}
for i in range(1, n+1):
boxes[i] = {"password": str(i).zfill(4), "status": "available"}
# 投币开箱
def open_box_by_coin():
for box_num in boxes:
if boxes[box_num]["status"] == "available":
boxes[box_num]["status"] = "occupied"
print(f"开箱成功,箱子编号为{box_num},密码为{boxes[box_num]['password']}。")
return
print("本柜已满。")
# 输密码开箱
def open_box_by_password():
password = input("请输入4位数字密码:")
for box_num in boxes:
if boxes[box_num]["password"] == password:
if boxes[box_num]["status"] == "occupied":
print(f"开箱成功,箱子编号为{box_num}。")
else:
print("箱子已经被取走,请联系管理员。")
return
print("密码错误。")
# 选择操作
while True:
choice = input("请选择操作:1.投硬币开箱 2.输密码开箱 3.退出程序\n")
if choice == "1":
coin = int(input("请投入1元硬币:"))
if coin == 1:
open_box_by_coin()
else:
print("硬币面值不正确。")
elif choice == "2":
open_box_by_password()
elif choice == "3":
break
else:
print("操作选择不正确,请重新输入。")
```
希望这个代码能够满足您的需求,如果您有其他的问题或者需要进一步的帮助,请随时告诉我。