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

2023年06月02日

一、选择题

第 1 题 单选题

下列选项中,不能作为计算机的输入设备的是?( )

A. 键盘

B. 鼠标

C. 普通显示器

D. 摄像头

第 2 题 单选题

下述选项中,不可以作为变量名的是?

A. b1

B. nameA

C. message_1

D. 2022NOC

第 3 题 单选题

已知 a = 10,b = 20,c = 30,以下代码运行后,变量 a 的值为 30 的是:

A. a, b = b, a

B. a, c = b, a

C. a, b = b, c

D. a, c = c, a+b

第 4 题 单选题

想从字符串 s = '我是一个字符串',打印出'字符串',可用以下哪种方式?

A. print(s[4:])

B. print(s[4:6])

C. print(s[3:6])

D. print(s[5:])

第 5 题 单选题

以下是不可变类型的是?

A. 集合

B. 元组

C. 字典

D. 列表

第 6 题 单选题

想要输出 0-100 的数字,横线处应填写的是?

for n in range(____):

print(n)

A. 99

B. 100

C. 101

D. 102

第 7 题 单选题

请看下列代码,若想要输出 yes,可以输入的内容是?

s = input('请输入:')
if s == s[::-1]:
	 print('yes')
else:
	 print('no')

A. level

B. yes

C. no

D. hahaha

第 8 题 单选题

程序运行后,输出['草莓', '车厘子', '芒果', '榴莲'],则横线上的代码是?

fruit1 = ['芒果','车厘子','草莓']
fruit2 = ['榴莲']
for f in fruit1:
 ______________
print(fruit2)

A. fruit2.pop()

B. fruit1.append(f)

C. fruit2.append(f)

D. fruit2.insert(0,f)

第 9 题 单选题

想要生成 0 到 9 的随机小数,选项中正确的是?

A. random.uniform(0,10)

B. random.uniform(0,9)

C. randint.uniform(0,9)

D. random.random(0,9)

第 10 题 单选题

下列程序运行后,显示的图形形状是?

import turtle
for i in range(5):
	 turtle.forward(50)
	 turtle.left(90)

A. 正方形

B. 三角形

C. 正五边形

D. 正六边形

第 11 题 单选题

请看下列代码:

a = int(input('请输入 a:'))
b = int(input('请输入 b:'))
if b == 50 or a == 30 and a < 50:
	 print('Yes')
else:
	 print('No')

当输入 60,50 时,最终运行结果是?

A. 没有效果

B. No

C. Yes

D. 报错

第 12 题 单选题

请看下列代码,运行后的输出结果是?

a = [x for x in range(9) if x % 2 == 1]
print(a) 

A. [0, 2, 4, 6, 8]

B. [1, 3, 5, 7, 9]

C. [1, 3, 5, 7]

D. 程序运行报错

第 13 题 单选题

阅读以下程序,请问程序运行后输入 20,会输出什么结果?

num = int(input('请输入:'))
if num % 2 == 1:
	 print(num * 2)
else:
	 print(num / 2)

A. 40.0

B. 10

C. 40

D. 10.0

第 14 题 单选题

现在有一段程序如下,请问程序运行的结果是什么?

def fun(level):
	 if level < 1:
	 raise Exception('Invalid level!')
	 print(3)
try:
	 fun(0)
except Exception as err:
	 print(1)
else:
	 print(2)

A. 0

B. 1

C. 2

D. 3

第 15 题 单选题

阅读以下程序,程序输出的结果为?

start = 1900
end = 1920
cnt = 0
for num in range(start, end):
	 if num % 4 == 0 and num % 100 != 0 or num % 400 == 0:
		 cnt += 1
print(cnt)

A. 3

B. 4

C. 5

D. 报错

第 16 题 单选题

阅读以下程序,程序输出的结果为?

numbers = [12, 3, 1, 5, 2, 4, 7, 9, 11, 100]
index = 0
newList = []
while index < len(numbers):
	 if numbers[index] % 2 == 0:
		newList.append(numbers[index])
		index += 1
print(newList)

A. [12, 2, 4, 100]

B. [0, 4, 5, 9]

C. [3, 1, 5, 7, 9, 11]

D. [12, 2, 4]

第 17 题 单选题

已知代码如下:

class Plane():
	 def __init__(self, a, b, c):
	 self.a = a
	 self.b = b
	 self.c = c
planes = [Plane('战斗机', '黑色', '小型'),
	 Plane('客机', '白色', '中型'),
	 Plane('航母', '灰色', '超大型')]
for plane in planes:
	 print(plane.b, end=' ')

代码运行后控制台的效果是:()

A. 黑色 白色 灰色

B. 战斗机 客机 航母

C. 小型 中型 超大型

D. 客机 白色 中型

第 18 题 单选题

请看下列代码:

a = 3
b = 0
def change():
	 global a, b
	 b = b + a
	 print(b, end = ' ')
while a > 0:
	 change()
	 a = a - 1

运行后输出结果正确的是()

A. 3 5

B. 3 5 6

C. 3 5 6 6

D. 3 4 5

第 19 题 单选题

请看下列代码:

x = str(input('请输入购买数量:')) 
if x < 5: 
	 print('不打折') 
else if x < 10: 
	 print('打 8 折') 
elif x < 15: 
	 print('打 7 折') 
else: 
	print('打 5 折') 

代码中包含几处错误?( )

A. 1

B. 2

C. 3

D. 4

第 20 题 单选题

请看下列程序,运行后的结果是?

import numpy as np
def numpy_sum():
	 a = np.array([1, 2, 3])
	 b = np.array([4, 5, 6])
	 c = a ** 1 + b ** 2
	 return c
print(numpy_sum())

A. [17 27 39]

B. [5 7 9]

C. [9 12 15]

D. [2 4 6]

二、编程题

第 21 题 问答题

“逢 4 必过”:一群小朋友们围坐在一起,玩“逢 4 必过”游戏,游戏规则是:第 1 个小朋友从 1 开始报数,其他人接力报数;如果遇到尾数是 4 就不报数,而报“过”;谁报错了数,就要接受惩罚表演才艺。

我们要编写程序,模拟 15 人报数的情况。

提示:

print('输出内容', end=' '),可以实现不换行输出,输出内容之间空格间隔

例如:

print('输出内容 1', end=' ')

print('输出内容 2', end=' ')

运行效果:输出内容 1 输出内容 2

【输入格式】

【输出格式】

共 1 行,模拟 15 人报数的情况

【输入样例】

【输出样例】

1 2 3 过 5 6 7 8 9 10 11 12 13 过 15

【预设代码】

for i in ___________:

	if ___________:

		print('过', end=' ')

	else:

		______________

第 22 题 问答题

小明想要给居委会工作的妈妈制作一个小程序:列表中存储一组居民的年龄,将其中所有大于 60 的值保存在字典的第一个 key 中,将其他的值保存在字典的第二个 key 中。

【输入样例】

【输出样例】

{'B': [20, 9, 13, 47, 18, 25, 30, 10], 'A': [75, 61, 80, 67, 88]}

【预设代码】

dic = {}
all_list = [20, 75, 61, 80, 9, 13, 47, 18, 25, 30, 67, 88, 10]
for i in all_list:
	 if i > 60:
		 grade = 'A'
	 else:
	 	grade = 'B'
	 if ____________:
		 ______________
	 else:
	 	dic[grade] = [i]
print(dic)

第 23 题 问答题

开学第一课,班主任老师准备召集班中的学生们,大家一起来玩一个破冰游戏。游戏规则是:

1、所有学生按照座位蛇形排列,依次报数;

2、学生报数时,如果所报数字是 3 的倍数,那么不能说该数字,而要说 2022;

3、如果学生所报数字是 4 的倍数,那么要说 NOC;

4、如果学生所报数字是 3 和 4 的倍数,要说 2022NOC。

请按照此游戏规则完成程序,输入玩游戏学生的人数,输出每个学生要说的话。

【输入格式】

输入一个正整数 n

【输出格式】

输出列表,包含 n 个元素,如题干所述

【输入样例】

14

【输出样例】

['1', '2', '2022', 'NOC', '5', '2022', '7', 'NOC', '2022', '10', '11', '2022', '13', '14']

【预设代码】

num = int(input('请输入:'))
results = []
for i in range(1, num + 1):
	if _______________:
		__________________
	elif i % 3 == 0:
		results.append('2022')
	elif i % 4 == 0:
		results.append('NOC')
	else:
		__________________
print(results)

第 24 题 问答题

编写一个可以计算给定数阶乘的程序,并且将计算结果输出。例如输入5,则求出 5x4x3x2x1 的结果。

注:使用递归的方法来解决这个问题

【输入格式】

输入一个正整数

【输出格式】

输出给定数的阶乘结果

【输入样例】

3

【输出样例】

6

【预置代码】

def fact(var):
	 if var == 0:
		 return 1
	 	res = _________
	 return res
var = int(input('请输入一个正整数:'))
print(fact(var))

第 25 题 问答题

动画片中有一个神奇道具,只需 1 滴药水,就可以将物品进行克隆。现在是第 1 分钟,有 1 个汉堡。当使用药水后,从第 3 分钟开始,每 1 分钟都会克隆出一个新的汉堡。每个新汉堡诞生 2 分钟后,也会保持每 1 分钟克隆出 1个新汉堡。请问经过 30 分钟后,我们一共会拥有多少个汉堡?

提示:

第 1 分钟:1 个

第 2 分钟:1 个

第 3 分钟:2 个(开始第一次克隆)

第 4 分钟:3 个

第 5 分钟:5 个(第 3 分钟新产生的汉堡开始克隆)

【输入格式】

【输出格式】

一个数字,表示汉堡的数量

第 26 题 问答题

画出如图所示图形:

图形说明:图形由四个扇形组成,每个扇形的圆心角是 45 度,扇形之间的角度也为 45 度

边长说明:扇形圆弧距圆心的半径为 150

颜色说明:四个扇形的颜色依次为红色(red), 橙色(orange), 蓝色(blue), 绿色(green)

第 27 题 问答题

使用循环语句,可以用字符组合出有规律的图形,观察下图的规律,输出由#和空格组成的中括号吧!

【输入格式】

输入一个正整数

【输出格式】

对应的图案

【输入样例 1】

5

【输出样例 1】

【输入样例 2】

4

【输出样例 2】