Python SQLite实现水果订单:获取用户输入、计算金额并生成收据
水果订单处理SQLite Python程序实现
功能需求
实现水果订单处理功能,具体流程为:
- 获取用户输入的水果名称(字符串类型)和购买数量(整数类型)
- 从SQLite数据库中读取对应水果的单价(浮点数类型)
- 计算购买数量 × 单价得到订单总金额
- 将水果名称、购买数量及总金额写入文本文件,生成邮件样式的订单收据
主文件代码
# 用户输入 purchaseName = str(input("Enter Name:")) purchaseQuantity = int(input("Enter Quantity:")) purchaseConfirm = str(input("Confirm your order with y/n:"))
数据库操作文件代码
# 待插入数据库的水果条目 productEntries = [(1, "Strawberries", 1.50, 123), (2, "Blueberries", 1.30, 178), (3, "Raspberries", 1.40, 145), (4, "Gooseberries", 2.30, 121), (5, "Blackberries", 1.70, 90)] # 创建products数据表(需优先于数据插入执行) cursor.execute("""CREATE TABLE IF NOT EXISTS products ( productID INTEGER PRIMARY KEY, productName TEXT NOT NULL, productPrice REAL, productQuantity INTEGER );""") # 批量插入水果数据(使用INSERT OR IGNORE避免重复插入) cursor.executemany("INSERT OR IGNORE INTO products (productID, productName, productPrice, productQuantity) VALUES " "(?, ?, ?, ?);", productEntries) # 查询对应水果的单价(原代码逻辑错误:不应使用数据库中的库存数量计算,需单独取出单价后在主文件中与用户购买数量相乘) cursor.execute("SELECT productPrice FROM products WHERE productName=?", (purchaseName,)) # 获取查询结果(返回至主文件用于计算总金额) purchasePrice = cursor.fetchone()
关键修正说明
- 调整代码执行顺序:创建表操作必须在数据插入之前,否则插入会失败
- 修正查询逻辑:原代码用
productPrice * productQuantity计算的是库存总价值,而非用户订单金额,应先取出单价,再在主文件中与用户输入的purchaseQuantity相乘 - 修正查询参数格式:
cursor.execute的参数需传入元组,原代码直接传purchaseName会报错,改为(purchaseName,)
内容的提问来源于stack exchange,提问作者Phillip Handfield
相关产品推荐
相关产品推荐

