zoukankan      html  css  js  c++  java
  • 20192221 实验二《Python程序设计》实验报告

    学号 2019-2020-2 《Python程序设计》实验x报告

    课程:《Python程序设计》
    班级:1922
    姓名:叶蕊馨
    学号:20192221
    实验教师:王志强老师
    实验日期:2020年4月11日
    必修/选修: 公选课

    1.实验内容

    (1)设计并完成一个完整的应用程序,完成加减乘除模等运算,功能多多益善。
    (2)考核基本语法、判定语句、循环语句、逻辑运算等知识点

    2. 实验过程及结果

    一、程序流程

    1.首先导入re模块

    2.计算单个的乘除法的代码

    通过判断'*'和'/'是否在字符串内计算

    3.计算多乘除法的代码

    通过正则表达式循环判断,.research语句进行匹配

    4.计算加减法的代码

    同样通过正则表达式进行匹配

    5.混合运算的代码

    通过计算顺序调用前面所写的函数

    6.从键盘输入算式,并加入循环方便用户使用

    7.运行结果

    二、程序全代码

    全部代码如下
    import re
    def md(exp):
        if '*' in exp:
            a, b = exp.split('*')
            return str(float(a)*float(b))
        elif '/' in exp:
            a, b = exp.split('/')
            return str(float(a)/float(b))
    
    def sa(exp):
        ret = re.findall('[+-]?d+(?:.d+)?', exp)
        exp_sum = 0
        for i in ret:
            exp_sum += float(i)
        return exp_sum
    
    def mul_div(exp):
        while True:
            ret = re.search('d+(.d+)?[*/]-?d+(.d+)?', exp)
            if ret:
                atom_exp = ret.group()
                res = md(atom_exp)
                exp = exp.replace(atom_exp, res)
            else:
                return exp
    
    def cal(exp):
        exp = mul_div(exp)
        exp_sum = sa(exp)
        return exp_sum
    c = True
    while c:
        a = input("请输入一个算式")
        print(cal(a))
        b = input("你还想继续算吗?(是or否)")
        if b == '是':
            c = True
        elif b == '否':
            c = False
    

    3. 实验过程中遇到的问题和解决过程

    • 问题1:没想到如何匹配'*'和'/',想用列表但写出来有点复杂
    • 问题1解决方案:通过查找正则表达式的符号,写出正则表达式来匹配
    • 问题2:最开始输入一次算式计算完毕就自动结束了
      不方便使用者操作,需重新运行程序
    • 问题2解决方案:增加循环,通过使用者意愿决定是否结束程序

    其他(感悟、思考等)

    最开始对正则表达式的不熟悉导致编写花费很多的时间,需要不断查找每个字符代表什么意思
    后来对常用的几种字符进行了记忆,编写代码更加顺畅

  • 相关阅读:
    poj 3071 Football (概率dp)
    CF1408G Clusterization Counting
    2-sat
    线段树优化建图
    SP5971 LCMSUM
    [NOI2020]命运
    SP19149 INS14H
    Atcoder ARC-068
    CF908G New Year and Original Order
    (四)、Fiddler打断点
  • 原文地址:https://www.cnblogs.com/yeruixin-python/p/12681236.html
Copyright © 2011-2022 走看看