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('?

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值