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解决方案:增加循环,通过使用者意愿决定是否结束程序

其他(感悟、思考等)

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

posted @ 2020-04-11 17:45  Jxxxco  阅读(319)  评论(0编辑  收藏  举报