Python实现简单计算器:处理四则运算及异常情况
问题分析 我们需要设计一个简单的计算器程序,能够处理两个整数之间的加、减、乘、除运算。具体要求如下: 1. 输入格式:一行三个参数,前两个是整数,第三个是操作符('+', '-', '*', '/'或其他符号)。 2. 输出规则: - 如果操作符有效且不是除法或正常执行其他运算,则输出结果。 - 如果遇到除数为零的情况(即第二个数为0且操作符是'/'),输出"Divided by zero!"。 - 如果操作符无效(不是上述四种之一),输出"Invalid operator!"。 3. 数据范围:所有数值都在int范围内,无需考虑溢出等问题。 解决思路 1. 读取输入:从标准输入读取一行数据,拆分成三个部分:num1, num2, op。 2. 验证操作符有效性:检查op是否属于['+', '-', '*', '/']中的一个。如果不是,直接返回错误信息。 3. 处理特殊情况(除零错误):当op为'/'时,先判断num2是否为0。如果是,则输出相应错误信息;否则进行正常的除法运算。 4. 执行对应运算:根据不同的操作符执行相应的算术运算。 5. 输出结果:根据上述逻辑得到最终结果并打印。 Python代码实现 ```python # 读取输入并分割成三部分 line = input().split() if len(line) != 3: print("Invalid input format!") # 确保有恰好三个元素 else: try: a = int(line[0]) # 第一个数字转换为整数 b = int(line[1]) # 第二个数字转换为整数 op = line[2] # 操作符字符串 # 根据不同的操作符进行处理 if op == '+': res = a + b print(res) elif op == '-': res = a - b print(res) elif op == '*': res = a * b print(res) elif op == '/': if b == 0: print("Divided by zero!") else: res = a // b # 题目要求整数结果,所以用整除 print(res) else: print("Invalid operator!") except ValueError: print("Input must be integers for the first two parameters.") ``` 代码解释 1. 输入处理:使用`input().split()`读取一行输入并将其拆分成一个列表。预期该列表应有3个元素(两个整数和一个操作符)。 2. 类型转换与异常捕获:尝试将前两个元素转为整数。若失败(如非数字字符),会抛出`ValueError`,此时提示用户输入的前两项必须是整数。 3. 操作符判断:通过一系列`if-elif`语句检查操作符的类型: - `+`, `-`, `*`直接计算相应结果。 - `/`需要额外检查除数是否为零。若为零,输出错误信息;否则执行整除操作(因为题目说明结果是整数)。 - 其他任何操作符均视为无效,输出对应的错误信息。 4. 边界情况覆盖:包括无效的操作符、除零错误以及非整数输入等情况都有相应的处理逻辑。 示例测试 - 样例输入: `1 2 +` → 输出: `3` - 测试案例1: `5 0 /` → 输出: `Divided by zero!` - 测试案例2: `3 4 %` → 输出: `Invalid operator!` - 测试案例3: `10 5 *` → 输出: `50` - 测试案例4: `7 3 -` → 输出: `4` ######[AI问答 | 905点数解答 | 2025-12-17 12:15:53]
- Python 运行报错:urllib3 网络连接创建失败,原因及排查建议(字节豆包 | 161点数解答 | 2024-10-31 00:39:36)461
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)345
- Python 实现 DES 加密算法编程实验:从原理到单步调试全解析(字节豆包 | 4096点数解答 | 2025-11-09 22:06:30)72
- Python 实战:学生信息列表转字典、遍历、深拷贝及数据修改全流程(GPT | 422点数解答 | 2024-10-29 15:43:54)416
- Python实战:学生成绩列表转字典,深拷贝与数据修改操作全解析(字节豆包 | 254点数解答 | 2024-10-29 16:01:39)409
- CentOS下Java进程出现futex_wait_queue_me问题的处理全流程(阿里通义 | 283点数解答 | 2023-11-20 14:51:26)461
- 替雷利珠单抗致免疫相关性糖尿病:病例报道与机制探讨,为临床用药敲响警钟( | 164点数解答 | 2024-10-11 14:52:52)265
- 代码揭秘:栈助力中缀表达式转后缀并精准计算!(字节豆包 | 979点数解答 | 2024-10-12 20:35:40)216
- Python 实现实数四则运算:输入表达式输出结果,处理除零与格式错误(字节豆包 | 286点数解答 | 2024-11-17 11:21:58)130
- C 语言实现:输入实数四则运算式输出保留两位小数结果(含特殊情况处理) (字节豆包 | 320点数解答 | 2024-11-17 11:22:27)145
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)313
- Java调用Python接口中文乱码?设置UTF - 8编码一招解决!(讯飞星火 | 263点数解答 | 2024-06-06 17:07:59)394