2022年第20届NOC大赛_Python软件创意编程赛项_决赛_初中组真题

2023年06月02日

一、选择题

第 1 题 单选题

计算机中,一个汉字需占用 2 个字节来记录,请问 2 个字节等于多少个二进制位?

A. 4

B. 8

C. 16

D. 32

第 2 题 单选题

电子邮件地址中,作为区分用户名与电脑所在网络位置的符号是?

A. !

B. @

C.

D. 空格

第 3 题 单选题 关于 Python 的数据类型,下列选项描述错误的是?( )

A. 10.0 是一个浮点数

B. 字符串可以保存在变量中,也可以单独存在

C. int('1.0')返回的结果是整数

D. 布尔类型的值只有 True 和 False

第 4 题 单选题 下列选项的输出结果为 True 的是?( )

A. 2>0 and 3<0 or 3<0

B. 2>0 or 3<0 and 3<0

C. not ('1' == 1) and 1 != 1.0 or '2' == '2.0'

D. ('test' == 'Test') or 1 != 1.0 and 2 == 2.0

第 5 题 单选题 下列代码执行完毕后,输出的结果是?( )

nums = [3, 1, 2, 4, 0]

nums.insert(1, 0)

nums.pop()

nums.append(1)

nums.remove(2)

print(nums)

A. [0, 3, 1, 4, 1]

B. [0, 1, 2, 4, 1]

C. [3, 0, 1, 4, 1]

D. [3, 0, 2, 4, 1]

第 6 题 单选题 请问执行完以下代码后,输出结果为?

ls = [9, 8, 7, [6, 5, [4, 3, 2], 1], 0]

print(ls[-2][-2][1: -1])

A. 3

B. [3]

C. [3, 2]

D. []

第 7 题 单选题 请问执行完以下代码后,输出结果为?

tot = 0

for n in range(3, 66 + 1):

if n % 2 == 0:

continue

if n % 10 == 9:

break

tot += n

print(tot)

A. 18

B. 33

C. 2208

D. 15

第 8 题 单选题 请问执行完以下代码后,输出结果为?( )

def is_lucky(num):

if num % 6 == 0:

return True

while num > 0:

if num % 10 == 6 or num % 10 == 8:

return True

num /= 10

return False

ls = [13, 666, 888, 32, 332, 987, 555, 345, 876]

cnt = 0

for n in ls:

if is_lucky(n):

cnt += 1

print(cnt)

A. 3

B. 4

C. 5

D. 6

二、编程题 第 9 题 问答题 给定一个 5 * 5 的二维列表 ls:

ls = [[1, 2, 2, 1, 2],

[5, 6, 7, 8, 3],

[9, 3, 0, 5, 3],

[7, 2, 1, 4, 6],

[3, 0, 8, 2, 5]]

输入两个正整数 m、n(1<=m<=5,1<=n<=5),将第 n 行和第 m 行交换,输出交换后的列表。

【输入示例】

5

4

【输出示例】

[[1, 2, 2, 1, 2], [5, 6, 7, 8, 3], [9, 3, 0, 5, 3], [3, 0, 8, 2, 5], [7, 2, 1, 4, 6]]

查看答案 第 10 题 问答题 每个字母都有自己的积分:它在字母表是第几个它的积分就是几,比如:a 的积分是1,z 的积分是 26。一个字符串的积分为所有字符的积分之和。我们知道中国人觉得特别喜欢 6 和 9,觉得 6 是一个幸运数字,而 9 则是一个霸气的数字,毕竟九五至尊嘛~若一个字符串的积分既是 6 的倍数,又是 9 的倍数,则此字符串则为吉利又霸气的字符串。现在给你一个英文名,请你来判断这个英文名是不是吉利又霸气,如果是的,请输出'Yes',否则,请输出'No'。

【输入格式】

一行,一个字符串,表示要判断的英文名,均为小写字母。

【输出格式】

一行,表示判断结果,如果输入的英文名是吉利且霸气的,则输出'Yes',否则,输出'No'。

【输入样例 1】

mick

【输出样例 1】

Yes

【输入样例 2】

allen

【输出样例 2】

No

查看答案 第 11 题 问答题 编写一段程序,键盘输入任意的十进制正整数,程序输出与其对应的二进制数。

【输入示例 1】

7

【输出示例 1】

111

【输入示例 2】

10

【输出示例 2】

1010

查看答案 第 12 题 问答题 使用 Python 编写一个算法来确定一个数字是否“快乐”。快乐的数字按照如下方式确定:从一个正整数开始,用其每位数的平方之和取代该数,并重复这个过程,直到最后数字要么收敛等于 1 且一直等于 1,要么将无休止的循环下去且最终不会收敛等于 1。能够最终收敛等于 1 的数就是快乐的数字。

例如,数字 19 就是一个快乐的数字,计算过程如下:

【输入示例 1】

19

【输出示例 1】

Yes

【输入示例 2】

2

【输出示例 2】

No

查看答案 第 13 题 问答题 小 Y 特别喜欢环湖赛跑,因为这样空气非常好,跑起来特别有动力。正值一年一度的环湖跑王者争霸赛开始了,小 Y 就立刻报名了。比赛主办方在周长为 8000 米的湖周围一圈设置了 n 个夺分点,逆时针编号为 1~n,每个夺分点的积分不一定相同,每个积分点的具体位置和积分数量由主办方在比赛开始前公布。比赛规定:参赛者可以选择从赛道的任意一点出发,只能逆时针跑,需要在 5 分钟内尽可能多拿分,只要到达积分点即可得到该积分点的积分,不同人到达同一积分点均能得到积分,互不影响。经过小 Y 自己赛前的反复测试发现,平均下来,自己比赛时的速度为 3.5 米每秒。请问小 Y 以这个速度最多能拿多少分呢?最多能拿的分和最少能拿的分差多少呢?

【输入格式】

2n + 1 行,

第一行,一个整数 n,表示积分点的个数。

接下来 n 行,每行一个数,表示积分点的距离,这个距离是相对于 1 号积分点的距离。距离按照积分点的编号从 1 到 n 进行输入,由小到大,保证一圈的距离足够大,无法跑完一整圈;

再接下来的 n 行,每行一个数,表示每个积分点的积分,也是按照积分点的编号顺序进行输入,保证积分总和不超过 1000000000。

【输出格式】

两行,

第一行为小 Y 能得到的最多积分;

第二行为小 Y 能拿到最多积分与最少积分的差值。

【输入样例】

5

0

123

555

6111

7521

23

54

21

76

32

【输出样例】

130

109

查看答案 第 14 题 问答题 任何一个大于 7 的奇数,都可以表示成 3 个奇质数之和,这就是著名的“奇数哥德巴赫猜想”。现输入一个正整数,请编程验证哥德巴赫猜想是否成立。

如果成立,按照从小到大的顺序输出 3 个质数,中间用空格隔开。有多组答案时,按照第一个数字从小到大的顺序分行输出。

如果不成立或输入的正整数不符合条件(要求是大于 7 的奇数),直接输出 No。

【输入示例 1】

11

【输出示例 1】

3 3 5

【输入示例 2】

27

【输出示例 2】

3 5 19

3 7 17

3 11 13

5 5 17

5 11 11

7 7 13

【输入示例 3】

6

【输出示例 3】

No

查看答案 第 15 题 问答题 用数字 1-9,组成一个三位数减三位数还得三位数的式子,并且要求每个数字不能重复,即,可以使形如 ABC - DEF = GHI 的等式成立。如 981 - 746 = 235 就是一组满足条件的三位数,981 - 235 = 746 也是一组新的满足条件的三位数。一共有多少组满足条件的三位数?输出你的结果。

【输出示例】

100 (100 并非最后答案)