Python 编程:实现商店购物优惠计算与输入异常处理
根据您的要求,下面是一个简单的 Python 程序来实现这个功能。该程序会不断从用户那里接收购物金额,并根据您提供的折扣规则计算出应收款额。如果输入的是负数,则会提示错误并要求重新输入。 ```python def calculate_discounted_price(price): if price >= 1000: return price * 0.85 elif price >= 500: return price * 0.90 elif price >= 200: return price * 0.95 elif price >= 100: return price * 0.97 else: return price def main(): while True: try: # 输入购物金额 amount = float(input("请输入购物金额(输入负数结束程序): ")) if amount < 0: print("程序已结束。") break elif amount < 100: print(f"购物金额不足100元,无优惠,应收款额为:{amount:.2f}元") else: discounted_price = calculate_discounted_price(amount) print(f"根据您的购物金额,应收款额为:{discounted_price:.2f}元") except ValueError: print("输入有误,请输入数字!") if __name__ == "__main__": main() ``` 程序说明: 1. 函数 `calculate_discounted_price`:此函数接收一个购物金额作为参数,并返回根据折扣规则计算后的实际收款金额。 2. 主函数 `main`:在主函数中,使用一个无限循环来持续接收用户的输入。每次接收到输入后,首先检查是否为负数,如果是则结束程序;如果不是负数,则调用 `calculate_discounted_price` 函数计算应收款额并输出。如果输入不是有效的数字,会捕获 `ValueError` 异常并提示用户重新输入。 使用方法: - 运行程序后,按提示输入购物金额。 - 如果输入的是负数,程序将结束。 - 如果输入的是非数字字符,程序会提示错误并要求重新输入。 - 根据输入的金额,程序会显示相应的应收款额。 希望这个程序能满足您的需求!如果有任何问题或需要进一步的帮助,请随时告诉我。 ######[AI写代码神器 | 504点数解答 | 2024-10-24 17:15:28]
- Python 运行报错:urllib3 网络连接创建失败,原因及排查建议(字节豆包 | 161点数解答 | 2024-10-31 00:39:36)496
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)380
- Python 实战:学生信息列表转字典、遍历、深拷贝及数据修改全流程(GPT | 422点数解答 | 2024-10-29 15:43:54)449
- Python实战:学生成绩列表转字典,深拷贝与数据修改操作全解析(字节豆包 | 254点数解答 | 2024-10-29 16:01:39)440
- Python 代码:从错误到正确,精准找出指定范围内素数!(字节豆包 | 295点数解答 | 2024-11-14 19:32:40)249
- Python 编程:开启无限可能的编程之旅!(阿里通义 | 19点数解答 | 2023-12-07 16:15:34)353
- Python代码实现:绘制洁白无瑕水晶玫瑰,附示例代码与注意事项(字节豆包 | 447点数解答 | 2025-11-02 14:37:54)93
- CentOS下Java进程出现futex_wait_queue_me问题的处理全流程(阿里通义 | 283点数解答 | 2023-11-20 14:51:26)486
- 替雷利珠单抗致免疫相关性糖尿病:病例报道与机制探讨,为临床用药敲响警钟( | 164点数解答 | 2024-10-11 14:52:52)289
- Python 代码转 C++:计算花朵鲜艳值总和(字节豆包 | 408点数解答 | 2026-04-19 21:50:57)19
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)350
- Java调用Python接口中文乱码?设置UTF - 8编码一招解决!(讯飞星火 | 263点数解答 | 2024-06-06 17:07:59)420