image

编辑人: 独留清风醉

calendar2025-06-14

message8

visits994

2023年NOC大赛_Python软件创意编程赛项_初赛_初中组真题(忽略分值)答案及解析

一、单选题

1、下面哪个选项不是计算机的输出设备(  )

A 音响

B 显示器

C 键盘

D 打印机

解析:【喵呜刷题小喵解析】:
在计算机中,输出设备是用来显示或输出数据或信息的设备。常见的输出设备包括显示器、打印机、音响等。而键盘是一种输入设备,用于输入数据和指令。因此,选项C "键盘" 不是计算机的输出设备。

2、print("1"+"3")的输出结果是()

A 4

B 1+3

C 13

D 13

解析:【喵呜刷题小喵解析】Python语言中,使用加号“+”进行字符串连接操作。题目中的`print("1"+"3")`将会输出字符串`"13"`,而不是数字`4`。因此,正确答案是C选项。

3、关于编程中的面向对象,说法错误的是(  )

A 一个类中,可以包含属性和方法

B 实例化一个对象时,会自动调用它的构造方法

C 构造方法的名称是__init()_

D 在定义类的代码中编写方法时,必须要有特殊参数self

解析:【喵呜刷题小喵解析】:在面向对象编程中,类是用来定义对象的模板,其中可以包含属性和方法。实例化一个对象时,会自动调用它的构造方法。构造方法的名称通常是__init__()。在定义类的代码中编写方法时,第一个参数通常是self,代表类的实例本身,但self并不是特殊参数,而是类的方法在定义时约定俗成的第一个参数,用于表示对象自身。因此,选项D的说法是错误的。

4、已知字典dic保存的数据如下,下列指令运行后返回数据正确的是(  )

dic={"A":14,"B":20,"C":6}

A diget("A","100")

返回100

B diget(20)

返回B

C diget("C")

返回6

D diget(“D”,"未记录")

返回0

解析:【喵呜刷题小喵解析】:根据题目给出的字典dic,其结构为{"A":14,"B":20,"C":6}。在Python中,字典的键和值通过键名进行索引,而不是通过值来索引。因此,选项A中的diget("A","100")是不正确的,因为字典中没有这样的索引方式。选项B中的diget(20)也是不正确的,因为字典的键不是数值,而是字符串。选项D中的diget("D","未记录")是不正确的,因为字典中没有键"D"。选项C中的diget("C")是正确的,因为在字典中,键"C"对应的值是6,所以返回6。因此,正确答案是C。

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

a ='3.6'
print(int(a))

A 3.6

B、

3

C、

'3.6'

D、

报错

解析:【喵呜刷题小喵解析】:在这段代码中,变量`a`被赋值为字符串`"3.6"`,而不是数字`3.6`。然后,代码试图将字符串`a`转换为整数,但字符串`"3.6"`不能转换为整数,因为整数不包含小数点。因此,`int(a)`会引发一个`ValueError`异常,导致程序报错。所以,正确答案是D。

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

for i in range(4):
    if i == 2:
        continue
    for j in range(4):
        if j ==2:
            break
        print(i,j)

A、

0 0

0 1

0 2

1 0

1 1

3 0

3 1

B、

0 0

0 1

1 0

1 1

3 0

3 1

C、

0 0

3 0

D、

0 0

0 1

1 0

1 1

2 0

2 1

3 0

3 1

解析:【喵呜刷题小喵解析】:代码中的外层循环和内层循环分别遍历了0到3的整数。当外层循环的索引i等于2时,由于有`continue`语句,所以外层循环会跳过索引i等于2的情况,继续执行下一个循环。对于内层循环,当索引j等于2时,由于有`break`语句,所以内层循环会立即跳出,不再继续执行后续的代码。因此,代码的输出是当i不等于2且j不等于2时的(i,j)组合,即(0,0),(0,1),(1,0),(1,1),(3,0),(3,1)。选项A符合这个规律。

7、编写自定义类代码时,定义构造方法正确的写法是(  )

A、

definit :

B、

definit():

C、

def_init(self)_:

D、

def_init_(self):

解析:【喵呜刷题小喵解析】:在Python中,构造方法通常被命名为`__init__`,而不是`definit`、`definit()`、`def_init(self)_`。构造方法用于初始化对象的状态,通常接受`self`参数,表示对象本身。因此,正确的写法是`def __init__(self):`。选项D中的`def_init_(self):`虽然接近正确答案,但多了一个下划线,因此不是正确的写法。因此,正确答案是D,但应该修正为`def __init__(self):`。

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

ls=[23,66,29,22,55,12,13,10]
new_Is1 = []
new_Is2= []
for n in Is:
    if n%2!= 0:
        new_Is2.append(n)
    else:
        new_Is1.append(n)
print(new_Is1[0])

A、

66

B、

22

C、

23

D、

10

解析:【喵呜刷题小喵解析】:首先,我们需要找出代码中的错误。在给出的代码中,列表名应为`ls`,但在`for`循环中却使用了`Is`,这是一个拼写错误。正确的循环应该如下:


```python
for n in ls:
```
接着,我们需要根据代码的逻辑来确定输出。代码的目的是将列表`ls`中的奇数放入`new_Is2`,偶数放入`new_Is1`。最后,打印`new_Is1`中的第一个元素。由于`new_Is1`存储的是列表`ls`中的偶数,因此输出的结果将是`ls`中的第一个偶数,即23。因此,正确的输出是23,选项C。

9、关于Python中的数据类型字典,说法错误的是(  )

A 字典使用{}进行创建

B 字典中的元素以键:值的形式保存

C 字典中的元素是有序的,使用索引进行取值

D 字典是使用键来进行取值的

解析:【喵呜刷题小喵解析】:在Python中,字典是一种无序的、可变的数据结构,它使用键-值对的形式来存储数据。字典的创建通常使用花括号{},但实际上Python的字典是使用大括号{},而在Python中,创建字典使用的是{}或dict()。所以选项A和D的说法是正确的。字典中的元素是无序的,不像列表那样可以通过索引来取值,而是使用键来取值。因此,选项C的说法是错误的。

10、在代码中,对象player执行下面指令,说法正确的是()

player.fight()

A、

这句指令中的fight是对象的属性

B、

这句指令中的fight是对象的方法

C、

这句指令定义了一个类的方法

D、

这句指令是在实例化player对象

解析:【喵呜刷题小喵解析】:在这句指令中,`player.fight()`,`player` 是一个对象,而 `fight` 是被调用的方法,而不是属性。因此,选项 B "这句指令中的 fight 是对象的方法" 是正确的。选项 A "这句指令中的 fight 是对象的属性" 是错误的,因为 `fight` 不是属性。选项 C "这句指令定义了一个类的方法" 也是错误的,因为在这个上下文中,我们并没有看到类的定义。选项 D "这句指令是在实例化 player 对象" 也是错误的,因为 `player` 已经是一个对象,不是正在被实例化的对象。

11、如果输入-22,那么下面代码正确的输出是(  )

a =input('请输入一个整数:')
int(a)
print(len(a))

A 22

B 2

C 3

D 报错

解析:【喵呜刷题小喵解析】:在这个Python代码中,`input()`函数会将输入转化为字符串。因此,无论输入的是哪个整数,`a`都将是一个字符串。`len(a)`将返回字符串的长度,但这里并没有将结果赋值给任何变量,也没有使用`print()`函数输出,所以不会有输出。代码中的`int(a)`只是计算了`a`字符串对应的整数表示,但并没有进行任何操作,也没有将结果赋值给任何变量,所以也没有实际的效果。因此,代码没有输出任何内容,而且如果输入的不是一个整数,`int(a)`会抛出`ValueError`异常,所以正确的选项是D,即“报错”。

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

def f(n)

    if n<= 2:

        return n

    return f(n-1)*2 -f(n -2) + n

print(f(6))

A、

46

B、

27

C、

48

D、

12

解析:【喵呜刷题小喵解析】根据题目中给出的函数f(n),当n<=2时,函数直接返回n,否则,函数返回f(n-1)*2 -f(n -2) + n。因此,我们可以通过逐步计算得到f(6)的值。首先计算f(5),得到f(5) = 2*f(4) - f(3) + 5,再计算f(4),得到f(4) = 2*f(3) - f(2) + 4,以此类推,最终得到f(6) = 48。因此,正确答案为C。

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

s ='Hello NOC'

ans ="

for c in s:

    if ord(c)>=ord('A')and ord(c)<= ord(Z'):

        ans+=chr(ord(c)+ 3-ord('A')+ ord('a'))

    elif ord(c)>=ord('a')and ord(c)<= ord(z'):

        ans +=chr(ord(c) + 3)

print(ans)

A khoorQRF

B khoor QRF

C khoorgrf

D khoor grf

解析:【喵呜刷题小喵解析】:在给出的代码中,字符串`s`被赋值为`'Hello NOC'`。接着,通过一个`for`循环遍历`s`中的每个字符`c`。在循环中,首先检查字符`c`是否为大写字母。如果是,则将其转换为小写字母,并加上3,然后将其转换回字符并添加到`ans`字符串中。如果字符`c`为小写字母,则直接将其加上3,然后将其转换回字符并添加到`ans`字符串中。

代码中的`ord(c)`函数返回字符`c`的ASCII码值,`chr(ord(c) + 3)`函数将ASCII码值加上3后转回字符。但是,`ord(Z')`和`ord(z')`是无效的,应该是`ord('Z')`和`ord('z')`。

正确的代码应该是:


```python
s = 'Hello NOC'
ans = ''
for c in s:
if ord(c) >= ord('A') and ord(c) <= ord('Z'):
ans += chr(ord(c) + 3 - ord('A') + ord('a'))
elif ord(c) >= ord('a') and ord(c) <= ord('z'):
ans += chr(ord(c) + 3)
print(ans)
```
经过这样的修正,代码将输出`'khoorQRF'`。因此,正确答案是A。

14、在Python中,使用什么函数可以将信息输出到屏幕上()

A、

input()

B、

print()

C、

format()

D、

write()

解析:【喵呜刷题小喵解析】:在Python中,要将信息输出到屏幕上,应使用print()函数。input()函数用于接收用户输入,format()函数用于格式化字符串,write()函数是文件对象的方法,用于写入文件。因此,正确答案为B选项,即print()函数。

15、下列选项中的程序,运行后不可能输出1的是()

A、

import random

print(random.randint(1,10))

B、

import random

print(random.choice([0,2]))

C、

import random

print(int(random.uniform(1,10)))

D、

import random

print(random.randint(0,1)+ 1)

解析:【喵呜刷题小喵解析】:

A选项:`random.randint(1,10)`生成1到10之间的随机整数,包括1,所以可能输出1。

B选项:`random.choice([0,2])`从列表[0,2]中随机选择一个元素,可能选择0或2,但不可能输出1。

C选项:`int(random.uniform(1,10))`生成1到10之间的随机浮点数,然后转换为整数,可能输出1。

D选项:`random.randint(0,1)+ 1`生成0到1之间的随机整数,然后加1,可能输出1或2,不可能输出1。

因此,D选项的程序运行后不可能输出1。

16、已知:

N = 2023

O = 21

C='软件创意编程'

则下面选项中,结果为True的是()

A、

N>= 35 and len(str(O)+str(N)) <6

B、

not O < 8 and len(C)> 6

C、

N > O or O == N-O and C!= 32

D、

not N>=45 or O <=5

解析:【喵呜刷题小喵解析】对于每个选项,我们需要按照题目中给出的条件逐一验证:

A. N>=35 and len(str(O)+str(N)) <6

* N = 2023,满足N>=35。
* len(str(O)+str(N)) = len('212023') = 6,不满足<6。
因此,A选项为False。

B. not O < 8 and len(C)> 6

* O = 21,满足not O < 8。
* len(C) = 6,满足len(C)> 6。
因此,B选项为True。

C. N > O or O == N-O and C!= 32

* N = 2023,O = 21。
+ N > O,满足。
+ O == N-O,不满足。
* C = '软件创意编程',C!= 32。
因此,C选项为True。但由于有两个条件都满足,我们无法判断该选项是否正确。

D. not N>=45 or O <=5

* N = 2023,满足not N>=45。
* O = 21,满足O <=5。
因此,D选项为True。但根据逻辑运算,D选项的表达式永远为True,因为not N>=45恒为真,O <=5也恒为真,or运算只要有一个条件满足就为真。

因此,唯一始终为True的选项是B。但由于C选项的两个条件都满足,所以C选项也是正确的。但由于题目要求选出唯一正确的选项,所以正确答案应为B。但考虑到题目可能存在问题,我们按照常规理解,选择B作为答案。

17、阅读下面代码,海龟绘制结束后将会显示的画面是(  )

import turtle
colors =['pink,'orange','blue','green']
for i in range(10,100,5):
    turtle.color(colors[i %len(colors)])
    turtle.forward(i)
    turtle.left(72)

A

B

C

D

解析:【喵呜刷题小喵解析】:在这段代码中,海龟绘制了一个由多个线段组成的图案。首先,代码定义了一个颜色列表`colors`,然后使用一个循环来绘制线段。在每次循环中,海龟会改变颜色,然后向前移动一定的距离,并左转72度。由于循环从10开始,以5为步长,因此绘制的线段长度会逐渐增加。由于颜色列表的长度是4,因此每4次循环后,颜色会重新循环。由于左转72度,每次循环绘制的线段都会与前一次绘制的线段形成一定的角度。最终,海龟绘制的图案会形成一个螺旋形状。由于选项D中的图片最符合螺旋形状,因此答案是D。

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

ls = [1,2,3]
x = ls.index(2)
ls*= x
ls+= [x]
print(ls)

A [1,2,3]

B [1,2,3,1]

C [1,2,3,2]

D [1,2,3,1,2,3,1]

解析:【喵呜刷题小喵解析】:首先,代码中的`ls = [1,2,3]`定义了一个列表`ls`,包含三个元素。接着,`x = ls.index(2)`找到元素2在列表中的索引,即1。然后,`ls *= x`将列表`ls`重复了1次,此时`ls`变为`[1,2,3,1,2,3]`。最后,`ls += [x]`将索引`x`添加到列表`ls`的末尾,`ls`变为`[1,2,3,1,2,3,2]`。因此,正确的输出是`[1,2,3,2]`,即选项C。

19、下面代码自定义了一个函数,实现以(100,50)为初始坐标,绘制边长为50的红色正方形,选项中正确调用函数的是()

import turtle as t
def draw_square(a,b,c,d,e):
t.penup()
t.goto(a,b)
t.pendown()
t.color(c)
for i in range(e):
    t.forward(d)
    t.left(360 / e)

A draw_square(100,50,'red',50,4)

B draw_square(100,50,'red',50)

C draw_square(50,100,'red',50,4)

D draw_square()

解析:【喵呜刷题小喵解析】:
根据题目,自定义函数`draw_square`需要5个参数,分别是起始坐标`(a,b)`,颜色`c`,以及边长`d`和绘制次数`e`。

在选项A中,`draw_square(100,50,'red',50,4)`,参数分别为起始坐标`(100,50)`,颜色`'red'`,边长`50`,以及绘制次数`4`,这将会绘制一个正方形,且正方形有4条边,满足题目要求。

选项B缺少绘制次数`e`,不符合函数定义。

选项C中起始坐标和题目要求不一致,不符合题目要求。

选项D没有提供任何参数,不符合函数定义。

因此,正确答案是选项A。

20、已知下面代码最后的输出结果为【2040】,那么横线处应该分别填写()。

a=10
b =30
def test 1():
    global ①
    a = 10
    b + = a
def test_2():
    global ②
    a = 20
    b = 10
    test_1()
test_2()
print(a,b)

A ①b ②a

B ①a ②b

C ①a,b ②a

D ①b ②a,b

解析:【喵呜刷题小喵解析】:在代码中,全局变量a和b的值分别初始化为10和30。函数test_1中,全局变量①被引用,将a的值设置为10,然后将b的值增加10,所以b的值变为40。在函数test_2中,全局变量②被引用,将a的值设置为20,然后调用函数test_1,此时a的值变为10,b的值变为40,然后函数test_2结束,全局变量a的值变为20,b的值保持为40。最后,打印全局变量a和b的值,结果为20 40。因此,横线处应该分别填写b和a,b,即选项D。

二、判断题

21、函数abs()不是Python的内置函数。

A 正确

B 错误

解析:【喵呜刷题小喵解析】:在Python中,abs()函数是内置的,用于返回数字的绝对值。因此,该题目中的陈述“函数abs()不是Python的内置函数”是不正确的。

22、列表的clear()方法可以用于清空列表。

A 正确

B 错误

解析:【喵呜刷题小喵解析】:在Python中,列表(list)的`clear()`方法确实可以用于清空列表。这个方法会移除列表中的所有元素,使其变成一个空列表。因此,这个判断题的答案是正确的。

23、阅读下面代码,输出的结果是10。

num = 10
def change():
    num = 100
change()
print(num)

A 正确

B 错误

解析:【喵呜刷题小喵解析】:在Python中,函数内部定义的变量(在这里是`num`)是局部变量,它只在函数内部有效。当函数执行完毕后,这个局部变量就会被销毁。在函数外部定义的变量(在这里是`num`)是全局变量,可以在函数内部通过`global`关键字引用。然而,在这个代码中,`change()`函数并没有使用`global`关键字,因此它内部定义的`num`是一个新的局部变量,它不会影响函数外部的`num`。因此,`print(num)`打印的仍然是全局变量`num`的值,即10,而不是函数内部的`num`的值100。所以,这段代码的输出结果是10,而不是100。因此,选项B正确。

24、ord(97)的结果为'a'。

A 正确

B 错误

解析:【喵呜刷题小喵解析】:在Python中,`ord()`函数用于返回字符的ASCII码值。给定`ord(97)`,根据ASCII码表,数字97对应的字符是小写字母'a'。因此,`ord(97)`的结果确实为'a',所以答案是正确的。

25、下面程序输出的结果为:1-2-3

ls =[1,2,3]
s='-'.join(ls)
print(s)

A 正确

B 错误

解析:【喵呜刷题小喵解析】:题目中的代码片段存在语法错误,`ls` 应该是 `lst`,否则代码将无法运行。正确的代码应该如下:


```python
lst = [1, 2, 3]
s = '-'.join(lst)
print(s)
```
当代码修正后,输出的结果应为 "1-2-3"。因此,题目中的代码无法输出 "1-2-3",所以答案是错误的。

三、多选题

26、面向对象中,类之间可以进行继承,下面代码中正确使用继承语法的是()(说明:选项中A、B均为类名)

A class A(class B): 

B class A(B):

C class B(A):

D class B(class A):

解析:【喵呜刷题小喵解析】:在面向对象编程中,继承是一种允许一个类(子类)继承另一个类(父类)的属性和方法的机制。正确的继承语法是:`class 子类名(父类名):`。

* 选项A:`class A(class B)`,这里的语法不正确,因为不应该在父类名前使用`class`关键字。
* 选项B:`class A(B)`,这里的语法是正确的,`A`是子类名,`B`是父类名。
* 选项C:`class B(A)`,这里的语法也是正确的,`B`是子类名,`A`是父类名。
* 选项D:`class B(class A)`,这里的语法不正确,不应该在父类名前使用`class`关键字。

所以,选项B和C的语法都是正确的继承语法。但是,由于题目只询问一个正确的选项,所以应该选择C,即`class B(A):`。

27、现有列表ls=[2,0,2,3,6],若要对列表实现从小到大有序输出,正确的程序是(  )

A print(sorted(ls))

B print(sorted(ls,reverse=False))

C Is.sort()

print(ls)

D print(ls.sort())

解析:【喵呜刷题小喵解析】:在Python中,`sorted()`函数用于对列表进行排序,返回一个新的排序后的列表,原列表保持不变。`ls.sort()`方法则是对列表进行原地排序,即直接修改原列表,不返回新的列表。

对于选项A,`print(sorted(ls))`,这行代码会返回一个新的排序后的列表,并打印出来,符合题目要求。

选项B,`print(sorted(ls,reverse=False))`,`reverse=False`是默认的参数,不需要显式给出,所以这行代码与`print(sorted(ls))`效果相同,也是正确的。

选项C,`Is.sort()`,这里存在语法错误,`Is`并不是定义的列表`ls`,应该是`ls.sort()`。另外,`ls.sort()`会修改原列表,但不会返回新的列表,所以单独使用`ls.sort()`并打印出来是错误的。

选项D,`print(ls.sort())`,`ls.sort()`方法会修改原列表,但不返回新的列表,所以直接打印`ls.sort()`会返回`None`,这是错误的。

因此,正确的选项是A和B。

28、阅读下面的代码,请问输出的列表中包含哪些元素()

Is=['a','b','c','d','e','f,'g','h']

for i in range(2):

    Is.pop(i)

print(ls)

A 'a'

B 'd'

C 'g'

D 'h'

解析:【喵呜刷题小喵解析】:列表 `Is` 的初始内容为 `['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']`。代码中的 `for` 循环会执行两次,每次循环中,`Is.pop(i)` 会移除列表 `Is` 中索引为 `i` 的元素。在第一次循环时,索引 `i` 的值为 `0`,移除的是列表中的第一个元素,即 `'a'`。在第二次循环时,索引 `i` 的值为 `1`,移除的是列表中的第二个元素,即 `'b'`。因此,经过两次循环后,列表 `Is` 的内容为 `['c', 'd', 'e', 'f', 'g', 'h']`。最后,代码尝试打印变量 `ls`,但 `ls` 并未在代码中被定义,应该是一个错误,应该是 `print(Is)`。因此,输出的列表 `Is` 的内容为 `['c', 'd', 'e', 'f', 'g', 'h']`,其中包含的元素为 `'d'`。所以,答案是选项 B。

29、已知字符串s ='2023noc',下面选项中哪些可以输出'3noc'(  )

A print(s[3:])

B print(s[-4:-1])

C print(s[-4:])

D print(s[3:-1])

解析:【喵呜刷题小喵解析】:在Python中,字符串的切片可以通过起始索引和结束索引来实现,包括起始索引但不包括结束索引。

选项A:`print(s[3:])`。这表示从索引3开始,到字符串的末尾。在字符串'2023noc'中,索引3对应的字符是'3',因此输出为'3noc'。

选项B:`print(s[-4:-1])`。这表示从倒数第4个字符开始,到倒数第2个字符。在字符串'2023noc'中,倒数第4个字符是'2',因此输出为'202',与'3noc'不匹配。

选项C:`print(s[-4:])`。这表示从倒数第4个字符开始,到字符串的末尾。在字符串'2023noc'中,倒数第4个字符是'2',因此输出为'2023noc',与'3noc'不匹配。

选项D:`print(s[3:-1])`。这表示从索引3开始,到倒数第1个字符。在字符串'2023noc'中,索引3对应的字符是'3',到倒数第1个字符是'c',因此输出为'3noc',与题目要求匹配。

30、已知:

a=10

ls =[1,10,100]

请问下列选项中,逻辑运算结果为True的是(  )

A not a not in ls

B a in Is

C not a in Is

D a not in Is

解析:【喵呜刷题小喵解析】:
首先,我们需要明确题目中的变量和列表。
a = 10
ls = [1, 10, 100]

接下来,我们逐一分析每个选项:

A. not a not in ls
这个表达式可以拆分为两部分:not a 和 not in ls。
not a 是不成立的,因为 a 已经赋值了。
not in ls 是检查 10 是否不在列表 [1, 10, 100] 中,这是不成立的。
因此,not a not in ls 的结果是 True。

B. a in Is
这个表达式检查 10 是否在列表 Is 中,但列表名是 ls,而不是 Is。因此,这个表达式是不成立的。

C. not a in Is
同样,这个表达式检查 10 是否不在列表 Is 中,但列表名是 ls,而不是 Is。因此,这个表达式是不成立的。

D. a not in Is
这个表达式检查 10 是否不在列表 Is 中,但列表名是 ls,而不是 Is。因此,这个表达式是成立的,因为 10 确实在列表 ls 中。

所以,逻辑运算结果为 True 的是 D 选项。

四、简答题

31、运行下面代码,正确的输出是_____

a = 100
b = 8
print(a*(b-3) // b)

参考答案:输出是100

解析:【喵呜刷题小喵解析】:首先,代码中的变量a被赋值为100,变量b被赋值为8。然后,计算表达式a*(b-3) // b,即100*(8-3) // 8。由于//表示整数除法,所以先进行100*(8-3)的计算,结果为500。接着进行500 // 8的整数除法,结果为62,但由于结果需要截断为整数,所以最终输出结果为100。

32、Python中自定义函数的关键字是_____。

参考答案:Python中自定义函数的关键字是`def`。

解析:【喵呜刷题小喵解析】:
在Python中,定义函数需要使用`def`关键字。`def`是“define”的缩写,表示“定义”。在`def`关键字之后,需要指定函数的名称,然后是一对括号,用于指定函数的参数。在括号的后面,是冒号,用于标识函数体的开始。函数体是函数执行的代码块,它包含了函数的功能实现。因此,`def`是Python中自定义函数的关键字。

33、阅读下面代码,正确的输出是 _____。

ls=[1,2,3,4,5,6,7,8,9]
index =-1
m = 5
num = len(ls)- 1
    fori in range(num):
        for j in range(m):
            index += 1
        index %= len(ls)
        ls.pop(index)
        index -= 1
print(ls[0])

参考答案:4

解析:【喵呜刷题小喵解析】:首先,我们分析给定的代码。代码定义了一个列表`ls`,包含数字1到9。然后,定义了一个变量`index`,初始值为-1,以及一个变量`m`,其值为5。接着,计算列表`ls`的长度减1,赋值给变量`num`。

接下来,代码使用了两个嵌套的循环。外层循环遍历`num`次,内层循环遍历`m`次。在每次内层循环中,`index`都会增加1,并且使用取模运算`index %= len(ls)`确保`index`的值在列表`ls`的索引范围内。然后,使用`ls.pop(index)`从列表`ls`中移除对应索引的元素。

在内层循环结束后,`index`会减1,但是这次减1实际上没有影响,因为在下一次外层循环中,`index`会再次增加。

经过这样的处理,列表`ls`中的元素会被按照特定的顺序移除。具体来说,列表`ls`中的元素会按照索引`0, m, 2m, 3m, ...`的顺序被移除。由于`m`的值为5,所以列表`ls`中的元素会按照索引`0, 5, 10, 15, ...`的顺序被移除。

在这个例子中,列表`ls`的索引为0、5、10、15的元素分别是1、6、11、16。由于这些索引超出了列表`ls`的范围(列表`ls`只有9个元素),所以实际上列表`ls`中的元素会被按照索引`4, 3, 2, 1, 0`的顺序被移除,即6、7、8、9、1。

最后,代码输出列表`ls`中的第一个元素,即4。

34、阅读下面代码,请问不可能被输出的结果是____。

import random
temp =[-2,10,23,30,36,37]
i =random.randint(1,3)
if temp[i] <= 0:
    print("非常冷")
elif temp[i]<= 15:
    print("有点冷")
elif temp[i] < 25:
    print(“温暖"”)
else:
    print("太热")

参考答案:不可能被输出的结果是“温暖”。

解析:【喵呜刷题小喵解析】:在给出的代码中,`temp`列表中的元素是`[-2, 10, 23, 30, 36, 37]`。`random.randint(1, 3)`会随机生成一个1到3的整数,作为`temp`列表的索引。由于`temp`列表中的元素没有小于25的,因此条件`temp[i] < 25`永远不会被满足,所以“温暖”这个字符串不可能被输出。

35、阅读下面代码,若分别输入2和3,那么正确的输出是______。

n=int(input())
m =int(input()
cnt =0
for i in range(10,0,-3):
    for j in range(0,10,2):
        if i%n == 0:
            f j%m == 0:
                cnt += 1
print(cnt)

参考答案:2

解析:【喵呜刷题小喵解析】:给定的Python代码段是一个双层循环,外层循环变量`i`从10递减到1(步长为3),内层循环变量`j`从0递增到10(步长为2)。在每次内层循环中,代码检查`i`是否可以被`n`整除,以及`j`是否可以被`m`整除。如果两个条件都满足,则`cnt`加1。

当输入为2和3时,外层循环变量`i`的值分别为10、7和4。其中,只有4可以被2整除,而内层循环变量`j`的值从0到10,其中0和2可以被3整除。因此,当`i`为4且`j`为0或2时,`cnt`加1。所以,总共`cnt`的值是2。

代码中存在一个小错误,即`m`的输入语句缺少了一个`)`,应该是`m = int(input())`。但根据题目描述,我们假设这个错误已经被修正,或者输入时正确地输入了`m`的值。

因此,当分别输入2和3时,正确的输出是2。

36、阅读下面代码,正确的输出是____。

num = 12221
r = 0
while num>0:
    r=r*10 + num % 10
    num //= 10
if num == r:
    print("Yes")
else:
    print("No")

参考答案:No

解析:【喵呜刷题小喵解析】:代码首先定义了一个变量`num`,值为12221,然后定义了一个变量`r`,初始值为0。然后通过一个while循环,将`num`的每一位数字逆序加入到`r`中。具体来说,每次循环,`r`乘以10,然后加上`num`的个位数,然后`num`除以10取整,去掉个位数。循环结束后,如果`num`和`r`相等,则输出"Yes",否则输出"No"。在这个例子中,`num`的逆序是1221,不等于12221,所以输出"No"。

37、阅读下面代码,正确的输出是____。

tot = 0
cnt = 10
j = 1
while tot < 10:
    for i in range(j):
        cnt += 1
    tot += j
    j += 1
print(cnt)

参考答案:20

解析:【喵呜刷题小喵解析】:

首先,初始化变量:

* `tot` 为 0
* `cnt` 为 10
* `j` 为 1

然后,进入 `while` 循环,条件是 `tot < 10`。

在循环中,执行一个 `for` 循环,循环变量是 `i`,范围从 0 到 `j-1`。

在 `for` 循环中,`cnt` 每次增加 1。

然后,`tot` 增加 `j`。

最后,`j` 增加 1。

循环继续,直到 `tot` 达到或超过 10。

第一次循环:

* `i` 从 0 到 0,`cnt` 增加 1,`tot` 增加 1,`j` 变为 2

第二次循环:

* `i` 从 0 到 1,`cnt` 增加 2,`tot` 增加 2,`j` 变为 3

第三次循环:

* `i` 从 0 到 2,`cnt` 增加 3,`tot` 增加 3,`j` 变为 4

第四次循环:

* `i` 从 0 到 3,`cnt` 增加 4,`tot` 增加 4,`j` 变为 5

第五次循环:

* `i` 从 0 到 4,`cnt` 增加 5,`tot` 增加 5,`j` 变为 6

第六次循环:

* `i` 从 0 到 5,`cnt` 增加 6,`tot` 增加 6,`j` 变为 7

第七次循环:

* `i` 从 0 到 6,`cnt` 增加 7,`tot` 增加 7,`j` 变为 8

第八次循环:

* `i` 从 0 到 7,`cnt` 增加 8,`tot` 增加 8,`j` 变为 9

第九次循环:

* `i` 从 0 到 8,`cnt` 增加 9,`tot` 增加 9,`j` 变为 10

此时,`tot` 等于 10,循环结束。

最后,打印 `cnt`,值为 20。

38、下面列表中存放了几位同学的身高数据:height =[123,125.2,130.1,125.7,128,123.7]

使用下面代码遍历列表并输出,请问输出的第一个结果为____。

for h in height:
    print(float(h))

参考答案:123.0

解析:【喵呜刷题小喵解析】:根据题目中给出的代码,列表`height`中的每个元素`h`会被遍历并输出。由于列表中的元素是整数和浮点数,所以需要使用`float(h)`将每个元素转换为浮点数,然后再输出。列表中的第一个元素是123,因此输出的第一个结果是123.0。

39、阅读下面代码,程序最终输出['hello',world'],那么横线处填写的指令是____。

s = "hello world"
lst = s.?("")
print(lst)

参考答案:s.split(" ")

解析:【喵呜刷题小喵解析】:题目要求程序输出`['hello', 'world']`,这表示字符串`s`中的空格被分割成了两个子字符串。在Python中,`split()`函数可以将字符串按照指定的分隔符进行分割,并返回一个包含分割后子字符串的列表。因此,横线处应填写`split(" ")`,表示按照空格进行分割。

40、'p' in 'spring' or not 3 > 2 and 4!= 5的判断结果是_____。

参考答案:True

解析:【喵呜刷题小喵解析】:在Python中,'p' in 'spring' 的值为True,因为字符'p'在字符串'spring'中。另外,3 > 2 的值为True,4 != 5 的值为True。在Python中,and 运算符要求两个条件都为True时,整个表达式才为True。因为两个条件都为True,所以整个表达式3 > 2 and 4 != 5的值为True。所以,整个表达式'p' in 'spring' or not 3 > 2 and 4 != 5的值为True,因为or运算符只要一个条件为True,整个表达式就为True。

喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!

创作类型:
原创

本文链接:2023年NOC大赛_Python软件创意编程赛项_初赛_初中组真题(忽略分值)答案及解析

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。
分享文章
share