计算机二级Python编程题集锦

版权声明:感谢转载,转载请注明出处。 https://blog.csdn.net/msllws/article/details/82669532

【说明:试题来自python123.io专题《高教版 Python 语言程序设计冲刺试卷》,部分答案稍作修改,禁止商业利用,谢谢合作】

1.仅使用 Python 基本语法,即不使用任何模块,编写 Python 程序计算下列数学表达式的结果并输出,小数点后保留3位。

x = pow((3**4 + 5*(6**7))/8, 0.5)
print("{:.3f}".format(x))

 2.以中国共产党第十九次全国代表大会报告中一句话作为字符串变量 s,完善 Python 程序,分别用 Python 内置函数及 jieba 库中已有函数计算字符串 s 的中文字符个数及中文词语个数。注意,中文字符包含中文标点符号。(提交的代码应包括题目中给出的部分)

import jieba
s = "中国特色社会主义进入新时代,我国社会主要矛盾已经转化为人民日益增长的美好生活需要和不平衡不充分的发展之间的矛盾。"
n = ____①____
m = ____②____
print("中文字符数为{},中文词语数为{}。".format(n, m)),中文


import jieba
s = "中国特色社会主义进入新时代,我国社会主要矛盾已经转化为人民日益增长的美好生活需要和不平衡不充分的发展之间的矛盾。"
n = len(s)
m = len(jieba.lcut(s))
print("中文字符数为{},中文词语数为{}。".format(n, m))

3. 0x4DC0 是一个十六进制数,它对应的 Unicode 编码是中国古老的《易经》六十四卦的第一卦,请输出第 51 卦(震卦)对应的 Unicode 编码的二进制、十进制、八进制和十六进制格式。

print("二进制{____①____}、十进制{____②____}、八进制{____③____}、十六进制{____④____}".format(____⑤____))

print("二进制{0:b}、十进制{0}、八进制{0:o}、十六进制{0:x}".format(0x4DC0+50))

4.使用 turtle 库的 turtle.fd() 函数和 turtle.seth() 函数绘制一个边长为 200 的正方形,效果如下图所示。请结合格式框架,补充横线处代码。

import turtle
d = 0
for i in range(____①____):
    turtle.fd(____②____)
    d = ____③____
    turtle.seth(d)

---------------------------------

import turtle
d = 0
for i in range(4):
    turtle.fd(200)
    d = d + 90
    turtle.seth(d)

print(4, 200, 'd + 90')

5.列表 ls 中存储了我国 39 所 985 高校所对应的学校类型,请以这个列表为数据变量,完善 Python 代码,统计输出各类型的数量。

ls = ["综合", "理工", "综合", "综合", "综合", "综合", "综合", "综合", "综合", "综合",\
      "师范", "理工", "综合", "理工", "综合", "综合", "综合", "综合", "综合","理工",\
      "理工", "理工", "理工", "师范", "综合", "农林", "理工", "综合", "理工", "理工", \
      "理工", "综合", "理工", "综合", "综合", "理工", "农林", "民族", "军事"]
d = {}
for word in ls:
    d[word] = d.get(word, 0) + 1
for k in d:
    print("{}:{}".format(k, d[k]))

6.《论语》是儒家学派的经典著作之一,主要记录了孔子及其弟子的言行。网络上有很多《论语》文本版本。这里给出了一个版本,文件名称为“论语-网络版.txt”,其内容采用如下格式组织:

【原文】

1.11子曰:“父在,观其(1)志;父没,观其行(2);三年(3)无改于父之道(4),可谓孝矣。”

【注释】

(略)

【译文】

(略)

【评析】

(略)

该版本通过【原文】标记《论语》原文内容,采用【注释】、【译文】和【评析】标记对原文的注释、译文和评析。

问题1:请编写程序,提取《论语》文档中所有原文内容,输出保存到“论语-提取版.txt”文件。输出文件格式要求:去掉文章中原文部分每行行首空格及如“1.11”等的数字标志,行尾无空格、无空行。参考格式如下(原文中括号及内部数字是对应源文件中注释项的标记):

子曰(1):“学(2)而时习(3)之,不亦说(4)乎?有朋(5)自远方来,不亦乐(6)乎?人不知(7),而不愠(8),不亦君子(9)乎?”

有子(1)曰:“其为人也孝弟(2),而好犯上者(3),鲜(4)矣;不好犯上,而好作乱者,未之有也(5)。君子务本(6),本立而道生(7)。孝弟也者,其为人之本与(8)?”

子曰:“巧言令色(1),鲜(2)仁矣。”

(略)

问题2:请编写程序,在“论语-提取版.txt”基础上,进一步去掉每行文字中所有括号及其内部数字,保存为“论文-原文.txt”文件。参考格式如下: 

子曰:“学而时习之,不亦说乎?有朋自远方来,不亦乐乎?人不知,而不愠,不亦君子乎?”

有子曰:“其为人也孝弟,而好犯上者,鲜矣;不好犯上,而好作乱者,未之有也。君子务本,本立而道生。孝弟也者,其为人之本与?”

子曰:巧言令色,鲜仁矣。”

(略)
#参考代码 1
fi = open("论语-网络版.txt", "r", encoding="utf-8")
fo = open("论语-提取版.txt", "w")
wflag = False            #写标记
for line in fi:
    if "【" in line:     #遇到【时,说明已经到了新的区域,写标记置否
        wflag = False
    if "【原文】" in line:  #遇到【原文】时,设置写标记为True
        wflag = True
        continue    
    if wflag == True:    #根据写标记将当前行内容写入新的文件
        for i in range(0,25):
            for j in range(0,25):
                line = line.replace("{}·{}".format(i,j),"**")
        for i in range(0,10):
            line = line.replace("*{}".format(i),"")
        for i in range(0,10):
            line = line.replace("{}*".format(i),"")
        line = line.replace("*","")   
        fo.write(line)
fi.close()
fo.close()


#参考代码 2
fi = open("论语-提取版.txt", "r")
fo = open("论语-原文.txt", "w")
for line in fi:   #逐行遍历
    for i in range(1,23):  #对产生1到22数字 
        line=line.replace("({})".format(i), "")  #构造(i)并替换
    fo.write(line)
fi.close()
fo.close()

7.编写 Python 程序输出一个具有如下风格效果的文本,用作文本进度条样式,部分代码如下,填写空格处。

 10%@==
 20%@====
100%@====================

N = eval(input())   # N取值范围是0—100,整数
print("{:>3}%@{}".format(N,"="*(N//5)))

8.以论语中一句话作为字符串变量 s,补充程序,分别输出字符串 s 中汉字和标点符号的个数。

s = "学而时习之,不亦说乎?有朋自远方来,不亦乐乎?人不知而不愠,不亦君子乎?"
n = 0  # 汉字个数
m = 0  # 标点符号个数
____①____ # 在这里补充代码,可以多行
print("字符数为{},标点符号数为{}。".format(n, m))


s = "学而时习之,不亦说乎?有朋自远方来,不亦乐乎?人不知而不愠,不亦君子乎?"
n = 0  # 汉字个数
m = 0  # 标点符号个数
m = s.count(',') + s.count('?')
n = len(s) - m
print("字符数为{},标点符号数为{}。".format(n, m))

 9.使用程序计算整数 到整数 N+100 之间所有奇数的数值和,不包含 N+100,并将结果输出。整数 由用户给出,代码片段如下,补全代码。不判断输入异常。

N = input("请输入一个整数: ")
____①____ # 可以是多行代码

N = eval(input("请输入一个整数: "))
s = 0
for i in range(N,N+100):
    if i%2 == 1:
        s += i
print(s)

10.使用 turtle 库的 turtle.fd() 函数和 turtle.left() 函数绘制一个六边形,边长为 200 像素,效果如下图所示,请结合格式框架,补充横线处代码。

import turtle as t
for i in range(___①___):
    t.fd(___②___)
    t.left(___③___)

--------------------------------------------------------------------

import turtle as t
for i in range(6):
    t.fd(200)
    t.left(60)

 11.经常会有要求用户输入整数的计算需求,但用户未必一定输入整数。为了提高用户体验,编写 getInput() 函数处理这样的情况。请补充如下代码,如果用户输入整数,则直接输出整数并退出,如果用户输入的不是整数,则要求用户重新输入,直至用户输入整数为止。

def getInput():
  ____①____ # 可以是多行代码
  return ____②____  # 只能是单行代码
print(getInput())


def getInput():
    try:
        aaa = eval(input())
        while aaa!=int(aaa):
            aaa = eval(input("不是整数,请输入一个整数:"))
    except:
        return getInput()
    return aaa
print(getInput())

12.《天龙八部》是著名作家金庸的代表作之一,历时4年创作完成。该作品气势磅礴,人物众多,非常经典。这里给出一个《天龙八部》的网络版本,文件名为“天龙八部-网络版.txt”。

问题1:请编写程序,对这个《天龙八部》文本中出现的汉字和标点符号进行统计,字符与出现次数之间用冒号:分隔,输出保存到“天龙八部-汉字统计.txt”文件中,该文件要求采用 CSV 格式存储,参考格式如下(注意,不统计空格和回车字符):

天:100, 龙:110, 八:109, 部:10

(略)

问题2:请编写程序,对《天龙八部》文本中出现的中文词语进行统计,采用 jieba 库分词,词语与出现次数之间用冒号:分隔,输出保存到“天龙八部-词语统计.txt”文件中。参考格式如下(注意,不统计任何标点符号):

天龙:100, 八部:10

(略)
#参考代码 1
fi = open("天龙八部-网络版.txt", "r", encoding='utf-8')
fo = open("天龙八部-汉字统计.txt", "w", encoding='utf-8')
txt = fi.read()
d = {}
for c in txt:
    d[c] = d.get(c, 0) + 1
del d[' ']
del d['\n']
ls = []
for key in d:
    ls.append("{}:{}".format(key, d[key]))
fo.write(",".join(ls))
fi.close()
fo.close()


#参考代码 2
import jieba
fi = open("天龙八部-网络版.txt", "r", encoding='utf-8')
fo = open("天龙八部-词语统计.txt", "w", encoding='utf-8')
txt = fi.read()
words = jieba.lcut(txt)
d = {}
for w in words:
    d[w] = d.get(w, 0) + 1
del d[' ']
del d['\n']
ls = []
for key in d:
    ls.append("{}:{}".format(key, d[key]))
fo.write(",".join(ls))
fi.close()
fo.close()

13.根据输入字符串 s,输出一个宽度为 15 字符,字符串 s 居中显示,以“=”填充的格式。如果输入字符串超过 15 个字符,则输出字符串前 15 个字符。提示代码如下:

s = input()
print(____①____)

s = input()  # "请输入一个字符串:"
print("{:=^15}".format(s[0:15]))

14.根据斐波那契数列的定义,F(0)=0,F(1)=1, F(n)=F(n–1)+F(n–2)(n≥2),输出不大于 100 的序列元素,提示代码如下:

a,b = 0, 1
while ____①____:
    print(a, end = ",")
    a, b = ____②____

a, b = 0, 1
while a<=100:
    print(a, end=',')
    a, b = b, a + b

 15.如下是一个完整程序,根据提示代码完成如下任务,输出如“2020年10月10日10时10分10秒”样式的时间信息。

____①____
timestr = "2020-10-10 10:10:10"
t = time.strptime(timestr, "%Y-%m-%d %H:%M:%S")
print(time.strftime("____②____", t)

import time
timestr = "2020-10-10 10:10:10"
t = time.strptime(timestr, "%Y-%m-%d %H:%M:%S")
print(time.strftime("%Y年%m月%d日%H时%M分%S秒", t))

16.使用 turtle 库的 turtle.fd() 函数和 turtle.seth() 函数绘制一个等边三角形,边长为 200 像素,效果如下图所示。请结合程序整体框架,根据提示代码完成程序。

提示代码:

import turtle as t
for i in range(____①____):
    t.seth(____②____)
    t.fd(____③____)

import turtle as t
for i in range(3):
    t.seth(i * 120)
    t.fd(200)

17.编写代码完成如下功能:

(1)建立字典 d,包含内容是:"数学":101, "语文":202, "英语":203, "物理":204, "生物":206。

(2)向字典中添加键值对"化学":205。

(3)修改"数学"对应的值为 201。

(4)删除"生物"对应的键值对。

(5)按顺序打印字典 d 全部信息,参考格式如下(注意,其中冒号为英文冒号,逐行打印):

201:数学
202:语文
203:(略)

d = {"数学":101, "语文":202, "英语":203, "物理":204, "生物":206}
d["化学"] = 205
d["数学"] = 201
del d["生物"]
for key in d:
    print("{}:{}".format(d[key], key))

18.请编写程序,生成随机密码。具体要求如下:

(1)使用 random 库,采用 0x1010 作为随机数种子。

(2)密码 abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&* 中的字符组成。

(3)每个密码长度固定为 10 个字符。

(4)程序运行每次产生 10 个密码,每个密码一行。

(5)每次产生的 10 个密码首字符不能一样。

(6)程序运行后产生的密码保存在“随机密码.txt”文件中。

import random
random.seed(0x1010)
s = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*"
ls = []
excludes = ""
while len(ls) < 10:
    pwd = ""
    for i in range(10):
        pwd += s[random.randint(0, len(s)-1)]
    if pwd[0] in excludes:
        continue
    else:
        ls.append(pwd)
        excludes += pwd[0]

# 直接打印
print("\n".join(ls))

# 或写入文件
fo = open("随机密码.txt", "w")
fo.write("\n".join(ls))
fo.close()

猜你喜欢

转载自blog.csdn.net/msllws/article/details/82669532