从0开始的python学习:编译原理实验1:程序语言的重复率检查
一开始想用C写,结果字符串处理太麻烦放弃了。听了老师的话说可以用一门新语言写写,那就顺便试试。
实验一:程序语言的重复率检查
实验目的: 通过编写一个重复率检查程序,掌握编译器的预处理方法。
实验要求:
(1)打开两个C或C++或其它程序语言文件,并显示两个文件内容;
(2)对比两个程序语言源文件,进行重复率检查,给出重复率;注:重复率:连续有n个词相同则计一次重复,n可以通过界面设置进行调整,给出程序设计过程中重复率的设定及计数公式。
(3)两个文件中重复之处用红色标出或者摘录出来。
实验代码:
# encoding: utf-8
list1 = []
list2 = []
n = 0 # 控制重复
k = 0 # 控制循环
m = input("重复字数:") # 要求的长度
p = 0 # 控制输出
r = 0 # 控制输出次数
flag = 0 # 标志位
counts = 0 # 出现的最大公共序列
i = 0
sum = 0
# 打开文件写入
fo = open("C:\Users\Launcher-Z\Desktop\words 1.txt", "r")
str1 = fo.read()
print str1
fo = open("C:\Users\Launcher-Z\Desktop\words 2.txt", "r")
str2 = fo.read()
print str2
# str1 = "Engraved a the signs so He can feel just right When I'm losing yourself, I'l come to found We can finally "
# str2 = "Engraved all the signs so I can feel just right When I'm losing myself, I'll come to find We can finally"
list1 = str1.split()
list2 = str2.split()
while i < len(list1):k = ifor j in range(len(list2)):if list1[k] == list2[j]:if k == (len(list1) - 1):continueelse:k = k + 1n = n + 1continueelse: # 如果长度大于等于要求则输出i到n的字符,否则不干事;并重置k=i,n=0if n >= m:# 改进:如果在集合中,跳过不管;不在集合中,加入集合,执行标志置1,目前不想写了flag = 1 # 标志位置1counts = nsum = sum + nprint '有', n, '个重复单词'p = iwhile r < n:print list1[p]p = p + 1r = r + 1r = 0k = in = 0if flag == 1:i = i + counts - 1counts = 0flag = 0 # 重置标志i = i + 1
print '重复率:', sum*100/len(list1), '%'
问题及讨论:
这个代码适用的条件应该是当n值比较大的时候,如果n值过小,那么就会造成输出第一段中后方存在与第二段中前方相同的字段,即第一段中的与自己重复的部分会被计算进去,造成结果错误——改进方法:可以设置一个集合,如代码中的注释所说,但如果集合中存放单独的单词不行,重复的会被抛弃,只能以短语为单位存放。
第一段文字从头到尾之遍历了一遍,而的第二段遍历了许多许多次性能上是否还可以优化有待商榷。
单纯地先把实验报告上的东西搬上来了,第一次接触python,肯定还有很多要去学习的。
从0开始的python学习:编译原理实验1:程序语言的重复率检查相关推荐
- 中山大学编译原理实验——实现PL0语言的编译程序(无坑有缩进版)
PL0-Compiler 代码传送门 ps:吐槽一下,老师给的代码实在是太烂了.又没缩进又多编译错误,除此之外还有很多细节漏掉关键字,总之就很多坑,所以这里发一个无坑带缩进版,方便大家学习. 中山大学 ...
- 编译原理实验代码c语言,编译原理实验 简单词法分析(含源代码和实验结果)
可直接运行 原创!! 附录一 实验报告样式 <编译原理>实验报告 实验2 简单词法分析 姓名 陈婷婷 学号 1009050121 班级 计科1001班 时间: 2012/4/5 地点:文波 ...
- 编译原理——实验壹——TINY语言的词法分析
一. 实验目的 构造tiny语言的词法分析器(扫描器),要求利用第三方的lex工具进行构造.构造出的扫描器,能够读入tiny语言的示例代码,分解成token输出. 掌握使用lex工具 掌握构造词法分析 ...
- 编译原理实验一 TINY语言的词法分析
实验一 TINY语言的词法分析 一.实验目的 (评价依据,描述是否准确到位) 构造tiny语言的词法分析器(扫描器),要求利用第三方的lex工具进行构造.实验结果:构造出的扫描器,能够读入教材样例中给 ...
- 对学习编译原理的看法
我认为编译原理这本书是一门与代码做斗争的课程,学习编译原理能够追寻程序设计语言的本质,了解计算机各种语言编译的原理.学习了编译原理能够更加深入的了解计算机各种高级语言使用的原理,能使自己更加容易更加好 ...
- 每天两小时学习编译原理——一个学期的第三天,希望能坚持长久✨
上一篇:每天两小时学习编译原理--一个学期的第二天,希望能坚持长久✨ 下一篇:每天两小时学习编译原理--一个学期的第四天,希望能坚持长久✨ 继续学习 编译程序过程 词法分析 语法分析 语义分析与中间代 ...
- 编译原理实验(三)——LR(0)语法分析
编译原理实验(三)--LR(0)语法分析 实验要求 参考程序 实验结果 程序输入说明 截图 实验要求 根据LR(0)分析法编写一个语法分析程序 直接输入根据已知文法构造的分析表M;对于输入的文法和符号 ...
- 编译原理实验:代码生成作业(1)
编译原理实验4:中间代码生成实验包-C++文档类资源-CSDN下载编译原理实验4:中间代码生成实验包更多下载资源.学习资料请访问CSDN下载频道.https://download.csdn.net/d ...
- c语言实现编译器编译原理,编译原理课程设计--C语言编译器实现.doc
编译原理课程设计--C语言编译器实现 甘肃政法学院 编译原理课程设计 题 目 C语言编译器实现 计算机科学学院计算机科学与技术专业10 级 计本 班 学 号: 201081010137 姓 名: 杨青 ...
- python学习之第二课时--运行程序和字符编码
python学习之第二课时--运行程序和字符编码 python的运行方式 Windows的终端运行方式: [右键点击开始键]--->[运行输入cmd]---> ...
最新文章
- python type创建类_Python基于内置函数type创建新类型
- UIPickerView
- Treasure Island CodeForces - 1214D(dfs)
- 【全网最全】一文搞定 Linux 压缩、解压哪些事儿
- 我的CSDN资源下载怎么被自动设置了积分
- 淘宝现重大BUG,是程序员报复?官方回应
- Java1.8新特性学习笔记
- 一次历时两周的实习生笔试
- Docfetcher
- 【转】浅谈半导体工艺变革
- iOS开发——设置支持的iOS设备(512m内存以上设备)
- Microchip最新推出的ATMEGA4809-XPRO开发板简介
- Chromedriver适用谷歌浏览器的各个版本
- 出门在外如何保管毕业证原件_出门在外时如何控制HomeKit智能家居
- VARIANT数据类型详解
- C#网络编程 - 局域网聊天室(UDP)
- Vista系统下装XP系统
- 前端 element plus Popover气泡卡片 中再套个气泡卡片 点击第二个气泡框的时候第一个气泡框不会消失
- 【转】看源代码那些事
- 秋叶喻死亡,是用诗来