第一题
编程实现
输入一个字符串,如果该字符串以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作为如图半圆的直径,同时作为如圈等腰直角三角形的直角边长度,求下图的阴影部分面积,如图所示:
提示信息
三角形面积公式: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日之间,二十四个节气的名称,公历具体日期及汉语拼音的缩写。
输入描述
输入一个日期,介于公历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
输入描述
输入容器大小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))