《高教版Python语言程序设计冲刺试卷》——模拟试卷D知识点
本文根据该书模拟试卷D答案及试卷讲解整理得,具有题目针对性,不涵盖部分送分题。欢迎探讨。
1.软件设计分析阶段
需要分析软件需求并制定需求规格说明书。
软件集成测试计划是软件测试阶段的任务。
2.数据流图(DFD)
DFD是结构化分析工具,描述数据处理过程,直接支持系统的功能建模。
3.用户数据库
数据库设计中,外模式反应用户对数据的要求。
4.根结点
线性结构:①有且只有一个根结点②每个结点最多有一个前件,也最多有一个后件。
只有一个根结点的不一定是线性结构,多于一个根结点的一定是非线性结构。
5.二叉树结点和遍历
叶子结点(度为0)总是比度为2的结点数多1个。结点总数=d1+d0+d2。
二叉树前序遍历顺序:根结点→左子树→右子树
6.不确定尾数
>>>print(0.1+0.2==0.3)
False
7.CSV文件特点
CSV文件通过单一编码表示字符,以行为单位,开头不留空行,每行表示一个一维数据,最多表示二维数据。
逗号分隔,即便列数据为空也要保留逗号。
8.list函数特点
>>>list(‘八十八’)
[‘八’,‘十’,‘八’]
注:list自动分割字符串每个字符为列表的单个元素。
9.字符串格式化
‘{:>3}’.format(s)
当s长度超过指定长度则忽略填充和位置,按照s本来的长度输出。(s不会被破坏)
10.综合应用题
问题1:统计两个文本中前100最常用字符,以CSV格式存储,写入txt文件。
问题2:对比两个文本,将共同出现的字符写入txt文件。
自己敲的代码如下:
#TextComparison
def COUNTOUT(filename,newfilename):
d,ls={},[]
file=open(filename,'r',encoding='utf-8')
newfile=open(newfilename,'w',encoding='utf-8')
for line in file:
for letter in line:
d[letter]=d.get(letter,0)+1
del d['\n']
items=list(d.items())
items.sort(key=lambda x:x[1],reverse=True)
for i in range(100):
let,count=items[i]
ls.append('{0}:{1}'.format(let,count))
newfile.write(','.join(ls))
file.close()
newfile.close()
return items
def COUNTSAME(itemsa,itemsb):
ls,keysa,keysb=[],[],[]
file=open('相同字符.txt','w',encoding='utf-8')
for itema in itemsa:
keya,counta=itema
keysa.append(keya)
for itemb in itemsb:
keyb,countb=itemb
keysb.append(keyb)
for key in keysa:
if key in keysb:
ls.append(key)
file.write(','.join(ls))
file.close()
def MAIN():
filenamea='命运-网络版.txt'
filenameb='寻梦-网络版.txt'
newfilenamea='命运-字符统计.txt'
newfilenameb='寻梦-字符统计.txt'
itemsa=COUNTOUT(filenamea,newfilenamea)
itemsb=COUNTOUT(filenameb,newfilenameb)
COUNTSAME(itemsa,itemsb)
MAIN()
参考答案如下:
names = ["命运", "寻梦"]
for name in names:
fi = open(name+"-网络版.txt", "r", encoding="utf-8")
fo = open(name+"-字符统计.txt", "w", encoding="utf-8")
txt = fi.read()
d = {}
for c in txt:
d[c] = d.get(c, 0) + 1
del d['\n']
ls = list(d.items())
ls.sort(key=lambda x:x[1], reverse=True)
for i in range(100):
ls[i] = "{}:{}".format(ls[i][0], ls[i][1])
fo.write(",".join(ls[:100]))
fi.close()
fo.close()
def getList(name):
f = open(name+"-字符统计.txt", "r", encoding="utf-8")
words = f.read().split(',')
for i in range(len(words)):
words[i] = words[i].split(':')[0]
f.close()
return words
def main():
fo = open("相同字符.txt", "w")
ls1 = getList("命运")
ls2 = getList("寻梦")
ls3 = []
for c in ls1:
if c in ls2:
ls3.append(c)
fo.write(",".join(ls3))
fo.close()
main()