python第9周(python学习题集)

29 篇文章 19 订阅
12 篇文章 24 订阅

关于这一套题,我感觉难度不高,有一道题有点细节需要注意,我会单独出解析,其他还行,如果有不会的可以评论或者私聊我,我会出单独的解析,关于题目,大家希望我是还是这样出题集还是单个题出,单个题我可能会出的慢点,然后会每次都选出我觉得有意思的一两个做完整版解析,如果喜欢题集,我们就如果有难题我会出解析,我感觉没有,你们如果感觉有那就私信我,或者评论给我

麻烦大家点点赞



6-1 python函数-组合数 (10 分)

请编写函数完成:从n个元素中取出m个元素的组合数:参考公式 

zuhe.jpg

 。输入要求: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 = 1
    for i in range(1, x + 1):
        sum *= i
    return sum


def 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 False
    elif num == 2:
        return True
    else:
        for i in range(2, int(num ** 0.5) + 1):
            if num % i == 0:
                return False
        return 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 = 0
    for 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]
                break
        list1[0] = min1
        print(' '.join(str(i) for i in list1))
except EOFError:
    pass

7-4 Python-任意多行字符串拆分数值求和 (20 分)

编写程序,统计每行字符串中若干整数的和。每行字符串中整数间的分隔符可能有逗号“,”、分号“ ;”和空格,有多少行就求多少行。

输入格式:

任意输入若干行由整数构成的字符串(回车换行),整数间以逗号或空格或分号分隔。测试数确保至少有一行数据,字符串中的整数数据均合法有效。最后以一个回车结束输入。

输出格式:

对应输出原输入串(一行中的字符序列),冒号后输出各个整数之和。

输入样例:

1; 2 ,3
2 3; 4
10,20 30; 40
 9

结尾无空行

输出样例:

1; 2 ,3:6
2 3; 4:9
10,20 30; 40:100
 9:9

结尾无空行

答案:

# Description: 命里有时终须有,命里无时莫强求
# Autor: Neptune
# Date: 2021/10/27 12:47
try:
    while True:
        str1 = input()
        str2 = ''
        for i in str1:
            if i.isdigit():
                str2 += i
            else:
                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

  • 8
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值