Python-较为经典题目


Python 二级Python真题

题1 格式化字符串操作

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

—————1,234

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

题2 random生成随机数

随机选择一个手机品牌屏幕输出(华为,苹果,诺基亚,OPPO,小米)

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

题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))

题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)):W
    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

让用户输入一-串数字和字母混合的数据,然后统计其中数字和字母的个数,显示在屏幕上

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))

文章作者: Hui3c
版权声明: 本博客所有文章除特別声明外,均采用 CC BY-ND 4.0 许可协议。转载请注明来源 Hui3c !
  目录