Python考試題目

前文

       很多在校的学生,在学校学习计算机专业,都是需要通过不同的计算机考试等级证书的。我么今天来跟大家聊聊Python计算机二级考试。

Python考試題目

计算机二级的话这基本上是每个计算机专业的学生都是必备的考试。2021的全国计算机等级考试主要是分4次,小编下面将会介绍,不要错过了哈!!!

2021年计算机二级考试时间

2021年全国计算机等级考试(NCRE)将举办四次考试,时间分别为3月27日至29日(第60次)、5月29日至30日(第61次)、9月25日至27日(第62次)及12月4日至5日(第63次)。

Python考試題目

正文

考试真题及答案。主要是编程题目,选择填空这可以考虑。

要考试的小伙伴儿可自己试试。

题目1

键盘输入正整数n,按要求把n输出到屏幕,格式要求:宽度为20个字符,减号字符-填充,右对齐,带千位分隔符。如果输入正整数超过20位,则按照真实长度输出。例如:键盘输入正整数n为1234,屏幕输出---------------1,234

答案

n = eval(input("请输入正整数:"))
s = "{:->20,}".format(n)
print(s)

考察知识点:格式化字符串操作

题目2

随机选择一个手机品牌屏幕输出。

答案

import random
brandlist = ['华为','苹果','诺基亚','OPPO','小米']
random.seed(1)
i=random.randint(0,4)
name=brandlist[i]
print(name)

考察知识点:random生成随机数

题目3

从键盘输入4个数字,各数字采用空格分隔,对应为变量x0, y0,x1,y1。 计算两点(x0,y0) 和(x1,y1)之间的距离,例如:键盘输入:0135屏幕输出:5.00

答案

ntxt = input("请输入4个数字(空格分隔):")
nls=ntxt.split()
x0 = eval(nls[0])
y0 = eval(nls[1])
x1 = eval(nls[2])
y1 = eval(nls[3])
r = pow(pow(x1-x0, 2) + pow(y1-y0, 2), 0.5)
print("{:.2f}".format(r))

考察知识点:内置函数pow()用法

题目4

键盘输入字符串s,按要求把s输出到屏幕,格式要求:宽度为20个字符,等号字符=填充,居中对齐。如果输入字符串超过20位,则全部输出。

答案

s = input("请输入一个字符串:")
print("{:=^20}".format(s))

题目5

键盘输入正整数n,按要求把n输出到屏幕,格式要求:宽度为15个字符,数字右边对齐,不足部分用填充。例如:键盘输入正整数n为1234,屏幕输出1234

答案

n = eval(input("请输入正整数:"))
print("{:*>15}".format(n))

题目6

键盘输入正整数n,按要求把n输出到屏幕,格式要求:宽度为15个字符,数字右边对齐,不足部分用*填充。

n = eval(input("请输入正整数:"))
print("{:=^14}".format(n))

题目7

键盘输入正整数n,按要求把n输出到屏幕,格式要求:宽度为25个字符,等号字符(=)填充, 右对齐,带千位分隔符。

答案

n = eval(input("请输入正整数:"))
print("{:=>25,}".format(n))

题目8

获得用户输入的一个数字,对该数字以30字符宽度,十六进制,居中输出,字母小写,多余字符采用双引号(”)

答案

s = input()
print("{:\"^30x}".format(eval(s)))

题目9

完成如下功能.程序接收用户输入的五个数,以逗号分隔。将这些数字按照输入顺序输出,每个数字占10个字符宽度,右对齐,所有数字显示在同一行。

答案

num = input().split(',')
for i in num:
    print("{:>10}".format(i),end="")

题目10

接收用户输入的一一个小于20的正整数,在屏幕上逐行递增显示从01到该正整数,数字显示的宽度为2,不足位置补0,后面追加一个空格,然后显示'>’号,’>’号的个数等于行首数字。

答案

n = input('请输入一个正整数:')
for i in range(int(n)):
    print('{:0>2}{}'.format(i+1,">"*(i+1) ))

题目11

a和b是两个列表变量,列表a为[3, 6, 9]己给定,键盘输入列表b, 计算a中元素与b中对应元素乘积的累加和。例如:键盘输入列表b为[1,2,3],累加和为13+26+3*9=42,因此,屏幕输出计算结果为42

答案

a = [3,6,9]
b =  eval(input()) #例如:[1,2,3]
s = 0
for i in range(len(a)):
    s += a[i]*b[i]
print(s)

题目12

键盘输入一段文本,保存在一个字符串变量s中,分别用Python内置函数及jieba库中己有函数计算字符串s的中文字符个数及中文词语个数。 例如,键盘输入: 我罗斯举办世界杯 屏幕输出: 中文字符数为8,中文词语数为3

答案

import jieba
s = input("请输入一个字符串")
n = len(s)
m = len(jieba.lcut(s))
print("中文字符数为{},中文词语数为{}。".format(n, m))

题目13

键盘输入-段中文文本,不含标点符号和空格,命名为变量s,采用jieba库对其进行分词,输出该文本中词语的平均长度,保留1位小数。 例如:键盘输入:吃葡萄不吐葡萄皮 屏幕输出: 1.6

答案

import jieba
txt = input("请输入一段中文文本:")
ls = jieba.lcut(txt)
print("{:.1f}".format(len(txt)/len(ls)))

题目14

根据斐波那契数列的定义,F(0)=0, F(1)=1, F(n)=F(n-1)+F(n-2) (n>=2) ,输出不大于100的序列元素。 例如:屏幕输出实例为:0, 1, 1, 2,3, … (略)

答案

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

题目15

a和b是两个长度相同的列表变量,列表a为[3, 6, 9]己给定,键盘输入列表b, 计算a中元素与b中对应元素的和形成新的列表c,在屏幕上输出。例如:键盘输入列表b为[1, 2, 3], 屏幕输出计算结果为[4, 8, 12]

答案

a = [3,6,9]
b =  eval(input()) #例如:[1,2,3]
c = []
for i in range(3):
    c.append(a[i]+b[i])
print(c)

题目16

a和b是两个列表变量,列表a为[3, 6, 9]已给定,键盘输入列表b,将a列表的三个元素插入到b列表中对应的前三个元素的后面,并显示输出在屏幕上。 例如:键盘输入列表b为[1, 2,3], 因此,屏幕输出计算结果为[1,3,2, 6, 3, 9]

答案

a = [3,6,9]
b = eval(input()) #例如:[1,2,3]
j=1
for i in range(len(a)):
    b.insert(j,a[i])
    j+= 2
print(b)

题目17

获得用户输入的一一个字符串,将字符串逆序输出,同时紧接着输出字符串的个数

答案

s = input()
print(s[-1::-1])
print(len(s))

题目18

获得用户输入的一一个数字,其中数字字符(0到9)用对应的中文字符“O一二三四五六七八九”替换,输出替换后的结果。

答案

n = input()
s = "〇一二三四五六七八九"
for c in "0123456789":
     n=n.replace(c,s[int(c):int(c)+1])
print(n)

题目19

在考生文件夹下有个文件PY102. py,在横线处填写代码,完成如下功能。让用户输入一-串数字和字母混合的数据,然后统计其中数字和字母的个数,显示在屏幕上。

答案

ns = input("请输入一串数据:")
dnum,dchr = 0,0  #双变量赋值方式
for i in ns:
    if i.isnumeric(): #如果是数字字符
        dnum += 1
    elif i.isalpha():
        dchr += 1
    else:
        pass  #空语句,为了保持程序结构的完整性,用于占位
print('数字个数:{},字母个数:{}'.format(dnum,dchr))

题目20

以123为随机数种子,随机生成10个在1 (含)到999 (含)之间的随机数,每个随机数后跟随一一个逗号进行分隔,屏幕输出这10个随机数。

答案

import random
random.seed(123)
for i in range(10):
    print(random.randint(1,1000), end=",")

题目21

某商店出售某品牌运动鞋,每双定价160,1双不打折,2双(含)到4双(含)打九折,5双(含)到9双(含)打八折,10双(含)以上打七折,键盘输入购买数量,屏幕输出总额(保留整数)。示例格式如下: 输入: 1 输出:总额为:160

答案

n = eval(input("请输入数量:"))
if n>=10:
    cost = n * 160 * 0.7
elif n>=5:
    cost = n * 160 * 0.8
elif n>=2:
    cost = n * 160 * 0.9
else:
    cost = 160
cost = int(cost)
print("总额为:",cost)

题目22

键盘输入一个9800到9811之间的正整数n,作为unicode编码,把n-1、n和n+1三个Uni代码编码对应字符按照如下格式要求输出到屏幕:宽度为11个字符,加号字符+填充,居中。 例如:键盘输入: 9802 屏幕输出: +++??++++

答案

n = eval(input("请输入一个数字:"))
print("{:+^11}".format(chr(n-1)+chr(n)+chr(n+1)))

题目23

键盘输入一句话,用jieba分词后,将切分的词组按照在原话中逆序输出到屏幕上,词组中间没有空格。示例如下: 输入: 我爱妈妈 输出: 妈妈爱我

答案

import jieba
txt = input("请输入一段中文文本:")
ls=jieba.lcut(txt)
for i in ls[::-1]:
    print(i,end='')

题目24

以0为随机数种子,随机生成5个在1 (含)到97(含)之间的随机数,计算这五个随机数的平方和。

答案

import random
random.seed(0)
s = 0
for i in range(5):
    n = random.randint(1,97)  # 产生随机数
    s = s+n**2
print(s)

题目25

以100为随机数种子, 随机生成3个在1(含)到9(含)之间的随机数,计算这三个随机数的 立方和。

答案

import random
random.seed(100)  # 此处可多行
s = 0  # 
for i in range(3):
    n=random.randint(1,9)
    s=s+n**3# 此处可多行
print(s)

题目26

获得用户输入的以逗号分隔的三个数字,记为a、b、c,以a为起始数值,b为差,c为数值的数量,产生-一个递增的等差数列,将这个数列以列表格式输出。

答案

a, b, c = eval(input())
ls = []
for i in range(c):
    ls.append(a+b*i)
print(ls)

题目27

获得用户输入的以逗号分隔的三个数字,记为a、b、c,以a为起始数值,b为前后相邻数的比值,c为数列长度,产生一个等比数列,将这个数列以逗号分隔的形式输出,最后-一个元素输出后无逗号。

答案

a, b, c = eval(input())
ls = []
for i in range(c):
    ls.append(str(a*(b**i)))
print(",".join(ls))

题目28

程序接收用户输入的-一个数字并判断是否为正整数,如果不是正整数,则显示“请输入正整数”并等待用户重新输入,直至输入正整数为止,并显示输出该正整数.例如: 输入: 请输入一个正整数:357 输出: 357

答案

while True:
    try:
        a = eval(input('请输入一个正整数: '))    
        if a > 0 and int(a)==a:
            print(a)
            break
        else:
            print("请输入正整数")
    except:
        print("请输入正整数")

题目29

将程序里定义好的std列表里的姓名和成绩与已经定义好的模板拼成一 段话,显示在屏幕上。例如: 亲爱的张三,你的考试成绩是:英语90,数字87, Python语言95,总成绩272.特此通知。

答案

std = [['张三',90,87,95],['李四',83,80,87],['王五',73,57,55]]
modl = "亲爱的{}, 你的考试成绩是: 英语{}, 数学{}, Python语言{}, 总成绩{}.特此通知."
​
for st in std:
    cnt = 0   #总成绩初始值
    for i in range(3): #循环三科成绩
        cnt += st[i+1] #成绩求和
    print(modl.format(st[0],st[1],st[2],st[3],cnt))

题目30

社会平均工作时间是每天8小时(不区分工作日和休息日),- -位计算机科学家接受记者采访时说,他每天工作时间比社会平均工作时间多3小时。如果这位科学家的当下成就值是1,假设每工作1小时成就值增加0. 01%, 计算并输出两个结果:这位科学家5年后的成就值,以及达到成就值100所需要的年数。其中,成就值和年数都以整数表示,每年以365天计算。

输出格式示例如下:

5年,后的成就值是XXX

XX年后成就值是100

答案

scale = 0.0001  # 成就值增量
​
def calv(base, day):
    val = base * pow((1+scale),day*11)
    return val
​
print('5年后的成就值是{}'.format(int(calv(1, 5*365))))
      
year = 1
while calv(1, year*365) < 100:
    year += 1
    
print('{}年后成就值是100'.format(year))