Python二级等考知识点整理——高教版Python语言程序设计冲刺试卷(四)

《高教版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()
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值