全国计算机等级考试二级Python精品题库学习笔记1

全国计算机等级考试二级Python精品题库学习笔记1

  • 精品试卷01
    • 精品试卷01程序题
      • 基本操作题 2:随机验证码
      • 基本操作题 3:比赛成绩计算
      • Turtle 绘图题:同心圆
      • 简单应用题 2:员工工资表
      • 综合应用题:《从清华到MIT》词频统计
  • 精品试卷02
      • zip函数与字典创建
        • center函数的用法:
    • 精品试卷02程序题
      • 基本操作题 计算两点间距离
      • 简单应用题 2:分词去重
      • 综合应用题:十二星座日期范围之一
      • 综合应用题:十二星座日期范围之二
      • 综合应用题:十二星座日期范围之三

精品试卷01

Python123链接
全国计算机等级考试二级Python精品题库学习笔记1_第1张图片
全国计算机等级考试二级Python精品题库学习笔记1_第2张图片
全国计算机等级考试二级Python精品题库学习笔记1_第3张图片

精品试卷01程序题

基本操作题 2:随机验证码

全国计算机等级考试二级Python精品题库学习笔记1_第4张图片

import random as r
zmb = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz'
r.seed(1)
code=""
for i in range(4):
    code+=r.choice(zmb)
print(code)

基本操作题 3:比赛成绩计算

全国计算机等级考试二级Python精品题库学习笔记1_第5张图片
要点:
列表里每一个元素又是一个列表,对应一组的竞赛成绩
利用 len(score) 求得总的组数;
为了在输出语句里输出各组的编号数,所以需要使用带循环变量 i 的 for 循环
在这个循环结构中,按照计算公式计算每一组的总成绩,并显示输出计算结果
因为结果要求显示整数,格式定义里使用了int(final)。

score = [[87,79,90],[99,83,93],[90,75,89],[89,87,94],[95,85,84]]
final=0
for i in range(len(score)):
    final=score[i][0]*0.6+score[i][1]*0.3+score[i][2]*0.1
    print('the {} final score is {}'.format(i+1, int(final)))

Turtle 绘图题:同心圆

全国计算机等级考试二级Python精品题库学习笔记1_第6张图片
要点注释:
题目给出了基本数据的定义,后面要使用这些变量
在 for 循环里面,主要问题是画笔的定位,要考虑圆心的位置是(0,0)的时候,画笔要移动到圆心位置正下方,因此坐标点是(0,-ra[i])
画笔颜色要从颜色列表里选取
画圆的半径也从变量里面获取

import turtle
color=['red','pink','green']
r=[20,50,100]
for i in range(3):
	turtle.penup()
	turtle.goto(0,-r[i])
	turtle.pendown()
	turtle.pencolor(color[i])
	turtle.circle(r[i])
turtle.hideturtle
turtle.done

简单应用题 2:员工工资表

全国计算机等级考试二级Python精品题库学习笔记1_第7张图片
要点:
字典 members 里的 value 是个列表,所以需要用到列表的索引
对着字典 members 遍历,按照要求显示每个员工的工资和部门信息,另外还要取得工资和部门的名称存入字典 sal_dep
为了统计工资最高的部门的工资,需要字典 sal_dep 来保存这两个信息并且这个字典的 key 应该是工资数
用 max 函数对字典 sal_dep 的 key 进行求最大值的计算,并将最大值赋给变量 max_val
再从字典里,取出 key 为 max_val 的 value 赋给变量 max_name
最后按照要求显示结果

# 简单应用题 2:员工工资表
members = {
     '张三':['人力部',5500],
            '李四':['后勤部',4500],
            '王三':['市场部',6500],
            '赵六':['开发部',8500]
           }
sal_dep={
     }
for key in members:
    print("{}的工资是:{},部门是{}".format(key,members[key][0],members[key][1]))
    sal_dep[members[key][1]]=members[key][0]
#print(sal_dep)
#显示:
#{5500: '人力部', 4500: '后勤部', 6500: '市场部', 8500: '开发部'}
max_val=max(sal_dep)
max_name=sal_dep[max_val]
print("工资最高的部门是:{},该部门工资是:{}".format(max_name,max_val))

综合应用题:《从清华到MIT》词频统计

全国计算机等级考试二级Python精品题库学习笔记1_第8张图片

使用with后不管with中的代码出现什么错误,都会进行对当前对象进行清理工作。
例如file的file.close()方法,无论with中出现任何错误,都会执行file.close()方法
以指定utf-8编码只读方式打开data.txt文件,文件句柄命名为f
参考代码:

# -*- coding:utf-8 -*-
'''
This is a python123.io file.
'''
import jieba        # 导入jieba中文分词库
dk = {
     }             # 定义dk字典变量 type(dk):

#使用with后不管with中的代码出现什么错误,都会进行对当前对象进行清理工作。
#例如file的file.close()方法,无论with中出现任何错误,都会执行file.close()方法

#以指定utf-8编码只读方式打开data.txt文件,文件句柄命名为f
with open('data.txt','r',encoding = "utf-8") as f:  
    sl = f.readlines()

#print(type(f))    f是文件句柄的类型
#print(type(sl))   sl是一个列表,包含了文件中每一行内容
#print(type(sl[0]))  sl[0]是列表sl中第一个元素,是文件中第一行所有内容

for s in sl:        #循环读取列表元素
    k =jieba.lcut(s, cut_all = True)
    #对每个s,使用jieba.lcut函数以全模式方式返回一个列表(由词语组成)
    for wo in k:    #对每个词语进行筛选
        if len(wo) == 2:    #如果词语的长度为2,进行统计
           dk[wo] = dk.get(wo,0) + 1
           #逐步构建统计字典,形式如{"大学":1,"设计":2,...},备注,这里的1、2是逐渐变化中

dp = list(dk.items())   #转换为列表,列表中元素为元组。
dp.sort(key= lambda x:int(x[1]), reverse = True)

for i in range(10):   #输出排序后的内容
   print("{}:{}".format(dp[i][0],dp[i][1]))

精品试卷02

全国计算机等级考试二级Python精品题库学习笔记1_第9张图片

zip函数与字典创建

zip():将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
全国计算机等级考试二级Python精品题库学习笔记1_第10张图片
全国计算机等级考试二级Python精品题库学习笔记1_第11张图片
全国计算机等级考试二级Python精品题库学习笔记1_第12张图片
pip常用的子命令有:
install、download、uninstall、freeze、list、show、search、wheel、hash、completion、help。

全国计算机等级考试二级Python精品题库学习笔记1_第13张图片

center函数的用法:

全国计算机等级考试二级Python精品题库学习笔记1_第14张图片

精品试卷02程序题

基本操作题 计算两点间距离

全国计算机等级考试二级Python精品题库学习笔记1_第15张图片
注意点:
如果输入不符合要求,例如1 1,则会出现SyntaxError: unexpected EOF while parsing
如果输入的包含字符,例如1 1 a b,则会出现NameError: name ‘a’ is not defined

ntxt = input("")  #从键盘上接受输入1 1 2 2,返回字符串"1 1 2 2"赋值给ntxt
nls = ntxt.split(" ")
#使用split(" ")函数分割字符串内容," "中包含了一个英文空格,并返回了一个列表给nls
x1 = eval(nls[0]) #将列表nls中第一个元素被eval函数识别为数字:1
y1 = eval(nls[1]) #将列表nls中第二个元素被eval函数识别为数字:1
x2 = eval(nls[2]) #将列表nls中第三个元素被eval函数识别为数字:2
y2 = eval(nls[3]) #将列表中第四个元素被eval函数识别为数字:2
r = pow(pow(x2-x1, 2) + pow(y2-y1, 2), 0.5)  #根据两点间距离的数学公式求出距离
print("{:.2f}".format(r)) #保留2位小数输出距离1.41

简单应用题 2:分词去重

全国计算机等级考试二级Python精品题库学习笔记1_第16张图片

#代码中改为data2.txt是区别于精品题01下载的文件
import jieba
f = open('out1.txt','w')
#因为题库题目多,所以改为data2.txt
fi = open("data2.txt","r",encoding="utf-8")
lst=jieba.lcut(fi.read())
#或者ls=list(sorted(set(lst)))
s = set(lst)    #使用set函数将列表lst转换为集合,实现元素去重
s1 = sorted(s) #将列表按字符顺序排序
ls = list(s1)    #将集合重新变成列表ls
for i in ls:
    if len(i)>=3:
        f.write(i+"\n")
fi.close()
f.close()

答案注解版:

import jieba   #导入中文分词库
f = open('out1.txt','w')   #以写的方式打开out1.txt文件
fi = open("data.txt","r",encoding="utf-8") #以读的方式打开data.txt文件
#使用jieba.lcut()对data.txt文件读出字符串进行中文分词,返回列表lst
lst = jieba.lcut(fi.read())
s = set(lst)    #使用set函数将列表lst转换为集合,实现元素去重  
s1 = sorted(s) #将列表按字符顺序排序
ls = list(s1)    #将集合重新变成列表ls
for item in ls:        #遍历去重后ls每一个元素
    if len(item) >=3:
        f.write(item + "\n")  #将符合条件的字符串写入out1.txt中
fi.close()  #关闭文件fi
f.close()   #关闭文件f

综合应用题:十二星座日期范围之一

全国计算机等级考试二级Python精品题库学习笔记1_第17张图片

f=open("PY301-SunSign.csv","r",encoding="utf-8")
ls = []
for line in f.readlines():
      line=line.replace("\n","")
      ls.append(line.split(","))
      #或者ls.append(line.replace("\n", '').split(','))
      # 或者ls.append(line.strip().split(','))
s=input("请输入星座中文名称(例如, 双子座):")
for i in range(len(ls)):
      if s==ls[i][1]:
            print("{}的生日位于{}-{}之间".format(s,ls[i][2],ls[i][3]))
f.close()

综合应用题:十二星座日期范围之二

全国计算机等级考试二级Python精品题库学习笔记1_第18张图片

f=open("PY301-SunSign.csv","r",encoding="UTF-8")
ls = []
for line in f.readlines():
      line=line.replace("\n","")
      ls.append(line.split(","))
sl=input("请输入星座序号(例如,5 10):")
while sl!="":
      lsNum=sl.split()
      for s in lsNum:
            for i in range(len(ls)):
                  if s==ls[i][0]:
                        print("{}({})的生日是{}月{}日至{}月{}日之间".
                              format(ls[i][1],ls[i][4],ls[i][2][:-2],
                                     ls[i][2][-2:],ls[i][3][:-2],ls[i][3][-2:]))
      sl = input("请输入星座序号(例如,5):")

综合应用题:十二星座日期范围之三

全国计算机等级考试二级Python精品题库学习笔记1_第19张图片

f=open("PY301-SunSign.csv","r",encoding="UTF-8")
ls = []
for line in f.readlines():
    ls.append(line.strip().split(","))
    #line=line.replace("\n","")
    #ls.append(line.split(","))
sl=input("请输入星座序号(例如,5 10):")
while sl!=0:
    lsNum=sl.split()
    for s in lsNum:
        if 1<=int(s)<=12:
            for i in range(len(ls)):
                if s==ls[i][0]:
                    print("{}({})的生日是{}月{}日至{}月{}日之间"
                          .format(ls[i][1],ls[i][4],ls[i][2][:-2],
                                  ls[i][2][-2:],ls[i][3][:-2],ls[i][3][-2:]))
        else:
            print("输入星座序号有误!")
    sl=input("请输入星座序号(例如,5 10):")

你可能感兴趣的:(Python等级考试,python,编程语言,字符串,字典,cpython)