2021 年第 19 届 NOC Python 赛项选拔赛
一、 选择题
1、 如果我们在写程序时想要缩进,可以使用哪个按键呢?
A. 回车键
B. 空格键
C. shift 键
D. 删除键
答案: B
2、 按住 shift 再按数字 1,会输入哪个符号?
A. !
B. @
C. #
D. %
答案: A
3、 下面语句中能够实现输入的是:
A. input()
B. print()
C. int()
D. import()
答案: A
4、 下面哪个选项能够实现将 a赋值为 2021 ?
A. a = 2021
B. a == 2021
C. 2021 = a
D. 2021 == a
答案: A
5、 下述哪个选项可以作为变量的名字?
A. 5fu
B. num-1
C. if
D. a1
答案: D
6、 以下哪个选项可以让变量 a的值减少 1?
A. a = 1
B. a -1
C. a =- 1
D. a = a -1
答案: D
7、 下面哪个选项能够导入海龟画图库?
A. import random
B. import time
C. import turtle
D. import halo
答案: C
8、 可以通过以下哪种方式从整数 123 中提取出它的个位,得到数字 3?
A. 123 % 2
B. 123 /2
C. 123 % 10
D. 123 /10
答案: C
9、 现在有变量 a = “ 123 ” ,数据类型为字符串类型。现在想要让变量 a的值变为 123 ,
数据类型为整数类型。以下哪个语句能够实现?
A. int(a)
B. a = int(a)
C. a = str(a)
D. str(a)
答案: B
10 、 想从字符串 s= “ beautiful ” 中打印出字母 ” a” ,请问应该用以下哪种方式?
A. print(s[3])
B. print(s[a])
C. print(s[2])
D. print(s[-2])
答案: C
11 、 现在已知一个字符串 s= “ abcdef ” ,现在想从中拆出 ” def ” 这个部分,应该使用
以下哪个选项?
A. s[3:5]
B. s[3:6]
C. s[2:4]
D. s[2:5]
答案: B
12 、 请问 range(3) 所表示的范围应该是以下哪一个?
A. 0,1,2,3
B. 1,2,3
C. 0,1,2
D. 1,2
答案: C
13 、 阅读以下程序,请问程序运行后输入 32 ,会输出什么结果?
a= int(input(" 请输入: "))
ifa% 2== 0:
print(1)
else:
print(2)
A. 0
B. 1
C. 2
D. 3
答案: B
14 、 现在有一段程序如下,请问程序运行的结果是什么?
s= "hello my friend!"
if"hello" in s:
print("True")
else:
print("False")
A. True
B. False
C. hello my friend!
D. 报错
答案: A
15 、 阅读以下程序,请问程序运行后会输出几个 hello ?
n= 2
while n< 5:
print("hello")
n= n+ 1
A. 0
B. 3
C. 4
D. 5
答案: B
16 、 阅读以下程序,请问运行结束后会显示什么?
a= 2
b= 4
a= a*b
b= a*2
print(a, b)
A. 2 4
B. a b
C. 8 4
D. 8 16
答案: D
【 解析 】 a,b 初始值分别为 2, 4,运行 a= a*b后 a= 8,b= 4,运行 b= a*2后 a= 8, b= 16 。
17 、 阅读以下程序,程序输出的结果为?
a= 2
b= 8
ifa> 1:
ifb> 8:
print(a)
else:
print(b)
else:
ifb> 8:
print(a + b)
else:
print(a -b)
A. 2
B. 8
C. 10
D. -6
答案: B
【 解析 】 第一次判断, a= 2大于 1,因此执行 if后的语句,第二次判断 b= 8不大于 8,因此执行 els e
后的语句,即输出 b
18 、 阅读以下程序,程序输出的结果为?
n= 10
count = 0
while n< 30:
ifn% 5== 0:
count += 1
n= n+ 2
print(count)
A. 2
B. 4
C. 6
D. 8
答案: A
【 解析 】 程序目的是找到 10 至 30 以内(不包括 30 )所有偶数且是 5的倍数的数。
19 、 阅读以下程序,请问程序运行会输出什么结果?
num = 15
for iin range(5):
ifnum % 3== 0:
num = num /3
else:
num = 2*num + 1
print(num)
A. 11.0
B. 23.0
C. 47.0
D. 95.0
答案: D
【 解析 】 初始值为 15 ,进入循环 5次,第一次循环后,结果为 5.0 ,第二次循环后,结果为 11.0 ,第三
次循环后,结果为 23.0 ,第四次循环后,结果为 47 ,第五次循环后,结果为 95.0
20 、 阅读以下程序,请问程序运行后,最后的输出结果是?
ls = [81, 58, 19, 29, 85]
for iin range(2):
max = 0
for jin range(i,len(ls)):
ifls[j] > max:
max = ls[j]
max_index = ls.index(max)
temp = ls[i]
ls[i] = max
ls[max_index] = temp
print(ls)
A. [81, 58, 19, 29, 85]
B. [85, 58, 19, 29, 81]
C. [85, 81, 19, 29, 58]
D. [85, 81, 58, 29, 19]
答案: C
【 解析 】 该题程序为选择排序 , 每次循环找到当前位置的数 , 然后与此位置后的最大数交换位置 , 第一次
循环将 81 和 85 交换位置,第二次循环将 58 和 81 交换位置。
二、 程序题
1、 简易计算器 : 我们想做一个能够计算加法 , 减法 , 乘法的简单计算器 , 例如 : 计算 3 + 5,
我们依次输入数字 3, 符号 “ +” , 数字 5, 程序计算后输出结果 8, 请你完善代码 , 使代码
能够实现这种功能
【输入格式】
一共 3 行
第 1 行:一个整数 a
第 2 行:一个符号 op ,代表加号,减号,乘号
第 3 行:一个整数 b
【输出格式】
共 1 行,为 a和 b 进行运算后的结果
【输入样例】
3
+
5
【输出样例
2021年第19届NOC_Python赛项选拔赛(解析)真题