当前位置:首页 > 编程技术 > 正文内容

基于Python编程的简易自动收货机模拟系统

yc8881个月前 (03-28)编程技术38

基于Python编程的简易自动收货机模拟系统

在探索编程世界的奇妙旅程中,模拟真实世界的设备和系统是一种有趣且富有教育意义的方式。今天,我们将通过编写一个简单的Python程序,模拟一个自动收货机的工作流程,以帮助大家理解如何运用编程解决现实生活中的问题。

环境设定与需求分析

首先,我们定义一个自动收货机应具备以下功能:

  1. 存储多种商品及其对应的价格。

  2. 接收用户投币并计算余额。

  3. 用户选择商品后,检查余额是否足够支付。

  4. 若余额足够,则扣款并出货;否则提示用户充值。

  5. 提供找零功能。

Python代码实现

class VendingMachine:
    def __init__(self):
        self.products = {"Coke": 1.5, "Chips": 0.5, "Chocolate": 1.0}
        self.balance = 0.0

    def insert_coin(self, amount):
        self.balance += amount
        print(f"已投入{amount}元,当前余额:{self.balance}元")

    def select_product(self, product_name):
        if product_name in self.products:
            product_price = self.products[product_name]
            if self.balance >= product_price:
                self.balance -= product_price
                print(f"您已成功购买{product_name},扣除{product_price}元,剩余余额:{self.balance}元")
            else:
                print("余额不足,请继续投币")
        else:
            print("商品不存在,请重新选择")

    def get_change(self):
        change = self.balance
        if change > 0:
            self.balance = 0
            return change
        else:
            print("无需找零")

if __name__ == "__main__":
    vm = VendingMachine()
    vm.insert_coin(2.0)
    vm.select_product("Coke")
    change = vm.get_change()
    if change:
        print(f"找零:{change}元")

上述Python代码中,我们创建了一个VendingMachine类,初始化时设置商品价格字典和初始余额。定义了insert_coinselect_productget_change三个方法分别对应投币、选商品和找零的功能。

运行这段代码,你会看到模拟自动收货机工作的过程。当然,真实的自动售货机会更为复杂,涉及到硬件交互、库存管理等诸多环节,这里仅作为一个基础逻辑的演示。


本站发布的内容若侵犯到您的权益,请邮件联系站长删除,我们将及时处理!


从您进入本站开始,已表示您已同意接受本站【免责声明】中的一切条款!


本站大部分下载资源收集于网络,不保证其完整性以及安全性,请下载后自行研究。


本站资源仅供学习和交流使用,版权归原作者所有,请勿商业运营、违法使用和传播!请在下载后24小时之内自觉删除。


若作商业用途,请购买正版,由于未及时购买和付费发生的侵权行为,使用者自行承担,概与本站无关。


本文链接:https://www.10zhan.com/biancheng/11141.html

分享给朋友:

“基于Python编程的简易自动收货机模拟系统” 的相关文章

【说站】laravel实现自定义404页面并给页面传值

【说站】laravel实现自定义404页面并给页面传值

以 laravel5.8 为例,虽然有自带的404页面,但太简单,我们更希望能自定义404页面,将用户留在站点。实现的方式很简单,将自定义的视图文件命名为 404.blade.php,并放到 reso...

【说站】Thymeleaf报错Error resolving template “XXX”

【说站】Thymeleaf报错Error resolving template “XXX”

修改了一下开源项目的目录结构访问突然报错Error resolving template “XXX”可能原因有如下三种:第一种可能:原因:在使用springboot的过程中,如果使用thymeleaf...

【说站】用一句话就可以去除宝塔面板操作上的二次验证

【说站】用一句话就可以去除宝塔面板操作上的二次验证

用过宝塔的朋友应该都会发现,现在宝塔面板有些鸡肋的功能,删除文件、删除数据库、删除站点等操作都需要做计算题!不仅加了几秒的延时等待,还无法跳过!这时候就会有朋友在想,如何去除宝塔面板的二次验证,此篇文...

【说站】Centos8.0如何配置静态IP详解及永久关闭防火墙

【说站】Centos8.0如何配置静态IP详解及永久关闭防火墙

这篇文章主要介绍了详解Centos8 配置静态IP的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来学习一下!1. 查看自己的网关地址点击虚...

【说站】vagrant实现linux虚拟机的安装并配置网络

【说站】vagrant实现linux虚拟机的安装并配置网络

一、VirtualBox的下载和安装1、下载VirtualBox官网下载:https://www.virtualbox.org/wiki/Downloads我的电脑是Windows的,所以下载Wind...

【说站】Java从resources读取文件内容的方法有哪些

【说站】Java从resources读取文件内容的方法有哪些

本文主要介绍的是java读取resource目录下文件的方法,比如这是你的src目录的结构├── main│ ├── java│ │ └── ...