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

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

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

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

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

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

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

简单篇06

第01题:删除数组中的0元素

题目:
时间限制:
1s
内存限制:
128MB
题目描述:
编写函数,删除数组中所有值为0的元素,其后元素向数组首端移动。
输入时首先读入数组长度,再依次读入每个元素。
将调用此函数后得到的数组和函数返回值输出。
输入描述:
第一行一个数,表示数组个数
第二行为每个数字,空格分开
输出描述:
输出处理后的数字以及个数,各占一行
样例输入:
7
2 0 4 3 0 0 5
样例输出:
2 4 3 5
4


答案:

分析:

n = int(input())
num = list(map(int, input().split()))
def func(n, num):
    tag = 0
    for i in num:
        if i!=0:
            print(i, end=' ')
            tag += 1
    print()
    print(tag)
func(n, num)

第02题:数组替换

题目:
时间限制:
1s
内存限制:
128MB
题目描述:
编写并测试如下函数:
void Add (int a[], int m, int b[], int n);
该函数将数组 b 的前 n 个元素追加到数组 a 的前 m 个元素后,假定数组 a 具有至少存放 m+n 个元素的空间。例如,如果数组 a{22,33,44,55,66,77,88,99},数组 b{20,30,40,50,60,70,80,90},则调用 Add(a,5,b,3) 后,将把数组 a 变为 {22,33,44,55,66,20,30,40} 。注意数组 b 并没有改变,而且数组 a 中只需改变 n 个元素。
输入描述:
4行。第一行为两个整数:m,n,并以空格隔开,分别表示将要输入的数组 a 和数组 b 的元素的个数。第二行为 m 个整数,为数组 a 的元素;第三行为 n 个整数,为数组 b 的元素。第四行为两个整数 m1,n1,表示把数组 b 的前 n1 个元素追加到数组 a 的前 m1 个元素后。
输出描述:
1行。为最后数组 a 中的元素,两个元素之间以逗号隔开。最后一个元素没有
样例输入:
8 8
1 2 3 4 5 6 7 8
9 10 11 12 13 14 15 16
4 5
样例输出:
1,2,3,4,9,10,11,12,13


答案:

分析:
注意最后要判断 m1 + n1 < m,若为 True,则需要补上 a 的第 m1 + n1 之后的元素。

m, n = map(int, input().split())
a = list(input().split())
b = list(input().split())
m1, n1 = map(int, input().split())
result = a[0:m1] + b[0:n1]
if m1 + n1 < m:
    result.extend(a[m1+n1:])
print(','.join(result))

第03题:任意年月日历输出

题目:
时间限制:
1s
内存限制:
128MB
题目描述:
已知2007年1月1日为星期一。
设计一函数按照下述格式打印2007年以后(含)某年某月的日历,2007年以前的拒绝打印。
为完成此函数,设计必要的辅助函数可能也是必要的。其中输入为年分和月份。

注意:短线“-”个数要与题目中一致,否则系统会判为错误。
输入描述:
年月和月份
输出描述:

样例输入:
2010 9
样例输出:

---------------------
 Su Mo Tu We Th Fr Sa
---------------------
           1  2  3  4
  5  6  7  8  9 10 11
 12 13 14 15 16 17 18
 19 20 21 22 23 24 25
 26 27 28 29 30
---------------------

答案:

分析:
利用 calendar

import calendar as cld
y, m = map(int, input().split())
cld.setfirstweekday(firstweekday=6)
result = cld.month(y, m)
result = result.split('\n')
print('---------------------')
print(' ' + result[1])
print('---------------------')
for i in result[2:-1]:
    print(' ' + i)
print('---------------------')

第04题:寻找矩阵最值

题目:
时间限制:
1s
内存限制:
128MB
题目描述:
输入一个正整数 n ( 1 ≤ n ≤ 6 ) n(1≤ n ≤6) n(1n6),再输入一个 n n n n n n 列的矩阵,找出该矩阵中绝对值最大的元素以及它的行下标和列下标。
输入描述:
n
nxn
输出描述:
数 行 列
样例输入:
2
1 2
3 4
样例输出:
4 2 2


答案:

分析:
对输入的每行数据操作,选出最大值,并确定坐标,以元组形式存入列表中,并用 list.sort(key=lambda) 实现排序后输出目标值。

n = int(input())
ma = []
for i in range(1, n+1):
    lis = list(map(int, input().split()))
    a = max(lis)
    ma.append((a, i, lis.index(a)+1))
ma.sort(key=lambda x:x[0])
for i in ma[-1]:
    print(i, end=' ')

第05题:成绩归类

题目:
时间限制:
1s
内存限制:
128MB
题目描述:
编写程序,输入一批学生的成绩,遇0或负数则输入结束,要求统计并输出优秀(大于85)、通过(60~84)和不及格(小于60)的学生人数。
输入描述:
一批学生成绩,遇0结束
输出描述:
输出各个成绩段的人数
样例输入:
88 71 68 70 59 81 91 42 66 77 83 0
样例输出:

>=85:2
60-84:7
<60:2

答案:

分析:
本题需要注意输入遇到 0 或者负数时输入结束

s = list(map(int, input().split()))
while min(s)>0:            # 遇0或负数则输入结束
    s.extend(list(map(int,input().split())))
a = b = c = 0
for i in s:
    if i >= 85:
        a += 1
    elif 60 <= i < 85:
        b += 1
    elif 0 < i <60:
        c += 1
    else:
        break
print(f""">=85:{a}
60-84:{b}
<60:{c}""")

第06题:斜率计算

题目:
时间限制:
1s
内存限制:
128MB
题目描述:
输入两个点的坐标,即 p 1 = ( x 1 , y 1 ) p1 = (x1, y1) p1=(x1,y1) p 2 = ( x 2 , y 2 ) p2=(x2, y2) p2=(x2,y2),求过这两个点的直线的斜率。如果斜率为无穷大输出“INF”。
输入描述:
两个点的坐标,各占一行,都为整数
x1,y1
x2,y2
输出描述:
两个点组成直线的斜率(都为整数),无穷大则输出“INF”。
样例输入:
1 2
1 4
样例输出:
INF


答案:

分析:

x1, y1 = map(int, input().split())
x2, y2 = map(int, input().split())
if x1 == x2:
    print('INF')
else:
    print(int((y2-y1)/(x2-x1)))

第07题:新生舞会

题目:
时间限制:
1s
内存限制:
128MB
题目描述:
新生舞会开始了。n名新生每人有三个属性:姓名、学号、性别。其中,姓名用长度不超过20的仅由大小写字母构成的字符串表示,学号用长度不超过10的仅由数字构成的字符串表示,性别用一个大写字符‘F’或‘M’表示。任意两人的姓名、学号均互不相同。换言之,每个人可被其姓名或学号唯一确定。给出m对两人的信息(姓名或学号),判断他们是否能共舞。两人能共舞的充要条件为两人性别相异。

提示:
可以把名字和学号都当成字符串处理。
输入描述:
第一行一个整数 n ( 2 ≤ n ≤ 1000 ) n(2\leq n\leq 1000) n(2n1000),表示学生人数。接下来的n行每行依次包含一名新生的姓名、学号、性别,分别用一个空格隔开。
之后的一行是一个整数 m ( 1 ≤ m ≤ 1000 ) m(1\leq m\leq 1000) m(1m1000),表示询问的数目。接着的m行每行包含两个信息(姓名或学号),保证两个信息不属于同一人,中间用一个空格隔开。
输出描述:
对于每个询问输出一行,如果两人可以共舞,输出一个大写字母‘Y’,否则输出一个大写字母‘N’。
样例输入:
4
John 10 M
Jack 11 M
Kate 20 F
Jim 21 M
3
John 11
20 Jack
Jim Jack
样例输出:
N
Y
N


答案:

分析:
利用字典。

n = int(input())
dic = {}
for i in range(n):
    name, ID, gender = input().split()
    dic[name] = gender
    dic[ID] = gender
m = int(input())
lis = []
for i in range(m):
    temp = list(input().split())
    lis.append(temp)
for i in lis:
    if dic[i[0]] != dic[i[1]]:
        print('Y')
    else:
        print('N')

第08题:最长字符串

题目:
时间限制:
1s
内存限制:
128MB
题目描述:
字符串可是比赛经常出的问题,那么给大家出一个题,输入五个字符串,输出5个字符串当中最长的字符串。每个字符串长度在100以内,且全为小写字母。
输入描述:
五行字符串,共占一行
输出描述:
最长的字符串
样例输入:
one two three four five
样例输出:
three


答案:

分析:

strlist = list(input().split())
MAX = 0
result = ''
for i in strlist:
    if len(i) > MAX:
        result = i
        MAX = len(i)
print(result)

第09题:刷题统计

题目:
时间限制:
1s
内存限制:
128MB
题目描述:
小明决定从下周一开始努力刷题准备蓝桥杯竞赛。他计划周一至周五每天做 a 道题目,周六和周日每天做 b 道题目。请你帮小明计算,按照计划他将在第几天实现做题数大于等于 n 题?
输入描述:
输入一行包含三个整数 a, b 和 n.
输出描述:
输出一个整数代表天数。
样例输入:
10 20 99
样例输出:
8


答案:

分析:
本题思路并不困难,但本人在做的时候刚开始出现了时间超限的情况,可能是因为代码中使用 % 的次数过多。

a, b, n = map(int, input().split())
finish_week = 5 * a + 2 * b     # 计算一周的完成题量
weeks = n // finish_week        # 已过周数
left = n - weeks * finish_week  # 剩余题量
days = 7 * weeks                # 天数
if left>0:
    for i in range(1, 8):
        if i <= 5:
            days += 1
            left -= a
        else:
            days += 1
            left -= b
        if left <= 0:
            break

print(days)

第10题:特殊的数字

题目:
时间限制:
1s
内存限制:
128MB
题目描述:
1234是一个非常特殊的四位数,因为它的各位数之和为10,编程求所有这样的四位十进制数。
输入描述:

输出描述:
按从小到大的顺序输出满足条件的四位十进制数。每个数字占用一行。
样例输入:

样例输出:


答案:

分析:

for i in range(1000, 10000):
    num = 0
    for j in str(i):
        num += int(j)
    if num == 10:
        print(i)

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

四口鲸鱼爱吃盐

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

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

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

打赏作者

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

抵扣说明:

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

余额充值