You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何操作两个列表实现CashRegister类的receipt小票打印方法

购物小票打印功能实现方案

修复后完整代码

class CashRegister:
    def __init__(self, names=None, prices=None):
        self._itemCount = 0
        self._totalPrice = 0.0
        # 初始化参数兼容空值,避免传参报错
        self._names = list(names) if names else []
        self._prices = list(prices) if prices else []
        # 初始化默认税率为0,避免未设置税率时调用报错
        self._tax_percent = 0

    def addItem(self, name, price):
        # 追加单个商品到列表,而非覆盖原有列表
        self._names.append(name)
        self._prices.append(price)

    def getTotal(self):
        self._totalPrice = sum(self._prices)
        return self._totalPrice

    def getCount(self):
        self._itemCount = len(self._prices)
        return self._itemCount

    def clear(self):
        self._itemCount = 0
        self._totalPrice = 0.0
        self._names.clear()
        self._prices.clear()

    def updatetax(self, tax):
        if 1 <= tax <= 20:
            self._tax_percent = tax / 100  # 转为百分比系数,避免后续计算错误
        else:
            self._tax_percent = 0

    def get_total_tax(self):
        return self.getTotal() * self._tax_percent

    def reciept(self):
        print("===== 购物小票 =====")
        # 用zip函数同时遍历商品名、价格两个列表,配对输出
        for name, price in zip(self._names, self._prices):
            print(f"{name}: {price}元")
        print("====================")
        print(f"商品总数: {self.getCount()}件")
        print(f"商品总价: {self.getTotal():.2f}元")
        print(f"税费: {self.get_total_tax():.2f}元")
        print(f"应付总额: {(self.getTotal() + self.get_total_tax()):.2f}元")

核心逻辑说明

  • 原有代码的__init__和addItem方法存在覆盖原有商品列表、生成嵌套列表的错误,修复后改为初始化直接接收列表、新增商品用append追加到对应列表
  • 两个列表同步遍历使用Python内置zip()函数实现,会自动按顺序配对两个列表的同位置元素,刚好满足「商品名:价格」的输出需求
  • 税率计算默认转为百分比系数,避免出现税费高于商品总价的逻辑错误,输出金额统一保留2位小数符合收银场景习惯

调用示例

# 初始化收银台,传入初始商品列表
cash_reg = CashRegister(["可口可乐", "乐事薯片", "康师傅矿泉水"], [3.5, 8.9, 2.0])
# 新增单个商品
cash_reg.addItem("双汇火腿肠", 3.0)
# 设置税率为3%
cash_reg.updatetax(3)
# 打印购物小票
cash_reg.reciept()

输出效果

===== 购物小票 =====
可口可乐: 3.5元
乐事薯片: 8.9元
康师傅矿泉水: 2.0元
双汇火腿肠: 3.0元
====================
商品总数: 4件
商品总价: 17.40元
税费: 0.52元
应付总额: 17.92元

内容的提问来源于stack exchange,提问作者pleasebekind

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 03:06:04