Python基础练习三超市存包柜模拟(优化)

简介: 题目描述 模拟超市存包柜的存放物品和取出物品操作,存放物品时选择空储物格,然后分配密码即为存放完成;取出物品时,输入对应的密码,打开对应的箱门即为取出物品 题目分析 1.增加私有变量,练习私有变量的使用2.

题目描述

模拟超市存包柜的存放物品和取出物品操作,存放物品时选择空储物格,然后分配密码即为存放完成;取出物品时,输入对应的密码,打开对应的箱门即为取出物品

题目分析

1.增加私有变量,练习私有变量的使用
2.多处需要进行数据类型转换,如int(),str()等
3.字符串的拼接和截取,截取使用的是切片的方式
4.密码采用了随机密码+位置码的方式,这样既能直接根据密码定位箱子位置,同时避免了随机生成的重复密码问题

代码

本次主要优化了check_cell()方法、save_goods()方法、get_goods_out()方法,其中get_goods_out()方法改动最大,取消了for循环,提高了查找性能。

#!/usr/bin/python3
#-*- coding:UTF-8 -*-

import random

'''
模拟超市存包柜程序,设置100个箱子,存满即止
每次存放物品之前从第一个箱子检测是否为空,遇到第一个为空的即可存入物品
'''
class Locker(object):
    def __init__(self):
        self._cell_num = 100
        self._use = 0
        self._surplus = self._cell_num
        self.cell = [0]*100
    
    def show_cell_detail(self):
        print(f"\n####################################\n总存包格数:总{self._cell_num}格,已用{self._use}格,剩余{self._surplus}格")
    
    def get_surplus(self):
        return self._surplus
        

    def check_cell(self):
        for i in range(0,100):
            position = "%02d"%(i)  #将箱子位置统一格式化成2位数,不足的补0
            if self.cell[i] == 0:
                return position
        return -1

#存放物品方法,先使用检查方法检查是否有空箱子,有空箱子即开门存物
    def save_goods(self):
        self.passwd = random.randint(10000,99999)
        self.cell_save = self.check_cell()
        self.passwd = str(self.passwd) + self.cell_save #将箱子位置加入密码中,密码最后两位数代表箱子位置,同时能够避免重复密码的问题
        self.cell_save = int(self.cell_save)
        self.cell[self.cell_save] = self.passwd
        print(self.cell[self.cell_save])
        self._use += 1
        self._surplus = self._cell_num - self._use
        print(f"{self.cell_save+1}号箱门已打开,您的密码是{self.cell[self.cell_save]}")

#取出物品方法,输入密码,取出物品    
    def get_goods_out(self,password):
        password = str(password)
        i = int(password[5:7])          #直接取密码最后两位定位箱子位置,避免循环查找消耗时间
        if self.cell[i] == password:
            print(password)
            self.cell[i] = 0
            self._surplus += 1
            self._use = self._cell_num - self._surplus
            return i
        return -1

lock = Locker()
#lock.check_cell()
while True:
    lock.show_cell_detail()
    surplus = lock.get_surplus()
    operation = input("1-存放\n2-取出\n0-退出\n请输入对应操作:")
    if operation == "1":
        if surplus != 0:
            lock.save_goods()
        else:
            print("箱已存满,谢谢使用")
            break
    elif operation == "2":
        while True:
            password = input("请输入取件密码:")
            password = int(password)
            out_result = lock.get_goods_out(password)
            if out_result != -1:
                print(f"{out_result+1}号箱门已打开,密码已失效,请取出物品,关好箱门")
                break
            else:
                print("密码错误,请核对后再输入!")
    elif operation == "0":
        print("欢迎再次光临!")
        break
    else:
        print("请输入正确的操作!")
        continue

目录
相关文章
|
23天前
|
存储 缓存 Java
Python高性能编程:五种核心优化技术的原理与Python代码
Python在高性能应用场景中常因执行速度不及C、C++等编译型语言而受质疑,但通过合理利用标准库的优化特性,如`__slots__`机制、列表推导式、`@lru_cache`装饰器和生成器等,可以显著提升代码效率。本文详细介绍了这些实用的性能优化技术,帮助开发者在不牺牲代码质量的前提下提高程序性能。实验数据表明,这些优化方法能在内存使用和计算效率方面带来显著改进,适用于大规模数据处理、递归计算等场景。
58 5
Python高性能编程:五种核心优化技术的原理与Python代码
|
28天前
|
测试技术 Python
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
104 31
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
|
1月前
|
人工智能 Python
【02】做一个精美的打飞机小游戏,python开发小游戏-鹰击长空—优雅草央千澈-持续更新-分享源代码和游戏包供游玩-记录完整开发过程-用做好的素材来完善鹰击长空1.0.1版本
【02】做一个精美的打飞机小游戏,python开发小游戏-鹰击长空—优雅草央千澈-持续更新-分享源代码和游戏包供游玩-记录完整开发过程-用做好的素材来完善鹰击长空1.0.1版本
55 7
|
1月前
|
存储 人工智能 运维
【01】做一个精美的打飞机小游戏,浅尝阿里云通义灵码python小游戏开发AI编程-之飞机大战小游戏上手实践-优雅草央千澈-用ai开发小游戏尝试-分享源代码和游戏包
【01】做一个精美的打飞机小游戏,浅尝阿里云通义灵码python小游戏开发AI编程-之飞机大战小游戏上手实践-优雅草央千澈-用ai开发小游戏尝试-分享源代码和游戏包
199 48
【01】做一个精美的打飞机小游戏,浅尝阿里云通义灵码python小游戏开发AI编程-之飞机大战小游戏上手实践-优雅草央千澈-用ai开发小游戏尝试-分享源代码和游戏包
|
1月前
|
程序员 Linux Python
python中模板和包的使用
本文介绍了 Python 模块和包的基本概念及使用方法。模块是 Python 程序结构的核心,每个以 `.py` 结尾的源文件都是一个模块,包含可重用的代码。文章详细讲解了模块的导入方式(如 `import` 和 `from...import`),模块的搜索顺序,以及如何创建和发布自己的模块。此外,还介绍了包的概念,包是包含多个模块的特殊目录,并通过 `__init__.py` 文件定义对外提供的模块列表。最后,文章简述了如何使用 `pip` 工具管理第三方模块的安装与卸载。作者:大石头的笔记;来源:稀土掘金。
|
1月前
|
存储 数据挖掘 数据处理
Python Pandas入门:行与列快速上手与优化技巧
Pandas是Python中强大的数据分析库,广泛应用于数据科学和数据分析领域。本文为初学者介绍Pandas的基本操作,包括安装、创建DataFrame、行与列的操作及优化技巧。通过实例讲解如何选择、添加、删除行与列,并提供链式操作、向量化处理、索引优化等高效使用Pandas的建议,帮助用户在实际工作中更便捷地处理数据。
47 2
|
2月前
|
Python 容器
[oeasy]python048_用变量赋值_连等赋值_解包赋值_unpack_assignment _
本文介绍了Python中变量赋值的不同方式,包括使用字面量和另一个变量进行赋值。通过`id()`函数展示了变量在内存中的唯一地址,并探讨了变量、模块、函数及类类型的地址特性。文章还讲解了连等赋值和解包赋值的概念,以及如何查看已声明的变量。最后总结了所有对象(如变量、模块、函数、类)都有其类型且在内存中有唯一的引用地址,构成了Python系统的基石。
36 5
|
2月前
|
缓存 大数据 C语言
python优化
python优化
52 5
|
3月前
|
数据采集 存储 算法
Python 中的数据结构和算法优化策略
Python中的数据结构和算法如何进行优化?
|
3月前
|
机器学习/深度学习 自然语言处理 语音技术
Python在深度学习领域的应用,重点讲解了神经网络的基础概念、基本结构、训练过程及优化技巧
本文介绍了Python在深度学习领域的应用,重点讲解了神经网络的基础概念、基本结构、训练过程及优化技巧,并通过TensorFlow和PyTorch等库展示了实现神经网络的具体示例,涵盖图像识别、语音识别等多个应用场景。
112 8

热门文章

最新文章

推荐镜像

更多