image

编辑人: 舍溪插画

calendar2025-07-17

message4

visits978

第12届蓝桥杯Python青少组_省赛_中/高级组_2020年12月真题参考答案

一、单选题

1、以下变量中哪个选项不符合变量的命名规则(  )。

A、

a = 3

B、

b_ = 3.5

C、

c_2 = “python”

D、

2_d  = 5


2、以下选项中哪个选项与其它三项输出的结果不相同(  )。

A 2*2+1

B 2+2+4//2-1

C 2**2+2+1

D ( 8%3)**2+1


3、下列哪个语句在Python中是非法的?(  ) 

A、

x = y = z = 0

B、

y = (x = z + 1)

C、

x, y = y, x

D、

x  *=  y


4、str = “ab”+“c”*2 , print ( str ) 输出的结果是( )。

A abc2

B abcabc

C abcc

D ababcc


5、执行以下程序,打印结果为(  )。

data = {'小蓝': 90, '小青': 78}

score = []

for values in data.values():

    score.append(values)

print(score)

A、

[ ]

B、

['小蓝', '小青']

C、

[90, 78]

D、

{'小蓝': 90, '小青': 78}


二、实操题

6、编程实现:

输入一个正整数(个位不能为0),然后将这个正整数逆序输出。

输入描述:

输入一个正整数

输出描述:

逆序输出这个正整数


样例输入:

123

样例输出:

321

参考答案:br />以下是一个简单的Python程序,用于输入一个正整数并逆序输出:```pythonnum = int(input("请输入一个正整数:"))# 逆序输出reversed_num = ''while num > 0:digit = num % 10reversed_num = str(digit) + reversed_numnum //= 10print("逆序输出为:", reversed_num)```


7、提示信息:

小蓝需要打印一份资料,为了环保采用双面打印,也就是一张纸的正反面都打印出相应的内容。举个例子来说:如果一份资料有3页,那么需要2张纸进行打印;如果一份资料有4页,那么还是需要2张纸进行打印。现在已经知道了一份资料的总页数,你帮小蓝计算一下所需要纸张的数量。

编程实现:

输入一个正整数作为这份资料的总页数,输出双面打印这份资料所需要纸张的数量。

输入描述:

输入一个正整数

输出描述:

输出双面打印这份资料所需要纸张的数量


样例输入:

3

样例输出:

2

参考答案:```pythondef paper_count(pages):return pages // 2 + (1 if pages % 2 != 0 else 0)pages = int(input())print(paper_count(pages))```


8、提示信息:

给定一个字符串(只包含小写字母),按照从第start位开始每间隔step位的规则,对字符串对应位置上的字符进行输出。

例如:字符串为abcdefg,start为2,step为2,就是从字符串abcdefg的第2位字符“b”开始,每次间隔2个字符,输出字符串对应位置上的字符,故输出的结果为b,e。

编程实现:

第一行输入一个字符串(只包含小写字母),第二行输入两个正整数且正整数之间以一个空格隔开,第一个正整数作为开始位置(start),第二个正整数作为间隔的字符数(step)。输出字符串对应位置上的字符,且字符之间以英文逗号隔开。

输入描述:

第一行输入一个字符串(只包含小写字母)

第二行输入两个正整数且正整数之间以一个空格隔开

输出描述:

输出字符串对应位置上的字符,且字符之间以英文逗号隔开


样例输入:

abcdefg
2 3

样例输出:

b,f


参考答案:根据题目要求,我们需要从给定的字符串中按照指定的start和step规则输出对应位置上的字符。首先,我们需要读取输入的字符串和start、step值。然后,我们可以使用循环来遍历字符串,从start位置开始,每次间隔step个字符,输出对应位置上的字符。具体实现如下:```python# 读取输入的字符串和start、step值s = input()start, step = map(int, input().split())# 初始化结果字符串result = ""# 遍历字符串,按照start和step规则输出对应位置上的字符for i in range(start, len(s)):if (i - start) % step == 0:result += s[i] + ","# 去除最后一个多余的逗号if result:result = result[:-1]# 输出结果print(result)```


9、编程实现:

输入N个正整数且正整数之间以一个逗号隔开,统计N个正整数中出现过的数字,以及每个数字重复出现的次数,将数字按出现次数由高到低进行排列(相同次数不分先后顺序)并输出,输出的数字之间以英文逗号隔开。

例如:输入的正整数为8,8,7,7,7,6,共出现了3个正整数为8、7、6。其中8出现了2次,7出现了3次,6出现了1次,按照次数由高到低排序后,输出的结果为7,8,6。

输入描述:

输入N个正整数且正整数之间以逗号隔开

输出描述:

输出所有出现过的数字,按照出现次数由高到低排序,数字之间以英文逗号隔开     


样例输入:

8,8,7,7,7,6

样例输出:

7,8,6

参考答案:br />编程实现可以使用Python语言,具体代码如下:```pythondef count_digits(numbers):# 将输入字符串按逗号分割成列表num_list = numbers.split(',')# 将列表中的字符串转换为整数num_list = [int(num) for num in num_list]# 初始化字典用于统计每个数字出现的次数count_dict = # 遍历列表中的每个数字,统计出现次数for num in num_list:if num in count_dict:count_dict[num] += 1else:count_dict[num] = 1# 将字典中的键值对按照值(出现次数)由高到低排序sorted_dict = sorted(count_dict.items(), key=lambda x: x[1], reverse=True)# 提取排序后的数字列表sorted_nums = [num for num, count in sorted_dict]# 将数字列表转换为字符串,数字之间以英文逗号隔开result = ','.join(map(str, sorted_nums))return result# 测试样例numbers = input("请输入N个正整数,以逗号隔开:")print(count_digits(numbers))```


10、编程实现:

输入一个正整数N(10<N<1000),然后将N分解成 3 个各不相同的正整数,即3 个正整数之和为N。且要求每个正整数中都不包含数字 2 和 4。输出一共有多少种不同的分解方法。

例如:输入的正整数N为:12

将12分解为3个不同的正整数,且每个正整数都不包含数字 2 和 4为:1,3,8和1,5,6。

一共有两种分解方法。

注意:数字相同顺序不同的算一种分解方法。

输入描述:

输入一个正整数N(10<N<1000)

输出描述:

输出一共有多少种不同的分解方法


样例输入:

12

样例输出:

2


参考答案:br />```pythondef count_decomposition(N):count = 0for i in range(1, N):for j in range(i+1, N):if N - i - j > j:continueif str(i).find('2') == -1 and str(i).find('4') == -1 and \str(j).find('2') == -1 and str(j).find('4') == -1 and \str(N - i - j).find('2') == -1 and str(N - i - j).find('2') == -1:count += 1return countN = int(input())print(count_decomposition(N))```


11、提示信息:

从1到10000的连续正整数,其中有多组连续的正整数之和相同。

例如:2,3,4和4,5这两组连续正整数之和都为9。

编程实现:

输入一个正整数S,输出从1到10000连续的正整数中,有多少组连续正整数之和为S。(一组连续正整数最少为两个正整数)

例如:输入为9,其中2,3,4和4,5这两组连续正整数之和都为9,则输出2。

输入描述:

输入一个正整数S

输出描述:

输出有几组连续的正整数之和为S


样例输入:

9

样例输出:

2

参考答案:br />```pythondef count_consecutive_sums(S):count = 0start = 1while start + S - 1 <= 10000:if sum(range(start, start + S)) == S * S:count += 1start += 1return countS = int(input())print(count_consecutive_sums(S))```


喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!

创作类型:
原创

本文链接:第12届蓝桥杯Python青少组_省赛_中/高级组_2020年12月真题参考答案

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。
分享文章
share