【蓝桥杯入门篇】Python组刷题日寄Part05

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

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

【蓝桥杯入门篇】Python组刷题日寄Part02

【蓝桥杯入门篇】Python组刷题日寄Part03

【蓝桥杯入门篇】Python组刷题日寄Part04

入门篇04

【蓝桥杯入门篇】Python组刷题日寄Part05

  • 第01题:字符串输入输出函数
  • 第02题:矩形面积交
  • 第03题:时间转换
  • 第04题:链表合并
  • 第05题:字符串拷贝
  • 第06题:数字后移
  • 第07题:整数处理
  • 第08题:三个数字的排序
  • 第09题:电报加密
  • 第10题:实数的打印

第01题:字符串输入输出函数

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

第02题:矩形面积交

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

第03题:时间转换

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

第04题:链表合并

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

第05题:字符串拷贝

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

第06题:数字后移

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

第07题:整数处理

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

第08题:三个数字的排序

题目:
时间限制:
1s
内存限制:
128MB
题目描述:
输入三个整数,按由小到大的顺序输出。
输入描述:
三个整数
输出描述:
由小到大输出成一行,每个数字后面跟一个空格
样例输入:
2 3 1
样例输出:
1 2 3


答案:

分析:
sort()函数

x = list(map(int, input().split()))
x.sort()
for i in x:
    print(i, end=' ')

第09题:电报加密

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

第10题:实数的打印

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

你可能感兴趣的:(#,蓝桥杯Python组刷题日寄,蓝桥杯,python,算法)