2024年9月中国电子学会青少年软件编程(Python)等级考试试卷(六级)答案 + 解析

embedded/2024/11/27 20:15:37/

一、单选题

1、下面代码运行后出现的图像是?( )

import matplotlib.pyplot as plt

import numpy as np

x = np.array(['A', 'B', 'C', 'D'])

y = np.array([30, 25, 15, 35])

plt.bar(x, y)

plt.show()

A.

B.

C.

D.

正确答案:A

答案解析:代码中的bar( )函数来生成柱形图。

2、下面代码的输出结果正确的是?( )

import numpy as np

dt = np.dtype('i1')

print(dt)

A. int64

B. int32

C. int16

D. int8

正确答案:D

答案解析:数据类型对象 dtype中int8, int16, int32, int64 四种数据类型可以使用字符串 'i1', 'i2','i4','i8' 代替。

3、下面代码的输出结果正确的是?( )

import numpy as np

a = np.array([1, 2, 3], dtype = float)  

print (a)

A. [1.+0.j 2.+0.j 3.+0.j]

B. [1. 2. 3.]

C. [1, 2, 3]

D. [ True  True  True]

正确答案:B

答案解析:这段代码创建了一个numpy数组a,其中包含三个浮点数(1.0, 2.0, 3.0)。

由于默认情况下,numpy数组使用科学计数法进行打印,所以数字后面不会有小数点。但是,由于我们为数组指定了浮点数类型dtype=float,所以打印结果中的数字后面会有小数点。

4、下面代码的输出结果正确的是?( )

import numpy as np

student = np.dtype([('name','S20'), ('age', 'i2'),('height', 'f4')])

a = np.array([('Alice', 20, 55),('Jone', 21, 48)], dtype = student)

print(a)

A. [(b'Alice', 20., 55.) (b'Jone', 21., 48.)]

B. [(b'Alice', 20., 55) (b'Jone', 21., 48)]

C. [(b'Alice', 20, 55.) (b'Jone', 21, 48.)]

D. {(b'Alice', 20, 55.), (b'Jone', 21, 48.)}

正确答案:C

答案解析:这段代码是使用NumPy库来创建一个自定义的数据类型student,这个数据类型由三个字段组成:

      * `name`:一个长度为20的字符串('S20'表示字符串长度为20)。

      * `age`:一个2字节的整数('i2'表示2字节的整数)。

      * `height`:一个4字节的浮点数('f4'表示4字节的浮点数)。

使用student这个数据类型来创建一个数组a,包含两个元组,每个元组都符合前面定义的`student`数据类型。即每个元组都有一个长度为20的字符串、一个2字节的整数和一个4

5、关于SQLite,说法错误的是?( )

A. SQLite创建表时,必须指定主关键字PRIMARY KEY

B. 连接数据库conn=sqlite3.connect('d:/test.db') ,执行SQL语句都必须用conn.execute开头

C. 语句conn.commit()表示保存数据到数据库

D. SQLite是Python的内置库,可以直接用import sqlite3导入

正确答案:A

答案解析:主关键字PRIMARY KEY可以不指定,默认用序号当作主关键字。

6、关于SQLite,说法错误的是?( )

A. 同一个数据库文件中,不能创建名称相同的表

B. SQLlite Expert是常用的查看数据库的软件

C. Python可以连接已存在的数据库

D. 向数据库的表中插入数据时,所有字段都必须输入完整(不允许留空)

正确答案:D

答案解析:向数据库的表中插入数据时,指定了NOT NULL时不能留空。

7、关于导入SQLite,正确的导入语句是?( )

A. import SQLite3

B. import sqlite3

C. import sqlite

D. import SQLite

正确答案:B

答案解析:import sqlite3正确导入SQLite。

8、关于SQLite连接数据库语句,正确的是?( )

A. conn=sqlite.connect('d:/test.db')

B. conn=sqlite.connect('d:\test.db')

C. conn=sqlite3.connect('d:/test.db')

D. conn=sqlite3.connect('d:\test.db')

正确答案:C

答案解析:表示路径的\必须更换为/。

9、有一个文件记录了 1000个学生的高考总分,每一行信息长度是 20 个字节,要想只读取最后 10 行的内容,不能直接用到的函数是?( )

A. seek()

B. readline()

C. open()

D. read()

正确答案:D

答案解析:seek,用于把文件指针移动到新位置;readline,从文件中读取一行;open,打开文件;read,从文件中读取指定的字符数,括号内无参数或者为负则读取所有内容。

10、以下选项中不是 Python 对文件的写操作方法的是?( )

A. writelines

B. writeline

C. writetext

D. write

正确答案:C

答案解析:writetext是一个用于文本处理和生成的Python框架,并非某个具体的操作方法。

11、以下语句的执行结果是?( )

with open('A.txt','w+') as f:

   f.write('hello')

   print(f.read())

A. 输出一个'hello'字符串

B. 写到文件A.txt里一个'hello'字符串

C. 写到文件A.txt里一个'hello'字符串并输出一个'hello'字符串

D. 打印'hello'

正确答案:B

答案解析:文件的读取模式为'w+',每次程序运行都会清除文件内容,重新进行写入,f.read(),在'r'模式下读取文件的内容。

12、如下选项中,对文件的描述错误的是?( )

A. 文件中能够包含任何数据内容

B. 文本文件和二进制文件都是文件

C. 文本文件不能用二进制文件方式读入

D. 文件是一个存储在辅助存储器上的数据序列

正确答案:C

答案解析:文本文件可以用二进制文件方式读入。

13、以下关于JSON格式的数据遵循的语法规则,错误的是?( )

A. 数据存储在键值对中

B. 数据的字段由分号分隔

C. 一个花括号保存一个JSON对象

D. 一个方括号保存一个数组

正确答案:B

答案解析:数据的字段由逗号分隔。

14、有一个名为scores.txt的文件,里面存储了一些学生的姓名和成绩,如下所示:

Alice 90

Bob 80

Charlie 85

David 75

Eve 95

你想用Python读取这个文件,并将每一行的数据格式化为一个元组,例如('Alice','90'),请补全下面的代码?( )

with open('scores.txt', 'r') as f:

   for line in f:

       # 将每一行的数据格式化为一个元组

       score = tuple(_______)

       print(score)

A. line.split()

B. line.split()

C. line.split(',')

D. line.strip(',')

正确答案:A

答案解析:split方法可以将一个字符串按照指定的分隔符切分成一个列表,例如'a,b,c'.split(',')的结果是['a', 'b', 'c']。如果没有指定分隔符,那么默认按照空格切分,例如'Alice 90'.split()的结果是['Alice', '90']。tuple函数可以将一个可迭代对象(如列表,字符串,集合等)转换为元组,例如tuple(['Alice', '90'])的结果是('Alice', '90')。因此,tuple(line.split())可以将每一行的数据格式化为一个元组,例如tuple('Alice 90'.split())的结果是('Alice', '90')。

15、从一个json文件中读取一些数据,并将其转换为Python的字典对象。可以使用json模块中的load方法来实现这个功能。请问,下面哪个选项是正确的代码,可以从data.json文件中读取数据,并赋值给变量data?( )

A. data = json.load(open('data.json'))

B. data = json.loads('data.json')

C. data = open('data.json').load(json)

D. data = open('data.json').loads(json)

正确答案:A

答案解析:json.load方法可以从一个文件对象中读取json格式的数据,并返回一个Python对象。json.loads方法可以从一个字符串中读取json格式的数据,并返回一个Python对象。open函数可以打开一个文件,并返回一个文件对象。因此,只有选项A可以正确地从文件中读取数据,并赋值给变量data。

16、有如下程序段:

a=[[0]*3 for i in range(4)]

for i in range(len(a)):

    for j in range(3):

       a[i][j]=i*len(a[j])+1

print(a[2][2])

执行程序后输出的值是?( )

A. 1

B. 0

C. 7

D. 2

正确答案:C

答案解析:运算可得a的为[[1, 1, 1], [4, 4, 4], [7, 7, 7], [10, 10, 10]],故a[2][2]=7。

17、以下关于Python中类的说法错误的是?( )

A. Python使用class关键字来声明一个类,且类名一般首字母大写

B. 类的成员函数中必须有self参数,且self参数永远是第一个参数

C. __init__()方法在类实例化时不会自动调用

D. 定义类之后,需要定义具体的对象才可以访问对象的成员方法或属性

正确答案:C

答案解析:__init__()方法在类实例化会被自动调用。

18、Python中的类有几个主要组成部分?( )

A. 变量和方法

B. 属性和方法

C. 方法和构造函数

D. 方法和构造函数

正确答案:B

答案解析:在Python中,类由属性和方法组成。属性是类的变量,而方法是类的函数。因此,选项B“属性和方法”是正确的。

19、以下代码中,哪个选项可以正确地创建一个类和其实例?( )

A. class MyClass():

   pass

my_instance = MyClass('ok')

B. class MyClass():

   def __init__(self):

       print('hello')

my_instance = MyClass()

C. class MyClass():

   x = 10

my_instance = MyClass(x)

D. def MyClass():

       print("This is a method")

my_instance = MyClass()

正确答案:B

答案解析:选项B正确地定义了一个类MyClass,然后通过MyClass()创建了一个该类的实例my_instance。其他选项中存在一些错误或不完整的地方。

20、有如下Python程序:

class Cars():

   def __init__(self,color,shape):

       self.color = color

       self.shape = shape

       print('您定制的{}{}已经生产好了!'.format(self.color,self.shape))

new_car = Cars('红色','小汽车')

执行程序后,打印的结果是?( )

A. 小汽车

B. 红色

C. 您定制的已经生产好了!

D. 您定制的红色小汽车已经生产好了!

正确答案:D

答案解析:根据代码可知,创建了实例new_car,自动调用构造函数内容,打印相关内容,所以选D。

21、运行以下代码:

import tkinter as tk  

def click():  

   print("Button clicked!")  

root = tk.Tk()  

button = tk.Button(root, text="Click me!", command=click)  

button.pack()  

root.mainloop()

当用户点击按钮时,程序将输出?( )

A. "Button clicked!"

B. "Click me!"

C. 没有任何输出

D. 程序将崩溃

正确答案:A

答案解析:代码中定义了一个按钮(Button),并为其command参数指定了一个函数click。当用户点击按钮时,click函数将被调用,从而打印出“Button clicked!”。

22、阅读以下代码:

import tkinter as tk  

root = tk.Tk()  

listbox = tk.Listbox(root)  

listbox.insert(tk.END, "Apple")  

listbox.insert(tk.END, "Banana")  

listbox.pack()  

root.mainloop()

程序运行后,列表框中将显示哪些项?( )

A. 仅"Apple"

B. 仅"Banana"

C. "Apple"和"Banana"

D. 什么也不显示

正确答案:C

答案解析:代码中创建了一个列表框(Listbox),并使用insert方法向其中添加了两个项:"Apple"和"Banana"。因此,程序运行后,列表框中将显示这两个项。

23、下列代码创建了一个按钮,当按钮被点击时,会发生什么?( )

import tkinter as tk  

def on_button_click():  

   print("Button clicked!")  

root = tk.Tk()  

button = tk.Button(root, text="Click me!", command=on_button_click)  

button.pack()  

root.mainloop()

A. 弹出对话框显示"Button clicked!"

B. 在控制台输出"Button clicked!"

C. 窗口标题变为"Button clicked!"

D. 按钮文本变为"Clicked!"

正确答案:B

答案解析:在Tkinter中,当按钮的command参数设置为一个函数时,每次按钮被点击时,都会调用该函数。在给出的代码中,当按钮被点击时,on_button_click函数将被调用,该函数会在控制台输出"Button clicked!",因此选项B正确。

24、运行以下代码:

import tkinter as tk  

def change_text()

label.config(text="Changed text")  

root = tk.Tk()  

label = tk.Label(root, text="Original text")  

label.pack()  

button = tk.Button(root, text="Change text", command=change_text)  

button.pack()  

root.mainloop()

当点击“Change text”按钮后,标签的文本会变成?( )

A. 保持不变

B. "Changed text"

C. "Button clicked!"

D. "Original text"

正确答案:B

答案解析:在这段代码中,定义了一个标签和一个按钮。点击按钮会调用change_text函数,该函数使用label.config(text="Changed text")来改变标签的文本。因此,当点击"Change text"按钮后,标签的文本会变成"Changed text"。

25、考虑一个名为arr的NumPy数组,其形状是(3, 2)。如果将这个数组转换为形状(2, 3),返回一个新数组,以下哪个函数调用是正确的?( )

A. arr.reshape(2, 3)

B. arr.resize(3, 2)

C. arr.resize(2, 3)

D. arr.flatten()

正确答案:A

答案解析:arr.reshape(2, 3)正确地将名为arr的数组的形状从(3, 2)更改为(2, 3)。reshape函数用于在不更改数据的情况下更改数组的形状。选项A原封不动地保留了数组的原始形状,选项B的resize方法虽然可以改变数组的形状,但它会直接更改原数组而不是返回一个新数组。选项D的flatten方法返回一个将多维数组降为一维的数组,与题目要求不符。

二、判断题

26、26.

下面代码输出结果是:

1              

2

3

import numpy as np

a = np.array([1,2,3])  

b = a.reshape(3,1)  

print (b)

正确答案:对

答案解析:在NumPy中,'reshape()'函数改变数组的维数。

27、NumPy库中的np.sum( )函数可以用来计算数组中所有元素的平均值。( )

正确答案:错

答案解析:NumPy库中的np.mean()函数可以用来计算数组中所有元素的平均值。

np.sum()函数可以用来计算数组中所有元素的和。

28、SQLite中使用的SQL语句必须全部使用大写字母。( )

正确答案:错

答案解析:SQLite中使用的SQL语句大小写字母均可。

29、fi=open("t.txt","r+") 执行后只能对"t.txt"文件进行读操作。( )

正确答案:错

答案解析:r+ 可以对文件进行读写操作。

30、以只读模式打开文件时,文件指针指向文件开始处。( )

正确答案:对

答案解析:以只读模式打开文件时,文件指针位于文件的开始位置。

31、在类定义的外部没有任何办法可以访问对象的私有成员。( )

正确答案:错

答案解析:私有成员在类的内部可以直接访问,在类的外部不可以通过调用类的公有成员方法的方式进行访问。但可以借助类的内部方法,将私有属性返回到类的外部,在类的外部对私有属性进行访问;也可以借助内部方法对私有属性进行修改,对象._类名__私有属性 ,对象._类名__私有方法就可以访问。

32、可以使用np.reshape()函数来改变图像的形状,从而实现旋转、缩放等操作。( )

正确答案:错

答案解析:np.reshape()函数只能改变数组的维度,但不会改变数组中元素的顺序。如果要对图像进行旋转、缩放等操作,需要使用其他的函数。

33、在Python中,要将一个字典对象保存为json格式的文件,可以使用json.dump()函数。( )

正确答案:对

答案解析:在Python中,要将一个字典对象保存为json格式的文件,可以使用json.dump()函数。

34、在Python中,封装是将对象的属性和方法绑定在一起,并通过访问器(getter)和修改器(setter)来控制对对象的访问和修改。( )

正确答案:对

答案解析:在Python中,封装是将对象的属性和方法绑定在一起,并通过访问器(getter)和修改器(setter)来控制对对象的访问和修改。

35、阅读以下代码:

import tkinter as tk  

root = tk.Tk()  

root.geometry("200x100")  

root.title("My Window")  

root.mainloop()

执行上述代码后,程序将创建一个尺寸为200x100、标题为“My Window”的窗口。( )

正确答案:对

答案解析:代码中设置了窗口的尺寸(geometry)为“200x100”,并设置了窗口的标题(title)为“My Window”。因此,程序将创建一个尺寸为200x100、标题为“My Window”的窗口。

三、编程题

36、士兵瑞恩

按照需求填空:

1)士兵瑞恩有一把AK47

2)士兵有枪就可以开火

3)枪能够把子弹发射出去,每射击一次,子弹减少一个

4)枪能够装填子弹 --增加子弹的数量

class Gun():

  def         ①        (self,model):

      self.model = model

      self.bullet_count = 0

  def add_bullet(self,count):

self.bullet_count += count

  def shoot(        ②        ):

      if self.bullet_count <= 0:

          print('%s没有子弹' %(self.model))

      else:           

self.bullet_count         ③         1

          print('%s的子弹数量为%s' %(        ④        ,self.bullet_count))

class Soldier():

  def __init__(self,name):

      self.name =name

      self.gun = None

  def fire(self):

      if self.gun == None:

           print('%s没有枪' %(self.name))

       else:

           self.gun.add_bullet(5)

                 ⑤        

ak47 = Gun('AK47')

ak47.add_bullet(10)

ak47.shoot()

ruien = Soldier('RE')

ruien.gun = ak47

ruien.fire()

37、成绩统计

(1)在D盘根目录下建立一个空数据库Cjdata.db,按照如图所示的表结构,创建学生基本情况表cj;

(2)为表cj添加数据,内容是”学号—— 20210919、班级——4、姓名——赵雨乐、性别——女、成绩——98“;

(3)查询并输出表cj中成绩低于100的数据。

请根据要求,补全代码。(本题无需运行通过,写入代码即可)

import sqlite3

conn =        ①        

cursor = conn.cursor()

cursor.execute('''CREATE TABLE cj              

                 (        ②        ,

                  班级 INTEGER,

                  姓名  TEXT(10) NOT NULL,

                  性别  TEXT(1)   NOT NULL,

                  成绩  REAL);''')

cursor.execute("        ③        ('20210919',4,'赵雨乐','女',98)")

conn.commit()

cursor.execute("        ④        ")    

for i in        ⑤        :          

   print(i)

conn.close()

参考程序:

import sqlite3

conn =sqlite3.connect("d:/Cjdata.db")

cursor = conn.cursor()

cursor.execute('''CREATE TABLE cj              

                 (学号 TEXT(10) PRIMARY KEY NOT NULL,

                  班级 INTEGER,

                  姓名  TEXT(10) NOT NULL,

                  性别  TEXT(1)   NOT NULL,

                  成绩  REAL);''')

cursor.execute("INSERT INTO CJ VALUES('20210919',4,'赵雨乐','女',98)")

conn.commit()

cursor.execute("SELECT * from cj where 成绩<100")    

for i in cursor.fetchall():          

   print(i)

conn.close()

试题解析:

评分标准:

(1)sqlite3.connect("d:/Cjdata.db") 或等效答案;(2分)

(2)学号 TEXT(10) PRIMARY KEY NOT NULL 或等效答案; (2分)

(3)INSERT INTO CJ VALUES 或等效答案;(2分)

(4)SELECT * from cj where 成绩<100 或等效答案;(2分)

(5)cursor.fetchall() 或等效答案。(2分)

38、家庭记录

假设有一个任务是帮助你的家庭记录每日的支出。每天结束时,你会记录下今天的日期、购买的物品以及花费的金额。这个信息将被保存在一个名为ledger.txt的文本文件中。编写一段Python代码来完成以下的操作:

(1)在文件末尾追加新的消费记录;

(2)需要查看当前所有的消费记录。

为了简化问题,假设每条记录只包含日期、物品和金额,使用逗号分隔。

def append_record(date, item, amount):

   with open("ledger.txt", "        ①        ") as file:

       file.write(f"{date},{item},{amount}\n")

def read_records():

   with open("        ②        ", "r") as file:

       records = file.        ③        ()

       for record in records:

           print(record, end="")

# 示例操作

append_record("2023-04-05", "Groceries", 35.20)

append_record("2023-04-06", "Internet Bill", 50)

       ④        ()


http://www.ppmy.cn/embedded/140993.html

相关文章

【mac】终端左边太长处理,自定义显示名称(terminal路径显示特别长)

1、打开终端 2、步骤 &#xff08;1&#xff09;修改~/.zshrc文件 nano ~/.zshrc&#xff08;2&#xff09;添加或修改PS1&#xff0c;我是自定义了名字为“macminiPro” export PS1"macminiPro$ "&#xff08;3&#xff09;使用 nano: Ctrl o &#xff08;字母…

如何使用 Python 开发一个简单的文本数据转换为 Excel 工具

目录 一、准备工作 二、理解文本数据格式 三、开发文本数据转换为Excel工具 读取CSV文件 将DataFrame写入Excel文件 处理其他格式的文本数据 读取纯文本文件: 读取TSV文件: 四、完整代码与工具封装 五、使用工具 六、总结 在数据分析和处理的日常工作中,我们经常…

CSS中flex:1是什么属性

flex: 1 是 CSS 中的一个简写属性&#xff0c;用于设置 Flex 项目的灵活伸缩比例&#xff08;flex-grow&#xff09;、收缩比例&#xff08;flex-shrink&#xff09;以及基础大小&#xff08;flex-basis&#xff09;。具体来说&#xff0c;flex: 1 实际上是以下三个属性的简写&…

深度学习基础1

目录 1. 深度学习的定义 2.神经网络 2.1. 感知神经网络 2.2 人工神经元 2.2.1 构建人工神经元 2.2.2 组成部分 2.2.3 数学表示 2.2.4 对比生物神经元 2.3 深入神经网络 2.3.1 基本结构 2.3.2 网络构建 2.3.3 全连接神经网络 3.神经网络的参数初始化 3.1 固定值初…

Sourcetree:一款强大的Git客户端

Sourcetree&#xff1a;一款强大的Git客户端 Sourcetree是一款由Atlassian开发的免费Git客户端&#xff0c;它提供了一个直观的图形界面&#xff0c;让用户能够轻松地管理他们的版本控制系统。无论是初学者还是有经验的开发者&#xff0c;Sourcetree都能提供方便快捷的Git操作…

Python 爬虫 (1)基础 | 基础操作

一、基础操作 1、快速构建一个爬虫 ConvertCurl&#xff1a; https://curlconverter.com/选择URL&#xff0c;点击右键&#xff0c;选择 Copy >> Copy as cURL(bash) 2、配置nodejs开发环境 参考WIKI&#xff1a;https://www.jb51.net/python/307069k7q.htm国内npm源…

志愿者小程序源码社区网格志愿者服务小程序php

志愿者服务小程序源码开发方案&#xff1a;开发语言后端php&#xff0c;tp框架&#xff0c;前端是uniapp。 一 志愿者端-小程序&#xff1a; 申请成为志愿者&#xff0c;志愿者组织端进行审核。成为志愿者后&#xff0c;可以报名参加志愿者活动。 志愿者地图&#xff1a;可以…

微信小程序WXSS全局样式与局部样式的使用教程

微信小程序WXSS全局样式与局部样式的使用教程 引言 在微信小程序的开发中,样式的设计与实现是提升用户体验的关键部分。WXSS(WeiXin Style Sheets)作为微信小程序的样式表语言,不仅支持丰富的样式功能,还能通过全局样式与局部样式的灵活运用,帮助开发者构建美观且易于维…