关于这一套题,我感觉难度不高,有一道题有点细节需要注意,我会单独出解析,其他还行,如果有不会的可以评论或者私聊我,我会出单独的解析,关于题目,大家希望我是还是这样出题集还是单个题出,单个题我可能会出的慢点,然后会每次都选出我觉得有意思的一两个做完整版解析,如果喜欢题集,我们就如果有难题我会出解析,我感觉没有,你们如果感觉有那就私信我,或者评论给我
麻烦大家点点赞
6-1 python函数-组合数 (10 分)
请编写函数完成:从n个元素中取出m个元素的组合数:参考公式
。输入要求:n和m均为正整数;如果输入非法数据请参照下方输入输出样例的警告信息;
函数接口定义:
定义两个函数,函数名及参数要求如下:
Fun_Fact(x) #定义阶乘函数,对x求阶乘
Fun_Comb ( m, n) #调用阶乘函数,使用题目公式,再设计函数计算组合数
其中'x' 、'n' 和 'm'都是用户传入的参数。x、 n和m 的值均为正整数;且 n>=m;第二个函数Fun_Comb ( n, m ) 须返回组合数个数。
裁判测试程序样例:
/* 请在这里填写答案 */a,b = input().split(',')
if a.isdecimal() and b.isdecimal() and (int(a)<=int(b)):Comb_Result = Fun_Comb(int(a), int(b))print("result={:.2f}".format(Comb_Result))
else:print("Error data,please input again!")
输入样例1:
2,7
结尾无空行
输出样例1:
result=21.00
结尾无空行
输入样例2:
4,-10
结尾无空行
输出样例2:
Error data,please input again!
结尾无空行
答案:
def Fun_Fact(x): # 定义阶乘函数,对x求阶乘sum = 1for i in range(1, x + 1):sum *= ireturn sumdef Fun_Comb(m, n): # 调用阶乘函数,使用题目公式,再设计函数计算组合数sum = Fun_Fact(n) / (Fun_Fact(m) * Fun_Fact(n - m))return sum
6-2 写函数判断质数 (5 分)
实现一个函数,判断参数是否是质数,是的话返回True,否则返回False
函数接口定义:
def isPrime(num);
参数num表示要判断的正整数。返回值为True表示是质数,返回False表示不是质数。
裁判测试程序样例:
/* 请在这里填写答案 */num=eval(input())
if isPrime(num):print ('yes')
else:print ('no')
输入样例:
97
结尾无空行
输出样例:
yes
结尾无空行
答案:
# Description: 命里有时终须有,命里无时莫强求
# Autor: Neptune
# Date: 2021/10/26 21:21
def isPrime(num):if num == 1 or num == 0:return Falseelif num == 2:return Trueelse:for i in range(2, int(num ** 0.5) + 1):if num % i == 0:return Falsereturn True
6-3 编写函数统计指定数字的个数 (5 分)
本题要求实现一个统计整数中指定数字的个数的简单函数。
CountDigit(number,digit )
其中number是整数,digit为[1, 9]区间内的整数。函数CountDigit应返回number中digit出现的次数。
函数接口定义:
函数接口定义:
int CountDigit (number, digit );
参数number是整数,参数digit为[1,9]区间的整数,函数返回number中digit出现的次数。
裁判测试程序样例:
/* 请在这里填写答案 */number,digit = list(map(int,input().split()))
cnt = CountDigit(number,digit)
print ("Number of digit {0} in {1}: {2}".format(digit,number,cnt))
输入样例:
-21252 2
结尾无空行
输出样例:
Number of digit 2 in -21252: 3
结尾无空行
答案:
# Description: 命里有时终须有,命里无时莫强求
# Autor: Neptune
# Date: 2021/10/27 11:19
def CountDigit(number, digit):n = str(digit)return str(number).count(n)
6-4 修改句子 (9 分)
本题参考checkio.org
读入一个英文句子,将此句子的第一个字母改为大写字母,并在最后加上句号'.'
注意:读入的句子有可能本来就符和要求。
函数接口定义:
def fun(sentence):
裁判测试程序样例:
/* 请在这里填写答案 */doc = input()
res = fun(doc)
print(res)
输入样例1:
在这里给出一组输入。例如:
hello, world
结尾无空行
输出样例1:
在这里给出相应的输出。例如:
Hello, world.
结尾无空行
输入样例2:
在这里给出一组输入。例如:
Hello, world.
结尾无空行
输出样例2:
在这里给出相应的输出。例如:
Hello, world.
结尾无空行
答案:
# Description: 命里有时终须有,命里无时莫强求
# Autor: Neptune
# Date: 2021/10/27 11:30
def fun(sentence: str):str1 = sentence.capitalize()if sentence[len(sentence) - 1] != '.':str1=str1+'.'return str1
6-5 整数数位和(高教社,《Python编程基础及应用》习题8-3) (4 分)
编写一个函数,该函数接受一个正整数作为参数,返回该整数的各位数字之和。
函数接口定义:
def digitSum(v)
v为输入整数(正整数); 函数返回一个整数,其值为v的各位数字之和。
裁判测试程序样例:
a = int(input())
print(digitSum(a))
输入样例:
291
结尾无空行
输出样例:
12
结尾无空行
答案:
# Description: 命里有时终须有,命里无时莫强求
# Autor: Neptune
# Date: 2021/10/27 11:48
def digitSum(v):sum = 0for i in str(v):sum += int(i)return sum
7-1 计算各对应位乘积之和 (30 分)
读入两个整数a和b,输出绝对值a和绝对值b的各对应位乘积之和,如a=1234,b=608,则输出值为:“1×0+2×6+3×0+4×8“的值,即44。
输入格式:
在一行中输入两个数
输出格式:
在一行中输出对应位乘积之和
输入样例:
在这里给出一组输入。例如:
1234 608
结尾无空行
输出样例:
在这里给出相应的输出。例如:
44
结尾无空行
答案:
# Description: 命里有时终须有,命里无时莫强求
# Autor: Neptune
# Date: 2021/10/27 11:52
n, m = map(int, input().split())
n,m=str(abs(n)),str(abs(m))
long = max(len(n), len(m))
sum = 0
while len(n) < long:n = '0' + n
while len(m) < long:m = '0' + m
for i in range(long):sum += int(n[i]) * int(m[i])
print(sum)
7-2 缩写期刊名 (10 分)
科研工作者经常要向不同的期刊投稿。但不同期刊的参考文献的格式往往各不相同。有些期刊要求参考文献所发表的期刊名必须采用缩写形式,否则直接拒稿。现对于给定的期刊名,要求按以下规则缩写: (1)长度不超过4的单词不必缩写; (2)长度超过4的单词仅取前4个字母,但其后要加“.”; (3)所有字母都小写。
输入格式:
首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。 每组测试输入一个包含大小写字母和空格的字符串(长度不超过85),单词由若干字母构成,单词之间以一个空格间隔。
输出格式:
对于每组测试,在一行上输出缩写后的结果,单词之间以一个空格间隔。
输入样例:
2
Ad Hoc Networks
IEEE Transactions on Nanotechnology
输出样例:
ad hoc netw.
ieee tran. on nano.
答案:
# Description: 命里有时终须有,命里无时莫强求
# Autor: Neptune
# Date: 2021/10/27 12:19
n = int(input())
for text in range(n):list1 = input().split()for i in range(len(list1)):if len(list1[i]) > 4:print(list1[i][:4].lower(), end='.')else:print(list1[i].lower(), end='')if i < len(list1) - 1:print(" ", end='')print()list1.clear()
7-3 小者靠前 (10 分)
输入n(1<n<100)个整数到一个数组中,使得其中最小的一个数成为数组的第一个元素(首元素)。若有多个最小者,则首元素仅与最早出现的最小者交换。
输入格式:
测试数据有多组,处理到文件尾。每组测试数据的第一行输入n(1<n<100),第二行输入n个整数。
输出格式:
对于每组测试,输出将这n个整数中最小的数与第一个数对换后的n个整数。
输入样例:
5
5 3 4 1 2
输出样例:
1 3 4 5 2
答案:
# Description: 命里有时终须有,命里无时莫强求
# Autor: Neptune
# Date: 2021/10/27 12:37
try:while True:n = int(input())list1 = [eval(i) for i in input().split()]min1 = min(list1)for i in range(n):if min1 == list1[i]:list1[i] = list1[0]breaklist1[0] = min1print(' '.join(str(i) for i in list1))
except EOFError:pass
7-4 Python-任意多行字符串拆分数值求和 (20 分)
编写程序,统计每行字符串中若干整数的和。每行字符串中整数间的分隔符可能有逗号“,”、分号“ ;”和空格,有多少行就求多少行。
输入格式:
任意输入若干行由整数构成的字符串(回车换行),整数间以逗号或空格或分号分隔。测试数确保至少有一行数据,字符串中的整数数据均合法有效。最后以一个回车结束输入。
输出格式:
对应输出原输入串(一行中的字符序列),冒号后输出各个整数之和。
输入样例:
1; 2 ,3
2 3; 4
10,20 30; 409
结尾无空行
输出样例:
1; 2 ,3:6
2 3; 4:9
10,20 30; 40:1009:9
结尾无空行
答案:
# Description: 命里有时终须有,命里无时莫强求
# Autor: Neptune
# Date: 2021/10/27 12:47
try:while True:str1 = input()str2 = ''for i in str1:if i.isdigit():str2 += ielse:str2 += ' 'list1 = list(map(int, str2.split()))print("%s:%s"%(str1,sum(list1)))
except EOFError:pass
7-5 武林盟主 (10 分)
在传说中的江湖中,各大帮派要选武林盟主了,如果龙飞能得到超过一半的帮派的支持就可以当选,而每个帮派的结果又是由该帮派帮众投票产生的,如果某个帮派超过一半的帮众支持龙飞,则他将赢得该帮派的支持。现在给出每个帮派的帮众人数,请问龙飞至少需要赢得多少人的支持才可能当选武林盟主?
输入格式:
测试数据有多组,处理到文件尾。每组测试先输入一个整数n(1≤n≤20),表示帮派数,然后输入n个正整数,表示每个帮派的帮众人数ai(0<ai≤100)。
输出格式:
对于每组数据输出一行,表示龙飞当选武林盟主至少需要赢得支持的帮众人数。
输入样例:
3 5 7 5
4 6 6 7 5
输出样例:
6
11
答案:
# Description: 命里有时终须有,命里无时莫强求
# Autor: Neptune
# Date: 2021/10/27 12:47
try:while True:list1 = list(map(int, input().split()))list2 = []for i in range(1, list1[0] + 1):list2.append(list1[i] // 2 + 1)while len(list2) > list1[0] // 2 + 1:list2.remove(max(list2))print(sum(list2))
except EOFError:pass