UVA288 Arithmetic Operations With Large Integers 题解

· · 题解

大致题意

计算一个算术表达式,其中符号 +-*** 四种符号分别表示加、减、乘和乘幂。

分析

根据题意,直接使用 Python 中内置的 eval 函数计算即可。判断输入结束,需要使用 try-except 语句捕获 EOFError 来实现。

只有 64B 的超级短代码:

while(1):
    try:print(eval(input()))
    except EOFError:break

接下来介绍一些“表达式计算”类问题的常见用法以及使用 Python 的 eval 所需要进行的“计算前预处理”。笔者目前尚没有想出计算“将感叹号用作阶乘符号”的表达式的办法,感兴趣的读者可以尝试思考。

编程用途 数学含义 处理方式
| 按位或 绝对值 按照类似于“括号匹配”的方法找到成对的竖线,左边的竖线用 replace 替换成 abs(,右边的竖线替换成 “)”。
^ 按位异或 幂次 replace 直接替换为两个星号即可
% 求余运算符 百分率 replace 替换为“/100
[,],{,} 表示列表/集合/结构体/函数/复合语句等 普通中括号/大括号 全部替换为小括号
/ 普通除法 分数 调用 Fraction 模块进行计算
! 逻辑非 阶乘 -