输入一个表达式字符串,计算其结果 输入格式: 行1:输入字符串数目 下面分别输入要计算的表达式 输出格式: 输出计算结果,结果保留2位小数。对于异常数据能输出相应异常信息。 输入样例1: 4 1+1 56-23 5/3 5*3.5 输出样例1: 2.00 33.00 1.67 17.50 输入样例2: 3 ab+23 2/0 23+36f 输出样例2: NameError ZeroDivisionError SyntaxError
时间: 2024-03-16 15:43:22 浏览: 114
这里给出一种基于`eval()`函数的方法,可以直接求解传入字符串的表达式结果,代码如下:
```python
n = int(input())
for i in range(n):
expr = input().strip()
try:
result = eval(expr)
print("%.2f" % result)
except NameError:
print("NameError")
except ZeroDivisionError:
print("ZeroDivisionError")
except SyntaxError:
print("SyntaxError")
```
代码解释:
- 首先读入字符串数目`n`;
- 然后循环`n`次,每次读入一个表达式字符串`expr`;
- 使用`eval()`函数对该字符串进行求值,将结果赋值给`result`;
- 使用`"%.2f" % result`格式化输出结果,保留2位小数;
- 在`try`语句中捕获可能出现的异常:`NameError`表示变量名未定义、`ZeroDivisionError`表示除数为0、`SyntaxError`表示表达式语法错误,在捕获每种异常时输出相应的异常信息。
需要注意的是,使用`eval()`函数时需要保证输入的字符串是合法的表达式,不能够包含任何潜在的安全问题,否则会存在被注入攻击的风险。
阅读全文