2024年NOC大赛软件创意编程(python初中组初赛)真题

05-01 1845阅读 0评论

2024年NOC大赛软件创意编程(python初中组初赛)真题

 题型和分值:单选题(20题,40分)、判断题(5题,10分)、多选题(5题,20分)、填空题(10题,30分)

一、单选题(每题2分,共20题,满分40分)

1、下面的程序,会无限循环下去的是( )

A:代码如下  

for a in range(10000):
	time.sleep(10)

 B:代码如下

var = 1
while var == 1:
	n = input("请输入一个数")
	print(n)
var += 10 

C:代码如下  

while True:
    break

D:代码如下  

a = [3,-1,',']
for i in a[:]:
    if 3 not in a:
        break

参考答案:B

参考解析:A选项,time.sleep(t)是用来暂停程序的,t表示程序暂停的秒数,每次循环一次暂停10s,经过10000次的循环,总共的暂停时间是10000*10s,因此A选项不会无限循环下去

B选项,var的值永远为1,B选项会永远循环下去,var+=10语句不属于循环体部分,因此不会被执行,本道题选择B选项,C选项,beak代表退出循环,D选项,if条件为真,但for循环循环3次后会正常退出。

 2、执行完下面代码后,输出的结果为( )

ls = [6, 1, 8, 6, 9, 6]
n = len(ls)
for i in range(n):
    for j in range(i+1,n):
        if ls[j]>ls[i]:
            tmp = ls[i]
            ls[i] = ls[j]
            ls[j] = tmp
print(ls)

A、[6,6,8,6,9,1]

B、[1,6,6,6,8,9]

C、[9,8,6,6,6,1]

D、程序报错无输出

参考答案:C

参考解析:本道题考查选择排序的原理与代码编写方式,它的工作原理是:第一次从待排序的数据元素选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零,从if语句部分可以看出如果待排序的元素比已排序的序列的末尾元素的值大,就与其交换,显然,这是降序排列,因此本题选择C选项。

3、使用字典统计字符串中每个字符出现的次数,横线上应该填写的代码是( )  

dic = {}
for c in 'an apple a day keeps the doctor away':
    dic[c] = __________
print(dic)

A、dic[c]+1

B、dic.get(c)+1

C、dic.get(c,1)

D、dic.get(c,0)+1

参考答案:D

参考解析:A选项,如果dic字典中不存在c变量所代表的字符,那么会报KeyError错误,如果存在,返回c变量代表的key所对应的value的值,B选项,dic.get(c)如果找不到c变量所代表的字符会返回None,None不能和整数1相加,会报'NoneType' and 'int'错误,C选项表示如果找不到c变量所代表的字符,就返回值整数1,如果找到了,就返回c变量字符所对应的value值,但是题目是要统计每个字符出现的次数,因此需要从0开始统计,D选项代表如果找不到变量c所代表的字符,get函数就返回0,所以选择D选项。

 4、阅读下面的代码,正确的输出是( )

x = ['N','O','C']
for i in x:
    x.append(i.lower())
print(x)

A、['n','o','c']

B、['N','O','C','n','o','c']

C、['N','O','C']

D、程序进入死循环,没有输出

参考答案:D

参考解析:代码所代表的含义为:遍历列表x,将列表x中的元素转换为小写,然后追加到列表末尾,每进行一次循环,列表中的元素都多一个,无限循环下去,因此程序陷入了死循环,列表x永远不会遍历完毕。

5、阅读下面程序,假设键盘输入666,正确的输出是( )  

number = input()
str(number)
int(number)
print(number+number)

A、666

B、1332

C、666666

D、13321332

参考答案:C

参考解析:input函数读入的数据默认为字符串类型,str和int函数用来进行数据类型强制转换,虽然第3行代码将number转换为整型了,但是number本身的值还是字符串的666,只是int函数的返回结果为整型的666,这个返回的结果并没有重新赋值给number,number变量本身的数据类型还是str字符串类型,因此第4行代码代表将两个字符串666进行拼接,得到的结果为666666,所以本题选择C选项。

 6、某位初出茅庐的python初学者写出如下代码,程序执行后输出结果为( )

m = 2
if m//3 != 0:
    print(m,'不能被3整除')
else:
    print(m,'能被3整除')

A、2 能被3整除

B、m 不能被3整除

C、2 不能被3整除

D、m 能被3整除

参考答案:A

参考解析:python中“//”是一个算术运算符,表示整数除法,它可以返回商的整数部分(向下取整)。m为2,那么m//3的结果为0,因此程序执行else分支语句部分,所以程序输出:2 能被3整除,本题选择A选项。

7、已知字符串s='? an you ?an a ?an as a ?anner ?an?an a ?an'为被破坏的英文绕口令,想要复原绕口令,就需要将字符串中的'?'替换为字母'c',能实现这个功能的代码是( )  

A、s = split('?')

B、s = split('?','c')

C、s = s.replace('c','?')

D、s = s.replace('?','c')

参考答案:D

参考解析:Python中的split()函数是字符串类型(str)的一个方法,用于将字符串按照指定的分隔符进行分割,并返回一个包含分割结果的列表,split代表分割,因此A、B选项排除。Python的replace()方法用于将字符串中的某些字符替换为其他字符,replace(a,b),代表将所有出现的a字符,替换为b字符,因此本体选择D选项。

8、python表达式8-3**2%5( )  

A、-19

B、0

C、2

D、4

参考答案:D

参考解析:**的优先级高于%,因此先计算3**2,结果为9,然后计算9%5,结果为4,最后计算8-4,结果为4,因此本题选择D选项。

9、阅读以下程序,请问运行结束后会显示的是( )

x, y, z = 10, 20, 40
x, y = z/x, z-y
z = x*y
print(z)

A、80.0

B、40.0

C、20.0

D、10.0

参考答案:A

参考解析:第1行代码执行,x,y,z的值分别为10,20,40,第2行代码执行,x的值为z/x等于40/10=4.0,y的值为z-y等于40-20=20,第3行代码执行,z的值为x*y等于4.0*20=80.0,因此,本道题选择A选项。

10、在Python中,专门用于生成随机数的库是( )  

A、random

B、math

C、os

D、sys

参考答案:A

参考解析:random是随机库,random是Python内置的标准库,在程序中导入该库,可利用库中的函数生成随机数据,math是数学库,Python中的math库是一个包含数学函数和常量的内置库,它为各种数学运算提供了支持,这个库不需要安装第三方包即可直接使用,是Python标准库的一部分,os是操作系统库,os模块提供了许多与操作系统交互的函数和方法,sys库是Python的一个内置模块,它提供了对Python解释器的访问和控制,因此本题选择A选项。

11、现有一个名为data的字典,要获得键为'name'所对应的值,正确的代码是( )

A、data(name)

B、data('name')

C、data['name']

D、data.key('name')

参考答案:C

参考解析:A选项,如果要获取键name所对应的值是使用[  ],而不是使用(  ),所以A、B选项排除,且因为键name为一个字符串,因此在访问的时候需要加上引号,因此C选项正确,字典没有key方法,D选项错误,所以本题选择C选项。

12、对列表中的元素进行排序,应该使用哪个Python内置函数( )  

A、sorted()

B、max()

C、abs()

D、sum()

参考答案:A

参考解析:B选项的max用来求最大值,C选项的abs用来求绝对值,D选项的sum用来求总和,而A选项的sorted可以用来对列表中的元素进行排序,sorted函数执行后返回一个元素有序的新列表,原来列表的顺序不会改变。

13、想要在python中打开文件,在文件末尾添加新的内容,横线上应该填写的是( )  

A、'r'

B、'w'

C、'a'

D、'x'

参考答案:C

参考解析:A选项r代表以只读方式打开文件,文件只能读不能写,A错,B选项w代表写入文件,文件中原有的内容会被删除,B错,C选项a代表追加,新的内容会被写入到已有的内容之后,C对,D选项x代表写模式并且如果文件已经存在则会报错,因此本道题选择C选项。

14、在Python中,以下哪个表达式可以将字符串'123'中的每个字符转换为对应的ASCII码值,并以列表形式返回?( )  

A、[ord(c) for c in '123']

B、[ascii(c) for c in '123']

C、[chr(c) for c in '123']

D、[str(c) for c in '123']

参考答案:A

参考解析:ord()函数是Python中的一个库函数,用于从给定字符值中获取数字值,它接受一个字符并返回一个整数,即用于将字符转换为整数,即用于获取ASCII给定字符的值 ,A对。

 ascii()函数是Python内置的一个函数,它的作用是返回表示对象的ASCII码字符串,例如ascii('abc')就会返回'abc',ascii('1234')就会返回'1234',C选项, Python的chr函数是一个内置函数,用于将整数转换为对应的Unicode字符,C错,D选项,str函数是Python中的一个内置函数,用于将给定的对象转换为字符串类型,D错,本题选择A选项。

15、下列Python代码,在输入5时输出'Five'的是( )  

A、代码如下

x = input()
if x==5:
    print('Five')

B、代码如下

x = input()
if x=5:
    print('Five')

C、代码如下

x = input()
if x=='5':
    print('Five')

D、代码如下

x = input()
if x='5':
    print('Five')

参考答案:C

参考解析:A选项,input函数默认读取的为字符串类型,因此需要和字符串的5做比较才对,因为'5'不会等于5,B选项,x=5代表将5赋值给x,语法错误,C选项,将输入的字符串和字符串5做比较,写法正确,D选项,x='5'代表将字符串的5赋值给x,语法错误。因此本题选择C

16、执行下面代码,最终输出的结果是( )  

m, n = 6, 88
def fn(n):
    global m
    m += 100
    n = 100
    return m
print(m,fn(n),n)

A、6 88 88

B、106 106 88

C、6 106 88

D、6 106 100

参考答案:C

参考解析:m赋值为6,n赋值为88,第一行的m与n是全局变量,print函数输出第一个参数的值为m,为6,print函数的第一个参数为调用fn函数,即fn(88),在fn自定义函数中,用关键字声明使用全局变量m,那么m+=100,即m的值变为106,并且返回,而在fn函数的n为fn函数的局部变量,和全局变量的n不是同一个,当函数执行完毕,该局部变量n也不复存在,因此print函数的第二个参数的值为106,而print函数第三个参数的值为全局变量的n,为88,n的值并没有受到自定义函数fn的影响,因此,本题选择C选项。

17、已知字符串s='Data Science',提取单词'Data'的选项是( )  

A、s[0:3]

B、s[:4]

C、s[5:]

D、s[1:4]

参考答案:B

参考解析:A选项切出来的字符串为Dat,B选项默认从0开始,切到字符串索引为3的位置,即Data,因此本题选择B选项,C选项切出来的字符串为Science,D选项切出来的字符串为ata。

18、以下不属于冯·诺依曼体系计算机组成部分的是( )  

A、逻辑器

B、运算器

C、存储器

D、控制器

参考答案:A

参考解析:冯·诺依曼体系计算机主要由运算器、控制器、存储器、输入设备、输出设备五大部分组成,题目问不属于的部分,所以本题选择A选项逻辑器。

 19、已知变量赋值如下,以下选项中,结果为False的是( )

x = 15
y = 12

A、x>0 and y


免责声明
本网站所收集的部分公开资料来源于AI生成和互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
评论列表 (暂无评论,1845人围观)

还没有评论,来说两句吧...

目录[+]