一、实操题
1、编程实现:
分别输入两个正整数M,N,输出M到N之间(含M,N)所有可被7整除,但不是5的倍数的数字,并以逗号分隔按顺序打印在一行。
输入描述:
分别输入两个正整数M,N
输出描述:
输出M到N之间(含M,N)所有可被7整除,但不是5的倍数的数字,并以逗号分隔按顺序打印在一行
样例输入:
100 147
样例输出:
112,119,126,133,147
参考答案:br />```pythonM, N = map(int, input().split())result = [str(i) for i in range(M, N+1) if i % 7 == 0 and i % 5 != 0]print(','.join(result))```
解析:【喵呜刷题小喵解析】
首先,我们读取用户输入的两个正整数M和N。
然后,我们创建一个列表,用于存储满足条件的数字。我们使用列表推导式,遍历从M到N的所有数字,如果数字可以被7整除并且不是5的倍数,就将其添加到列表中。
最后,我们使用字符串的`join`方法,将列表中的数字用逗号连接起来,并打印出来。
注意,题目要求输出的是字符串,所以我们在列表推导式中需要将数字转换为字符串。
2、编程实现:
输入一行字符,分别统计出其英文字母、空格、数字和其它字符的个数并输出。
输入描述:
输入一行字符
输出描述:
按英文字母、空格、数字和其它字符的顺序输出其对应的个数
样例输入:
a1 b2 c d4 !!! 5
样例输出:
4 5 4 3
参考答案:br />```pythondef count_chars(s):eng_count = 0space_count = 0digit_count = 0other_count = 0for char in s:if char.isalpha():eng_count += 1elif char.isspace():space_count += 1elif char.isdigit():digit_count += 1else:other_count += 1return eng_count, space_count, digit_count, other_counts = input()eng, space, digit, other = count_chars(s)print(eng)print(space)print(digit)print(other)```
解析:【喵呜刷题小喵解析】
本题要求输入一行字符,并分别统计出其中的英文字母、空格、数字和其他字符的个数。我们可以编写一个函数来实现这个功能。
首先,我们定义一个函数`count_chars`,它接受一个字符串`s`作为输入。在函数内部,我们初始化四个计数器:`eng_count`用于统计英文字母个数,`space_count`用于统计空格个数,`digit_count`用于统计数字个数,`other_count`用于统计其他字符个数。
然后,我们遍历字符串`s`中的每个字符。如果字符是英文字母,则`eng_count`加1;如果字符是空格,则`space_count`加1;如果字符是数字,则`digit_count`加1;否则,`other_count`加1。
最后,我们返回四个计数器的值。
在主程序中,我们首先使用`input`函数获取用户输入的字符串,并调用`count_chars`函数进行统计。然后,我们使用`print`函数依次输出四个计数器的值。
对于样例输入`a1 b2 c d4 !!! 5`,程序会输出`4 5 4 3`,表示英文字母个数为4,空格个数为5,数字个数为4,其他字符个数为3。
3、编程实现:
有n个人围成一个圈,按顺序排好号。然后从第一个人开始报数(从1到3报数),报到3的人退出圈子,然后继续从1到3报数,直到最后留下一个人游戏结束,问最后留下的是原来第几号。
输入描述:
输入一个正整数n
输出描述:
输出最后留下的是原来的第几号
样例输入:
5
样例输出:
4
参考答案:```pythondef last_man_standing(n):if n == 1:return 1people = list(range(1, n+1))index = 0while len(people) > 1:index = (index + 2) % len(people)del(people[index])return people[0]print(last_man_standing(5)) # 输出: 4```
解析:【喵呜刷题小喵解析】:
这是一个经典的约瑟夫环问题,也称为“丢手绢”问题。有n个人围成一圈,从第一个人开始报数,每次报到3的人退出圈子,直到最后留下一个人。
解决这个问题的一种有效方法是使用模拟。我们可以创建一个列表来表示这n个人,然后从第一个人开始报数。每次报到3的人,我们从列表中删除他。最后,列表中的最后一个元素就是最后留下的人。
在Python中,我们可以使用列表的索引来表示人的位置。初始时,索引从0开始。每次报数后,索引加2(因为报到3的人退出,所以下一个人是索引+2的人)。当列表长度大于1时,我们继续这个过程,直到列表长度为1。
在上面的代码中,我们首先检查特殊情况:如果n等于1,直接返回1。否则,我们创建一个包含1到n的列表,表示这n个人。我们从索引0开始报数,每次报到3的人,我们从列表中删除他。最后,列表中的最后一个元素就是最后留下的人,我们返回这个值。
4、编程实现:
计算某个电梯的用电量。
电梯可到达最低楼层为地下 3 层(-3),最高为地上 12 层(12),中间没有 0 层;
电梯向上运行时每上升 1 层消耗 1 单位电量,向下运行时每下降 1 层消耗 0.3 单位电量;
请你通过输入的某段时间内电梯停过的楼层顺序,计算电梯消耗了多少单位电量。
输入描述:
N 个数字(2<=N<=10),数字间以逗号分隔,代表电梯停过的楼层[-3,12];
输出描述:
电梯消耗的单位电量数;
样例输入:
1,11,1
样例输出:
13.0
参考答案:br />根据题目描述,我们需要计算电梯消耗的单位电量数。首先,我们需要根据输入的楼层顺序,计算电梯上升和下降的层数。对于每个楼层,我们可以计算电梯上升或下降的层数,然后根据题目中给出的规则计算电量消耗。具体步骤如下:1. 初始化变量total_electricity为0,表示总电量消耗。2. 遍历输入的楼层顺序,对于每个楼层:* 如果当前楼层比前一个楼层高,则电梯上升了(当前楼层-前一个楼层)层,总电量消耗增加(当前楼层-前一个楼层)单位。* 如果当前楼层比前一个楼层低,则电梯下降了(前一个楼层-当前楼层)层,总电量消耗增加0.3*(前一个楼层-当前楼层)单位。最后,返回总电量消耗。
解析:【喵呜刷题小喵解析】
本题是一道计算电梯用电量的编程题目。根据题目描述,电梯向上运行时每上升1层消耗1单位电量,向下运行时每下降1层消耗0.3单位电量。
首先,我们需要根据输入的楼层顺序,计算电梯上升和下降的层数。对于每个楼层,我们可以计算电梯上升或下降的层数,然后根据题目中给出的规则计算电量消耗。
具体实现时,我们可以使用循环遍历输入的楼层顺序,对于每个楼层,判断当前楼层是否比前一个楼层高或低,然后计算电梯上升或下降的层数,并累加到总电量消耗中。
最后,返回总电量消耗即可。
需要注意的是,由于电梯可到达的最低楼层为地下3层(-3),最高为地上12层(12),因此在计算电梯上升或下降的层数时,需要考虑到楼层的符号。如果当前楼层比前一个楼层高,则电梯上升了(当前楼层-前一个楼层)层;如果当前楼层比前一个楼层低,则电梯下降了(前一个楼层-当前楼层)层。在计算电量消耗时,需要根据题目中给出的规则进行计算。
5、提示信息:
在大于 1 的自然数中,除了 1 和它本身以外不再有其他因数的数,被称为素数,又叫质数。
超级素数是指一个素数,每去掉最后面的一个数字,总能保证剩下的数依然为素数。
比如:“373”就是一个超级素数,去掉个位的“3”后,“37”依然是素数;继续去掉“37”个位的 “7”后,“3”还是素数。
编程实现:
输入一个正整数 n (10≤n≤108),输出所有小于等于n的超级素数的个数。
输入描述:
输入一个正整数 n (10≤n≤108)
输出描述:
输出所有小于等于 n 的超级素数的个数
样例输入:
30
样例输出:
6
样例输入:
50
样例输出:
8
样例输入:
100
样例输出:
13
样例输入:
500
样例输出:
21
样例输入:
1000
样例输出:
27
样例输入:
3200
样例输出:
34
参考答案:```pythonimport mathdef is_prime(n):if n < 2:return Falsefor i in range(2, int(math.sqrt(n)) + 1):if n % i == 0:return Falsereturn Truedef is_super_prime(n):while n % 10 != 0:n = int(str(n)[:-1])if not is_prime(n):return Falsereturn Truedef count_super_primes(n):count = 0for i in range(2, n + 1):if is_super_prime(i):count += 1return countn = int(input())print(count_super_primes(n))```
解析:【喵呜刷题小喵解析】:
首先,我们需要编写两个辅助函数,`is_prime(n)`用来判断一个数是否为素数,`is_super_prime(n)`用来判断一个数是否为超级素数。
在`is_prime(n)`函数中,我们遍历从2到n的平方根的所有整数,如果n能被其中的任何一个数整除,那么n就不是素数,返回False;否则,n就是素数,返回True。
在`is_super_prime(n)`函数中,我们不断去掉n的个位数,直到n的个位数为0,如果在这个过程中,n不再是素数,那么n就不是超级素数,返回False;否则,n就是超级素数,返回True。
最后,在`count_super_primes(n)`函数中,我们遍历从2到n的所有整数,如果某个数是超级素数,我们就将计数器加1。最后,我们返回计数器的值,即小于等于n的超级素数的个数。
在主程序中,我们读取输入的正整数n,然后调用`count_super_primes(n)`函数,输出小于等于n的超级素数的个数。
喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!