• 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

  • 相关阅读:
    均匀光源积分球的应用领域有哪些
    Pytorch学习笔记(GPU训练)
    petalinux之LED应用编程
    对abstract关键字的误解
    【TiDB】一些很有意思的sql调优案例分享
    JavaScript进阶内容——BOM详解
    CalBioreagents 人α1微球蛋白抗原中英文说明书
    网页设计期末课程大作业:基于HTML+CSS+JavaScript+Bootstrap制作响应式网站信息技术交流博客(7页)
    Spring Start制作
    java基础之常用类1
  • 原文地址:https://blog.csdn.net/qq_62235017/article/details/133799605