• 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
    • 2
    • 3
    • 4
    • 5
    • 输出样例:
    1.0
    3.0
    -0.8
    2.6
    
    • 1
    • 2
    • 3
    • 4

    题解

    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}")
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    思路

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

  • 相关阅读:
    接口测试项目(非常值得练手)
    Spring的基本使用
    高压MOS管1000V/2A 可代替IXFP4N100 数据表(PDF)
    《Mybatis 手撸专栏》第8章:把反射用到出神入化
    【Pandas数据处理100例】(三):DataFrame数据去重,删除重复的行数据
    俄罗斯域名解析遇到的坑~
    攻防世界题目练习——Web引导模式(二)
    TestStand-从LabVIEW创建TestStand数据类型的簇
    XML是不是主要用做配置文件?
    (图论) 1020. 飞地的数量 ——【Leetcode每日一题】
  • 原文地址:https://blog.csdn.net/qq_62235017/article/details/133799605