PTA 7-5 令人抓狂的四则运算

题目

曾记否,我们小学时,遇到这种四则运算,心情是抓狂的:

在这里插入图片描述
在这里插入图片描述

那么当我们学会使用计算机,自然是要程序去完成这个工作啦~ 现在请对输入的四则运算求值。注意:

四则运算表达式必定包含运算数,还可能包含运算符和括号( ),不含空格等其它字符
运算数必定包含数字,还可能包含正或负符号+、-以及小数点.
运算符仅有+(加)、-(减)、(乘以)、/(除以)四种
括号可以嵌套
对于带符号的数,可以加括号,也可以不加括号,例如:1±2
+3和1+(-2)(+3)是等价的
括号内可以是包含运算符的表达式,也可以仅有运算数,例如:1
(2)和1*(2+3)都是合法的表达式

输入格式:

输入由若干行组成:

除最后一行之外,每一行是一个长度不超过80的四则运算表达式
最后一行,是一个=字符
输入的所有字符均为英文半角字符,题目保证给定的表达式是正确的,不需要做有效性检查,题目保证所有运算数的长度(含小数点)均不超过5位,运算的中间结果和最终结果的绝对值均不超过100000

输出格式:

对输入的每个表达式,在一行中给出运算结果,保留1位小数。

  • 输入样例:
1
1+2
3-3.8
1.32*(4+(-2))
=
  • 输出样例:
1.0
3.0
-0.8
2.6

题解

import re

expressions = []
expression = input()

while expression != "=":
    expressions.append(expression)
    expression = input()

for expr in expressions:
    result = eval(expr)
    rounded_result = round(result, 1)
    print(f"{rounded_result:.1f}")

思路

这里直接提出这种题的解决方法,就是用py的eval函数,可以直接求解计算式,不需要转后缀之类的方法。如果使用C++或者java解决的话就需要判断优先级转后缀等一系列复杂的操作,很麻烦,网上也只有代码关于代码的讲解很少,所以作者也不太想花太多心理去完全搞懂(懒)。大家想看我在这里给个链接。
https://blog.csdn.net/weixin_53623850/article/details/121981444

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值