【蓝桥杯简单篇】Python组刷题日寄Part02

刷题日记?刷题日寄!
萌新备战蓝桥杯python组
🌹 发现有需要纠正的地方,烦请指正!
🚀 欢迎小伙伴们的三连+关注!

往期系列:
【蓝桥杯简单篇】Python组刷题日寄Part01

简单篇02

第01题:数组查找及替换

题目:
时间限制:
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))

第02题:提货单

题目:
时间限制:
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)

第03题:学生成绩

题目:
时间限制:
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)

第04题:友好数

题目:
时间限制:
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')

第05题:反置数

题目:
时间限制:
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))

第06题:字符删除

题目:
时间限制:
1s
内存限制:
128MB
题目描述:
编写一个程序,先输入一个字符串str(长度不超过20),再输入单独的一个字符ch,然后程序会把字符串str当中出现的所有的ch字符都删掉,从而得到一个新的字符串str2,然后把这个字符串打印出来。
输入描述:
输入有两行,第一行是一个字符串(内部没有空格),第二行是一个字符。
输出描述:
输入有两行,第一行是一个字符串(内部没有空格),第二行是一个字符。
样例输入:
123 − 45 − 678 123-45-678 12345678
− -
样例输出:
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)

第07题:完数

题目:
时间限制:
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')

第08题:数的统计

题目:
时间限制:
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)))

第09题:数对

题目:
时间限制:
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))

第10题:数位分类

题目:
时间限制:
1s
内存限制:
128MB
题目描述:
编写一个程序,输入一个1000 以内的正整数,然后把这个整数的每一位数字都分离出来,并逐一地显示。
输入描述:
输入只有一行,即一个1000以内的正整数。
输出描述:
输出只有一行,即该整数的每一位数字,之间用空格隔开。
样例输入:
769
样例输出:
7 6 9


答案:

分析:
join()函数

a = map(str, input())
print(' '.join(a))

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

四口鲸鱼爱吃盐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值