最近有朋友在后台咨询关于Python计算机二级的题目,整理如下,供大家参考。总共三篇(基础题)
如果还没有购买题库的朋友,推荐无忧考吧的题库。
祝大家一次性过二级(二级真的不难,只要把题目刷了,问题不大)
基础题30道
题目1
键盘输入正整数n,按要求把n输出到屏幕,格式要求:宽度为20个字符,减号字符-填充,右对齐,带千位分隔符。如果输入正整数超过20位,则按照真实长度输出。例如:键盘输入正整数n为1234,屏幕输出---------------1,234
答案
1n = eval(input("请输入正整数:"))
2s = "{:->20,}".format(n)
3print(s)
考察知识点:格式化字符串操作
题目2
随机选择一个手机品牌屏幕输出。
答案
1import random
2brandlist = ['华为','苹果','诺基亚','OPPO','小米']
3random.seed(1)
4i=random.randint(0,4)
5name=brandlist[i]
6print(name)
考察知识点:random生成随机数
题目3
从键盘输入4个数字,各数字采用空格分隔,对应为变量x0, y0,x1,y1。计算两点(x0,y0) 和(x1,y1)之间的距离,例如:键盘输入:0135屏幕输出:5.00
答案
1ntxt = input("请输入4个数字(空格分隔):")
2nls=ntxt.split()
3x0 = eval(nls[0])
4y0 = eval(nls[1])
5x1 = eval(nls[2])
6y1 = eval(nls[3])
7r = pow(pow(x1-x0, 2) + pow(y1-y0, 2), 0.5)
8print("{:.2f}".format(r))
考察知识点:内置函数pow()用法
题目4
键盘输入字符串s,按要求把s输出到屏幕,格式要求:宽度为20个字符,等号字符=填充,居中对齐。如果输入字符串超过20位,则全部输出。
答案
1s = input("请输入一个字符串:")
2print("{:=^20}".format(s))
题目5
键盘输入正整数n,按要求把n输出到屏幕,格式要求:宽度为15个字符,数字右边对齐,不足部分用填充。例如:键盘输入正整数n为1234,屏幕输出1234
答案
1n = eval(input("请输入正整数:"))
2print("{:*>15}".format(n))
题目6
键盘输入正整数n,按要求把n输出到屏幕,格式要求:宽度为15个字符,数字右边对齐,不足部分用*填充。
1n = eval(input("请输入正整数:"))
2print("{:=^14}".format(n))
题目7
键盘输入正整数n,按要求把n输出到屏幕,格式要求:宽度为25个字符,等号字符(=)填充, 右对齐,带千位分隔符。
答案
1n = eval(input("请输入正整数:"))
2print("{:=>25,}".format(n))
题目8
获得用户输入的一个数字,对该数字以30字符宽度,十六进制,居中输出,字母小写,多余字符采用双引号(”)
答案
1s = input()
2print("{:\"^30x}".format(eval(s)))
题目9
完成如下功能.程序接收用户输入的五个数,以逗号分隔。将这些数字按照输入顺序输出,每个数字占10个字符宽度,右对齐,所有数字显示在同一行。
答案
1num = input().split(',')
2for i in num:
3 print("{:>10}".format(i),end="")
题目10
接收用户输入的一一个小于20的正整数,在屏幕上逐行递增显示从01到该正整数,数字显示的宽度为2,不足位置补0,后面追加一个空格,然后显示'>’号,’>’号的个数等于行首数字。
答案
1n = input('请输入一个正整数:')
2for i in range(int(n)):
3 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
答案
1a = [3,6,9]
2b = eval(input()) #例如:[1,2,3]
3s = 0
4for i in range(len(a)):
5 s += a[i]*b[i]
6print(s)
题目12
键盘输入一段文本,保存在一个字符串变量s中,分别用Python内置函数及jieba库中己有函数计算字符串s的中文字符个数及中文词语个数。
例如,键盘输入:
我罗斯举办世界杯
屏幕输出:
中文字符数为8,中文词语数为3
答案
1import jieba
2s = input("请输入一个字符串")
3n = len(s)
4m = len(jieba.lcut(s))
5print("中文字符数为{},中文词语数为{}。".format(n, m))
题目13
键盘输入一段中文文本,不含标点符号和空格,命名为变量s,采用jieba库对其进行分词,输出该文本中词语的平均长度,保留1位小数。
例如:键盘输入:吃葡萄不吐葡萄皮
屏幕输出: 1.6
答案
1import jieba
2txt = input("请输入一段中文文本:")
3ls = jieba.lcut(txt)
4print("{:.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, … (略)
答案
1a, b = 0, 1
2while a<=100:
3 print(a, end=',')
4 a, b = b,a+b
题目15
a和b是两个长度相同的列表变量,列表a为[3, 6, 9]己给定,键盘输入列表b, 计算a中元素与b中对应元素的和形成新的列表c,在屏幕上输出。例如:键盘输入列表b为[1, 2, 3], 屏幕输出计算结果为[4, 8, 12]
答案
1a = [3,6,9]
2b = eval(input()) #例如:[1,2,3]
3c = []
4for i in range(3):
5 c.append(a[i]+b[i])
6print(c)
题目16
a和b是两个列表变量,列表a为[3, 6, 9]已给定,键盘输入列表b,将a列表的三个元素插入到b列表中对应的前三个元素的后面,并显示输出在屏幕上。
例如:键盘输入列表b为[1, 2,3], 因此,屏幕输出计算结果为[1,3,2, 6, 3, 9]
答案
1a = [3,6,9]
2b = eval(input()) #例如:[1,2,3]
3j=1
4for i in range(len(a)):
5 b.insert(j,a[i])
6 j+= 2
7print(b)
题目17
获得用户输入的一一个字符串,将字符串逆序输出,同时紧接着输出字符串的个数
答案
1s = input()
2print(s[-1::-1])
3print(len(s))
题目18
获得用户输入的一一个数字,其中数字字符(0到9)用对应的中文字符“O一二三四五六七八九”替换,输出替换后的结果。
答案
1n = input()
2s = "〇一二三四五六七八九"
3for c in "0123456789":
4 n=n.replace(c,s[int(c):int(c)+1])
5print(n)
题目19
让用户输入一-串数字和字母混合的数据,然后统计其中数字和字母的个数,显示在屏幕上。
答案
1ns = input("请输入一串数据:")
2dnum,dchr = 0,0 #双变量赋值方式
3for i in ns:
4 if i.isnumeric(): #如果是数字字符
5 dnum += 1
6 elif i.isalpha():
7 dchr += 1
8 else:
9 pass #空语句,为了保持程序结构的完整性,用于占位
10print('数字个数:{},字母个数:{}'.format(dnum,dchr))
题目20
以123为随机数种子,随机生成10个在1 (含)到999 (含)之间的随机数,每个随机数后跟随一一个逗号进行分隔,屏幕输出这10个随机数。
答案
1import random
2random.seed(123)
3for i in range(10):
4 print(random.randint(1,1000), end=",")
题目21
某商店出售某品牌运动鞋,每双定价160,1双不打折,2双(含)到4双(含)打九折,5双(含)到9双(含)打八折,10双(含)以上打七折,键盘输入购买数量,屏幕输出总额(保留整数)。示例格式如下:
输入: 1
输出:总额为:160
答案
1n = eval(input("请输入数量:"))
2if n>=10:
3 cost = n * 160 * 0.7
4elif n>=5:
5 cost = n * 160 * 0.8
6elif n>=2:
7 cost = n * 160 * 0.9
8else:
9 cost = 160
10cost = int(cost)
11print("总额为:",cost)
题目22
键盘输入一个9800到9811之间的正整数n,作为unicode编码,把n-1、n和n+1三个Uni代码编码对应字符按照如下格式要求输出到屏幕:宽度为11个字符,加号字符+填充,居中。
例如:键盘输入: 9802 屏幕输出: +++??++++
答案
1n = eval(input("请输入一个数字:"))
2print("{:+^11}".format(chr(n-1)+chr(n)+chr(n+1)))
题目23
键盘输入一句话,用jieba分词后,将切分的词组按照在原话中逆序输出到屏幕上,词组中间没有空格。示例如下:
输入:
我爱妈妈
输出:
妈妈爱我
答案
1import jieba
2txt = input("请输入一段中文文本:")
3ls=jieba.lcut(txt)
4for i in ls[::-1]:
5 print(i,end='')
题目24
以0为随机数种子,随机生成5个在1 (含)到97(含)之间的随机数,计算这五个随机数的平方和。
答案
1import random
2random.seed(0)
3s = 0
4for i in range(5):
5 n = random.randint(1,97) # 产生随机数
6 s = s+n**2
7print(s)
题目25
以100为随机数种子, 随机生成3个在1(含)到9(含)之间的随机数,计算这三个随机数的 立方和。
答案
1import random
2random.seed(100) # 此处可多行
3s = 0 #
4for i in range(3):
5 n=random.randint(1,9)
6 s=s+n**3# 此处可多行
7print(s)
题目26
获得用户输入的以逗号分隔的三个数字,记为a、b、c,以a为起始数值,b为差,c为数值的数量,产生一个递增的等差数列,将这个数列以列表格式输出。
答案
1a, b, c = eval(input())
2ls = []
3for i in range(c):
4 ls.append(a+b*i)
5print(ls)
题目27
获得用户输入的以逗号分隔的三个数字,记为a、b、c,以a为起始数值,b为前后相邻数的比值,c为数列长度,产生一个等比数列,将这个数列以逗号分隔的形式输出,最后-一个元素输出后无逗号。
答案
1a, b, c = eval(input())
2ls = []
3for i in range(c):
4 ls.append(str(a*(b**i)))
5print(",".join(ls))
题目28
程序接收用户输入的-一个数字并判断是否为正整数,如果不是正整数,则显示“请输入正整数”并等待用户重新输入,直至输入正整数为止,并显示输出该正整数.例如:
输入:
请输入一个正整数:357
输出:
357
答案
1while True:
2 try:
3 a = eval(input('请输入一个正整数: '))
4 if a > 0 and int(a)==a:
5 print(a)
6 break
7 else:
8 print("请输入正整数")
9 except:
10 print("请输入正整数")
题目29
将程序里定义好的std列表里的姓名和成绩与已经定义好的模板拼成一 段话,显示在屏幕上。例如:
亲爱的张三,你的考试成绩是:英语90,数字87, Python语言95,总成绩272.特此通知。
答案
1std = [['张三',90,87,95],['李四',83,80,87],['王五',73,57,55]]
2modl = "亲爱的{}, 你的考试成绩是: 英语{}, 数学{}, Python语言{}, 总成绩{}.特此通知."
3
4for st in std:
5 cnt = 0 #总成绩初始值
6 for i in range(3): #循环三科成绩
7 cnt += st[i+1] #成绩求和
8 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
答案
1scale = 0.0001 # 成就值增量
2
3def calv(base, day):
4 val = base * pow((1+scale),day*11)
5 return val
6
7print('5年后的成就值是{}'.format(int(calv(1, 5*365))))
8
9year = 1
10while calv(1, year*365) 100:
11 year += 1
12
13print('{}年后成就值是100'.format(year))