十一届蓝桥杯青少组省赛Python中/高级组试题

第一题
编程实现
输入一个字符串,如果该字符串以er、ly或者ing后缀结尾的,则删除该字符串后缀,并输出删除后的字符串,否者将原字符串输出。
输入描述
输入一个字符串
输出描述
输出删除后的字符串或原字符串
样例输入:
driver
样例输出:
driv

n = input()
if n[-2:] == 'er' or n[-2:] == 'ly':
    print(n[:-2])
elif n[-3:] == 'ing':
    print(n[:-3])
else:
    print(n)

第二题
编程实现
用户输入一个正整致a作为如图半圆的直径,同时作为如圈等腰直角三角形的直角边长度,求下图的阴影部分面积,如图所示:十一届蓝桥杯青少组省赛Python中/高级组试题_第1张图片
提示信息
三角形面积公式:S=(ah)/2(公式中a为三角形的底边,h为底边所对应的高)
圆形面积公式:S=лr^2(公式中r为园的半径,л=3.14)
已知条件:
1)半圆的直径和等腰直角三角形直角边长度相同;
2)三角形与半圆部分重叠;
3)三角形ABC为等腰直角三角形;
输入描述
一个正整数(作为半圆的直径)
输出描述
图形阴影面积(保留2位小数)
样例输入:
18
样例输出:
25.00

a = int(input())
s = a ** 2 / 4
print('%.2f' % s)

第三题
背景信息
因子:因子也叫因数,例如3*5=15,那么3和5是15的因子。同时15*1=15,那么1和15也是15的因子。
1,3,5,15这四个因子是15的所有因子。
完数:如果一个数等于不含它本身的其他因子之和,则称该数为“完数”。如6的因子有1,2,3,6,且1+2+3=6,因此6是完数。
编程实现
输入一个正整数N,输出小于N的所有完数及个数(个数前加“*”,例如:*2)。
输入描述
输入一个正整数N
输出描述
输出小于N的所有完数及个数
样例输入:
100
样例输出:
6
28
*2

n = int(input())
index = 0
for i in range(2, n):
    sum1 = 0
    for j in range(1, i // 2 + 1):
        if i % j == 0:
            sum1 += j
    if sum1 == i:
        print(i)
        index += 1
print('*' + str(index))
def perfect(n):
    list1 = [i for i in range(1, n // 2 + 1) if n % i == 0]
    return sum(list1) == n

n = int(input())
re = [i for i in range(2, n) if perfect(i)]
print(*re, sep='\n')
print(f'*{len(re)}')

第四题
背景信息
在生活中,为保证信息安全,我们会把重要的信息进行加密后再发送给对方,对方需要通过相同的策略对信息进行解密,才能了解到传递的信息,我们一般把加密前的信息称为原文,将加密后的信息称为密文。
有这样一种加密的策略:第一次加密策略是将明文中字母a加密为01,b加密为02,c加密为03,以此类推,x加密为24,y加密为25,z加密为26,空格不加密;然后在第一次加密的基础上进行二次加密,第二次加密策略是将数字0加密为27,数字1加密为28,以此类推,数字8加密为35,数字9加密为36,空格则加密为00。
编程实现
请输入一段明文,按照上述加密策略,输出对应密文。
输入描述
输入一段明文(只包含小写字母和空格)
输出描述
按照上述加密策略,输出对应密文
样例输入:
ab c
样例输出:
27282729002730

d = {}
for i in range(1, 27):
    if i < 10:
        d[chr(i + 96)] = '0' + str(i)
    else:
        d[chr(i + 96)] = str(i)
print(d)
t = input()
s1 = ''
for i in t:
    if i == ' ':
        s1 += ' '
    else:
        s1 += d[i]
s2 = ''
for i in s1:
    if i == ' ':
        s2 += '00'
    else:
        s2 += str(int(i) + 27)
print(s2)
from re import sub
t=input()
t=sub('[a-z]',lambda i: str(ord(i.group(0))-96).zfill(2),t)
t=sub('[0-9]',lambda i: str(int(i.group(0))+27),t).replace(' ','00')
print(t)

 第五题
下图给出了公历2020年1月25日~2021年1月20日之间,二十四个节气的名称,公历具体日期及汉语拼音的缩写。十一届蓝桥杯青少组省赛Python中/高级组试题_第2张图片
输入描述
输入一个日期,介于公历2020年1月25日~2021年1月20日之间。例如:2020年5月2日写为“2020*05*02”。
输出描述
如果当天恰好是一个节气,输出这个节气的汉语拼音缩写,如当天不是节气则输出下一个节气的汉语拼音缩写。
样例输入1:
2020*06*21
样例输出1:
XZ
样例输出1说明:6月21日是夏至,汉语拼音缩写是"XZ"
样例输入2:
2020*07*04
样例输出2:
XS
样例输出2说明:7月4日之后的节气是小暑,汉语拼音缩写是"XS"

names=['XH','DH','LC','YS','JZ','CF','QM','GY','LX','XM','MZ','XZ','XS','DS','LQ','CS','BL','QF','HL','SJ','LD','XX','DX','DZ']
dates=[105,120,204,219,305,320,404,419,505,520,605,621,706,722,807,822,907,922,1008,1023,1107,1122,1207,1221]
day=int(input().replace('*','')[-4:])
dates_=[i for i in dates if i

第六题
编程实现
现有一个容器,其容量为v(0 在n个物品中,任取若干个装入容器内,使容器的剩余空间为最小。
输入描述
输入容器大小V(0 输出描述
剩余最小空间值
样例输入:
100
4
50
20
45
19
说明:“100”输入的是容器大小V;“4”输入的是物品数量n;“50"“20"“45,“19”输入的是4个物品体积。
样例输出:
5
说明:“5”是容器大小减掉4个物体不同组合后与容器大小最为接近的一组值。(物品组合个数不限制,只找最接近容器大小的值)

# 递归法
def fill(lst,room):
    if not lst: #物品取完
        return room
    if not room: #没有空间
        return 0
    result = fill(lst[1:],room)  #空间不够放
    if room>=lst[0]: #空间够放
        take=fill(lst[1:],room-lst[0]) 
        result=min(take,result)   
    return result

v=int(input())
n=int(input())
lst=[]
for i in range(n):
    lst.append(int(input()))
    
print(fill(lst,v))
# 暴力破解
from itertools import combinations
v=int(input())
n=int(input())
lst=[]
for i in range(n):
    lst.append(int(input()))
lstt=[]
for i in range(1,n+1):
    lstt.extend(list(combinations(lst,i)))
lsttt=[v-sum(i) for i in lstt if v-sum(i)>=0]
print(min(lsttt))

你可能感兴趣的