刷题日记?刷题日寄!
萌新备战蓝桥杯python组
发现有需要纠正的地方,烦请指正!
欢迎小伙伴们的三连+关注!
往期系列:
【蓝桥杯入门篇】Python组刷题日寄Part01
【蓝桥杯入门篇】Python组刷题日寄Part02
【蓝桥杯入门篇】Python组刷题日寄Part03
【蓝桥杯入门篇】Python组刷题日寄Part04
入门篇04
题目:
时间限制:
1s
内存限制:
128MB
题目描述:
编写函数GetReal和GetString,在main函数中分别调用这两个函数。在读入一个实数和一个字符串后,将读入的结果依次输出。
两次输入前要输出的提示信息分别是" please input a number:”和" please input a string:"
输入描述:
无
输出描述:
无
样例输入:
9.56
hello
样例输出:
please input a number:
please input a string:
9.56
hello
答案:
分析:
注意次序
def GetReal(s):
return s
def GetString(s):
return s
if __name__=='__main__':
s1 = input()
s2 = input()
print('please input a number:')
print('please input a string:')
print(GetReal(s1))
print(GetString(s2))
题目:
时间限制:
1s
内存限制:
128MB
题目描述:
平面上有两个矩形,它们的边平行于直角坐标系的X轴或Y轴。对于每个矩形,我们给出它的一对相对顶点的坐标,请你编程算出两个矩形的交的面积。
输入描述:
输入仅包含两行,每行描述一个矩形。
在每行中,给出矩形的一对相对顶点的坐标,每个点的坐标都用两个绝对值不超过 1 0 7 10^7 107的实数表示。
输出描述:
输出仅包含一个实数,为交的面积,保留到小数后两位。
样例输入:
1 1 3 3
2 2 4 4
样例输出:
1.00
答案:
分析:
转换为标准形式:坐标先小后大。
要判断是否相交
A = list(map(float, input().split()))
B = list(map(float, input().split()))
# 将输入的数据转化为标准情况
As = [min(A[0], A[2]), min(A[1], A[3]), max(A[0], A[2]), max(A[1], A[3])]
Bs = [min(B[0], B[2]), min(B[1], B[3]), max(B[0], B[2]), max(B[1], B[3])]
# 判断是否相交
if (Bs[0]>As[2] or Bs[1]>As[3] or As[0]>Bs[2] or As[1]>Bs[3]):
# 不相交
S = 0
# 相交
else:
x = min(As[2], Bs[2])-max(As[0], Bs[0])
y = min(As[3], Bs[3])-max(As[1], Bs[1])
S = x*y
print('%.2f' % S)
题目:
时间限制:
1s
内存限制:
128MB
题目描述:
给定一个以秒为单位的时间t,要求用 “< H> :< M> :< S> ”的格式来表示这个时间。< H> 表示时,< M> 表示分钟, 而< S> 表示秒,它们都是整数且没有前导的“0”。例如,若t=0,则应输出是“0:0:0”;若t=3661,则输出“1:1:1”。
输入描述:
输入只有一行,是一个整数t(0< =t< =86399)。
输出描述:
输出只有一行,是以“< H> :< M> :< S> ”的格式所表示的时间,不包括引号。
样例输入:
5436
样例输出:
1:30:36
答案:
分析:
divmod()
函数的使用,格式化输出
s = int(input())
m, s = divmod(s, 60)
h, m = divmod(m, 60)
print('{}:{}:{}'.format(h, m, s))
题目:
时间限制:
1s
内存限制:
128MB
题目描述:
已有a、b两个链表,每个链表中的结点包括学号、成绩。要求把两个链表合并,按学号升序排列。
输入描述:
第一行,a、b两个链表元素的数量N、M,用空格隔开。 接下来N行是a的数据 然后M行是b的数据 每行数据由学号和成绩两部分组成
输出描述:
按照学号升序排列的数据
样例输入:
2 3
5 100
6 89
3 82
4 95
2 10
样例输出:
2 10
3 82
4 95
5 100
6 89
答案:
分析:
利用字典,将key值排序
a, b = map(int, input().split())
d = {}
for i in range(a+b):
x, y = map(int, input().split())
d[x] = y
lis = list(d.keys())
lis.sort()
for i in lis:
print('%d %d' % (i, d[i]))
题目:
时间限制:
1s
内存限制:
128MB
题目描述:
有一字符串,包含n个字符。写一函数,将此字符串中从第m个字符开始的全部字符复制成为另一个字符串。
输入描述:
数字n
一行字符串
数字m
输出描述:
从m开始的子串
样例输入:
6
abcdef
3
样例输出:
cdef
答案:
分析:
字符串切片
n = int(input())
s = input()
m = int(input())
res = s[m-1:]
print(res)
题目:
时间限制:
1s
内存限制:
128MB
题目描述:
有n个整数,使前面各数顺序向后移m个位置,最后m个数变成前面m个数。
输入描述:
输入数据的个数n
n个整数
移动的位置m
输出描述:
移动后的n个数
样例输入:
10
1 2 3 4 5 6 7 8 9 10
2
样例输出:
9 10 1 2 3 4 5 6 7 8
答案:
分析:
extend()
在列表末尾增添元素。
n = int(input())
lis = list(map(int, input().split()))
m = int(input())
lis.extend(lis[:n-m])
for i in lis[n-m:]:
print(i,end=' ')
题目:
时间限制:
1s
内存限制:
128MB
题目描述:
输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。
输入描述:
10个整数
输出描述:
整理后的十个数,每个数后跟一个空格(注意最后一个数后也有空格)
样例输入:
2 1 3 4 5 6 7 8 10 9
样例输出:
1 2 3 4 5 6 7 8 9 10
答案:
分析:
用min(), max(), list.index()
函数
a = list(map(int, input().split()))
for i in a:
if i==min(a):
index_min = a.index(i)
a[index_min] = a[0]
a[0] = i
if i==max(a):
index_max = a.index(i)
a[index_max] = a[-1]
a[-1] = i
for i in a:
print(i, end=' ')
题目:
时间限制:
1s
内存限制:
128MB
题目描述:
输入三个整数,按由小到大的顺序输出。
输入描述:
三个整数
输出描述:
由小到大输出成一行,每个数字后面跟一个空格
样例输入:
2 3 1
样例输出:
1 2 3
答案:
分析:
用sort()
函数
x = list(map(int, input().split()))
x.sort()
for i in x:
print(i, end=' ')
题目:
时间限制:
1s
内存限制:
128MB
题目描述:
输入一行电报文字,将字母变成其下一字母(如’a’变成’b’……’z’变成’a’其它字符不变)。
输入描述:
一行字符
输出描述:
加密处理后的字符
样例输入:
a b
样例输出:
b c
答案:
分析:
ord()
函数获取字符的ASCII值,chr()
将ASCII值转换为字符。
x = input()
s = ''
for i in x:
if (i>='a' and i<='z') or (i>='A' and i<='Z'):
if i=='z' or i=='Z':
s = s+chr(ord(i)-25)
else:
s = s+chr(ord(i)+1)
else:
s = s+i
print(s)
题目:
时间限制:
1s
内存限制:
128MB
题目描述:
请设计输出实数的格式,包括:⑴一行输出一个实数;⑵一行内输出两个实数;⑶一行内输出三个实数。实数用"6.2f"格式输出。
输入描述:
一个实数,float范围
输出描述:
输出3行,第一行打印一遍输入的数,第二行打印两遍,第三行打印三遍。 第二行和第三行,用空格分隔同一行的数字。 实数用"6.2f"格式输出。
样例输入:
0.618
样例输出:
0.62
0.62 0.62
0.62 0.62 0.62
答案:
分析:
格式化输出
f = float(input())
for i in range(1, 4):
for j in range(i):
print('%6.2f' % f, end=' ')
print()