3.4 口算作业批改项目分析报告样例-数据 与数据结构-新浙教版(2019)《高中信息技术》选择性必修第一册.docx

上传人(卖家):Q123 文档编号:5170009 上传时间:2023-02-15 格式:DOCX 页数:4 大小:158.55KB
下载 相关 举报
3.4 口算作业批改项目分析报告样例-数据 与数据结构-新浙教版(2019)《高中信息技术》选择性必修第一册.docx_第1页
第1页 / 共4页
3.4 口算作业批改项目分析报告样例-数据 与数据结构-新浙教版(2019)《高中信息技术》选择性必修第一册.docx_第2页
第2页 / 共4页
3.4 口算作业批改项目分析报告样例-数据 与数据结构-新浙教版(2019)《高中信息技术》选择性必修第一册.docx_第3页
第3页 / 共4页
3.4 口算作业批改项目分析报告样例-数据 与数据结构-新浙教版(2019)《高中信息技术》选择性必修第一册.docx_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

1、“口算批改”项目作业报告为了帮助小学生检查口算作业,你所在的软件开发团队计划开发一款“口算批改”APP,以提高口算批改的效率。该程序的基本设想是:将手机对着作业本拍照,利用OCR(光学字符识别)技术,从图片中识别出算式,然后逐一计算,判断答案是否正确。一、口算等式采集为了便于学生进行后面的“口算批改”项目的进行,可以采用手工录入、互联网查找、OCR采集等各种方式,采集口算等式,并将所有等式存入“算式.csv”文件中。 二、抽象与建模过程 采集到的算式存储在“算式.csv”文件中,每行一个口算等式。判断一个等式是否正确,需要计算等号左边的运算式的值。等式中包括数字与运算符号,可以以字符串的形式,

2、整体读入,存入字符串变量中。对于等号左边的算式,计算其结果时,用数字栈存储算式中的数字,用符号栈存储运算符号。由于算式中的运算符号加、减、乘、除、括号等存在着优先级别,以算式中的运算符号与符号栈栈顶元素进行比较,如果算式中的优先级别小于等于栈顶元素的优先级别,则栈顶元素出栈,否则入栈。如果是左括号,则直接入栈。如果是右括号,则栈中元素依次出栈,直至左括号。数字与运算符号的计算,把数字栈、符号栈结合起来操作。三、算法与设计采用文件读取的方式,从“算式.csv”中读取所有的算式。一个算式占一行,以字符串存储该算式。利用字符串的find函数,找到“=”在算式中的位置,并用字符串中求子串的操作,取出等

3、号左边的算式与右边的值。对于左边等式,建立数字栈和符号栈,从左往右扫描,依次处理算式的中间计算过程。按如下方式处理:(1)当遇到的字符是数字时,继续扫描,直至遇到非数字字符。把这次的数字串转换成整数,压入数字栈中。(2)当遇到的是非数字时,必定为运算符号(因为字符串中仅有数字字符与运算符号),设该运算符号为x,符号栈顶元素为y,分以下几种情况处理:如果x为“(”时,或栈空时,则把x压入符号栈。如果x为“+”或“-”时,同时y为“(”,则入栈,否则, y出栈,同时,把数字栈最顶上的两个元素出栈,用运算符号y进行运算,并把运算结果压入数字栈。再把x压入符号栈。如果x为“*”或“/”时,同时y为“*

4、”或“/”时,则y出栈,同时,把数字栈最顶上的两个元素出栈,用运算符号y进行运算,并把运算结果压入数字栈。再把x压入符号栈。如果x为“)”时,则把符号栈中元素逐一出栈,直至遇到第一个左括号。继续扫描,直至左边的算式结束,则数字栈中的元素为左边的答案。如果答案与等号右边的值一样时,则输出“”,否则输出“?”。四、编写程序与测试用Python语言编程实现。import csvnumber=0*100ops= *100top1=-1top2=-1#数字栈顶两个元素参与运算,并将运算结果压入栈def cal(): op1=numbertop1 top1-=1 op2=numbertop1 top1-=

5、1 op=opstop2 top2-=1 anwser=0 if op=+: anwser=op2+op1 if op=-: anwser=op2-op1 if op=*: anwser=op2*op1 if op=/: anwser=op2/op1 top1+=1 numbertop1=anwserf=open(算式.csv,r)f_csv=csv.reader(f)for row in f_csv: exp=row0 pos=exp.find(=) expleft=exp0:pos expright=exppos+1: print(expleft) explen=len(expleft)

6、i=0 top1=-1 top2=-1 while iexplen: num=0 while i=0 and explefti=9: num*=10+ord(explefti)-48 i+=1 top1+=1 numbertop1=num if i-1 and opstop2!=(: cal; top2+=1 opstop2=explefti if i-1 and opstop2=* or opstop2=/: cal; top2+=1 opstop2=explefti if explefti=(: top2+=1 opstop2=explefti if explefti=): while(opstop2!=(): cal; top2-=1 top2-=1 i+=1 if numbertop1=int(expright): print(对) else: print(错)f.close()四、结论与建议本项目在用字符串存储后,在处理左边的算式时,也可以先把中缀表达式转后缀表达式,再用栈结构处理后缀表达式的值。第 4页 / 共4页

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高中 > 信息 > 浙教版(2019) > 选修1 数据与数据结构
版权提示 | 免责声明

1,本文(3.4 口算作业批改项目分析报告样例-数据 与数据结构-新浙教版(2019)《高中信息技术》选择性必修第一册.docx)为本站会员(Q123)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|