刷题日记?刷题日寄!
萌新备战蓝桥杯python组
发现有需要纠正的地方,烦请指正!
欢迎小伙伴们的三连+关注!
往期系列:
【蓝桥杯简单篇】Python组刷题日寄Part01
简单篇02
题目:
时间限制:
1s
内存限制:
128MB
题目描述:
给定某整数数组和某一整数b。要求删除数组中可以被b整除的所有元素,同时将该数组各元素按从小到大排序。如果数组元素数值在A到Z的ASCII之间,替换为对应字母。
输入描述:
第一行为数组元素个数和整数b
第二行为数组各个元素
元素个数不超过100,b在1至100之间。
输出描述:
按照要求输出
样例输入:
7 2
77 11 66 22 44 33 55
样例输出:
11 33 55 M
答案:
分析:
del()
函数,ord()
函数,最后转化为字符输出
n, b = map(int, input().split())
lis = list(map(int, input().split()))
lis.sort()
for i in range(n-1, -1, -1):
if lis[i]%b==0:
del lis[i]
elif lis[i]>=ord('A') and lis[i]<=ord('Z'):
lis[i] = chr(lis[i])
else:
lis[i] = str(lis[i])
print(' '.join(lis))
题目:
时间限制:
1s
内存限制:
128MB
题目描述:
有一份提货单,其数据项目有:商品名(MC)、单价(DJ)、数量(SL),输入每个元素的值,计算并输出提货单的总金额。
输入描述:
第一行是数据项个数N(N< 100),接下来每一行是一个数据项。商品名是长度不超过100的字符串,单价为double类型,数量为整型。
输出描述:
总金额。
样例输入:
4
book 12.5 3
pen 2.5 10
computer 3200 1
flower 47 5
样例输出:
3497.500000
答案:
分析:
最后格式化输出,保留6位小数。
N = int(input())
inf = []
for i in range(N):
inf.append(list(input().split()))
sum = 0
for i in inf:
sum += float(i[1])*float(i[2])
print('%.6f' % sum)
题目:
时间限制:
1s
内存限制:
128MB
题目描述:
定义一个学生结构体类型student,包括4个字段,姓名、性别、年龄和成绩。然后在主函数中定义一个结构体数组(长度不超过1000),并输入每个元素的值,将学生按照成绩从小到大的顺序排序,然后输出排序的结果。
输入描述:
第一行是一个整数N(N< 1000),表示元素个数;接下来N行每行描述一个元素,姓名、性别都是长度不超过20的字符串,年龄和成绩都是整型。
输出描述:
按成绩从小到大输出所有元素,若多个学生成绩相同则成绩相同的同学之间保留原来的输入顺序。
样例输入:
3
Alice female 18 98
Bob male 19 90
Miller male 17 92
样例输出:
Bob male 19 90
Miller male 17 92
Alice female 18 98
答案:
分析:
定义student
类,sorted(key=lambda)
函数
class student:
def __init__(self, name, sex, age, score):
self.name = name
self.sex = sex
self.age = age
self.score = score
N = int(input())
inf = []
for i in range(N):
s = input().split()
inf.append(student(s[0], s[1], s[2], s[3]))
inf = sorted(inf, key=lambda x:x.score)
for i in inf:
print(i.name, i.sex, i.age, i.score)
题目:
时间限制:
1s
内存限制:
128MB
题目描述:
有两个整数,如果每个整数的约数和(除了它本身以外)等于对方,我们就称这对数是友好的。例如:
9的约数和有:1+3=4
4的约数和有:1+2=3
所以9和4不是友好的。
220的约数和有:1+2+4+5+10+11+20+22+44+55+110=284
284的约数和有:1+2+4+71+142=220
所以220和284是友好的。
编写程序,判断两个数是否是友好数。
输入描述:
一行,两个整数,由空格分隔;
数据规模和约定:
两个整数都小于10000
输出描述:
如果是友好数,输出" yes" ,否则输出" no" ,注意不包含引号。
样例输入:
220 284
样例输出:
yes
答案:
分析:
无
a, b = map(int, input().split())
sum1 = 0
sum2 = 0
for i in range(1, a):
if a%i==0:
sum1 += i
for j in range(1, b):
if b%j==0:
sum2 += j
if sum1==b and sum2==a:
print('yes')
else:
print('no')
题目:
时间限制:
1s
内存限制:
128MB
题目描述:
一个整数的“反置数”指的是把该整数的每一位数字的顺序颠倒过来所得到的另一个整数。如果一个整数的末尾是以0结尾,那么在它的反置数当中,这些0就被省略掉了。比如说,1245的反置数是 5421,而1200的反置数是21。请编写一个程序,输入两个整数,然后计算这两个整数的反置数之和sum,然后再把sum的反置数打印出来。要求:由于在本题中需要多次去计算一个整数的反置数,因此必须把这部分代码抽象为一个函数的形式。
输入描述:
输入只有一行,包括两个整数,中间用空格隔开。
输出描述:
输出只有一行,即相应的结果。
样例输入:
435 754
样例输出:
199
答案:
分析:
先转换为str,逆置后转换为int
def func(num):
num = [i for i in str(num)]
return int(''.join(num[::-1]))
a, b = map(int, input().split())
sum = func(a)+func(b)
print(func(sum))
题目:
时间限制:
1s
内存限制:
128MB
题目描述:
编写一个程序,先输入一个字符串str(长度不超过20),再输入单独的一个字符ch,然后程序会把字符串str当中出现的所有的ch字符都删掉,从而得到一个新的字符串str2,然后把这个字符串打印出来。
输入描述:
输入有两行,第一行是一个字符串(内部没有空格),第二行是一个字符。
输出描述:
输入有两行,第一行是一个字符串(内部没有空格),第二行是一个字符。
样例输入:
123 − 45 − 678 123-45-678 123−45−678
− - −
样例输出:
12345678 12345678 12345678
答案:
分析:
strip()
函数,replace()
函数
s = str(input().strip())
ch = str(input().strip())
for i in s:
if i==ch:
s = s.replace(i, '')
print(s)
题目:
时间限制:
1s
内存限制:
128MB
题目描述:
一个数如果恰好等于它的因子之和,这个数就称 为“完数”。例如,6的因子为1、2、3,而6=1+2+3,因此6就是“完数”。又如,28的因子为1、2、4、7、14,而 28=1+2+4+7+14,因此28也是“完数”。编写一个程序,判断用户输入的一个数是否为“完数”。
输入描述:
输入只有一行,即一个整数。
输出描述:
输出只有一行,如果该数为完数,输出yes,否则输出no。
样例输入:
6
样例输出:
yes
答案:
分析:
无
num = int(input())
lis = []
for i in range(1, num):
if num%i==0:
lis.append(i)
if sum(lis)==num:
print('yes')
else:
print('no')
题目:
时间限制:
1s
内存限制:
128MB
题目描述:
在一个有限的正整数序列中,有些数会多次重复出现在这个序列中。
如序列:3,1,2,1,5,1,2。其中1就出现3次,2出现2次,3出现1 次,5出现1次。
你的任务是对于给定的正整数序列,从小到大依次输出序列中出现的数及出现的次数。
输入描述:
第一行正整数n,表示给定序列中正整数的个数。
第二行是n个用空格隔开的正整数x,代表给定的序列。
数据规模和约定:
数据:n< =1000;0< x< =1000,000。
输出描述:
若干行,每行两个用一个空格隔开的数,第一个是数列中出现的数,第二个是该数在序列中出现的次数。
样例输入:
12
8 2 8 2 2 11 1 1 8 1 13 13
样例输出:
1 3
2 3
8 3
11 1
13 2
答案:
分析:
列表,sort()
函数,集合,格式化输出
n = int(input())
num = list(map(int, input().split()))
num.sort()
s = set(num)
for i in s:
print('%d %d' % (i, num.count(i)))
题目:
时间限制:
1s
内存限制:
128MB
题目描述:
编写一个程序,该程序从用户读入一个整数,然后列出所有的数对,每个数对的乘积即为该数。
输入描述:
输入只有一行,即一个整数。
输出描述:
输出有若干行,每一行是一个乘法式子。(注意:运算符号与数字之间有一个空格)
样例输入:
32
样例输出:
1 * 32 = 32
2 * 16 = 32
4 * 8 = 32
8 * 4 = 32
16 * 2 = 32
32 * 1 = 32
答案:
分析:
无
num = int(input())
for i in range(1,num+1):
if num%i==0:
print(str(i)+" * "+str(int(num/i))+" = "+str(num))
题目:
时间限制:
1s
内存限制:
128MB
题目描述:
编写一个程序,输入一个1000 以内的正整数,然后把这个整数的每一位数字都分离出来,并逐一地显示。
输入描述:
输入只有一行,即一个1000以内的正整数。
输出描述:
输出只有一行,即该整数的每一位数字,之间用空格隔开。
样例输入:
769
样例输出:
7 6 9
答案:
分析:
join()
函数
a = map(str, input())
print(' '.join(a))