真题与解析 202203三级 青少年软件编程(Python)考级

青少年软件编程(Python)等级考试试卷(级)

202203真题与解析

分数:100  题数:37  测试时长:60分钟

一、单选题(共25题,共50分)

1、二进制数101100111对应的十六进制数的数值是? ( )

A、6

B、369

C、167

D、165

2、Python中表示合法的八进制整数是? ( )

A、0o129

B、0o12A

C、0O1708

D、001207

3、在Python中,int(‘10’,16)语句的作用是? ( )

A、将十进制数10转化为十六进制数16

B、将十六进制数10转化为十进制数16

C、将字符串"10"转化为二进制整数

D、将字符串"10"转化为十六进制整数

4、八进制7与十六进制7相加,其对应的十进制数是? ( )

A、21

B、7

C、14

D、77

5、关于语句f=open(‘c:/abc.csv’, ‘r’),下列描述不正确的是? ( )

A、f是变量名

B、以只读方式打开文件

C、如果文件abc.csv不存在,会创建abc.csv

D、'c:/abc.csv'代表c盘中一个名为'abc.csv'的文件

6、有如下从csv文件中读入数据的程序段,程序中存在错误的地方是?( )

f=open("abc.csv","r")

m=[]

for lines in f:

   m.append(lines.strip("\n").split("\"))

f.close()

print(m)

A、"r"

B、lines.strip("\n")

C、split("\")

D、f.close()

7、对于a=len([2,3,4,5,[7,8],(9,10)]),a的值是? ( )

A、4

B、6

C、8

D、7

8、有关Python文件常用读写方式的描述,错误的是? ( )

A、read()每次读取整个文件

B、read()生成的文件内容是一个字符串

C、readline()每次只读取文件的一行

D、readlines()每次按行读取整个文件内容,将读取到的内容放到一个字符串中

9、下列说法错误的是? ( )

add=['北京','上海','广州','深圳']

f=open('city.csv','w')

f.write(','.join(add)+'\n')

f.close()

A、f=open('city.csv','w')说明当前是写入模式

B、f.write(','.join(add)+'\n')语句改成f.write(' '.join(add)+'\n') ,程序运行效果一样

C、删除f.close()语句,不能正确保存文件

D、当前程序的功能是将列表对象输出到csv文件

10、当发生异常时,下列描述正确的是? ( )

A、需要捕获异常,然后进行相应的处理

B、需要把可能发生错误的语句放在except模块里

C、需要把处理异常的语句放在try模块里

D、需要为每一个try模块设定且只能设定一个except模块

11、下列程序段在运行时输入"2",则输出结果是? ( )

try:

    a=eval(input())

    print(a)

except NameError:

    print('Error!')

A、" 2"

B、2.0

C、Error!

D、2

12、下列程序运行结果是? ( )

a="2"

b="3"

c=int(a+b)

print(c)

A、5

B、"5"

C、5.0

D、23

13、执行代码a,b,c=sorted((1,3,2))之后,变量b的值为? ( )

A、1

B、3

C、2

D、(1,3,2)

14、x = min(‘5678’),下列选项中语法错误的一项是? ( )

A、print(max(float(x), 7, 6))

B、print(max(ord(x), 7, 6))

C、print(max(bin(x), 7, 6))

D、print(max(int(x), 7, 6))

15.以下表达式的值为Fasle的是?()

A、all(())

B、any(['0'])

C、any((0,))

D、all(['a','b'])

16、以下表达式的值为True的是? ( )

A、bool([])

B、bool(None)

C、bool("False")

D、bool(range(0))

17、print(divmod(22,7))的运行结果是? ( )

A、3.0

B、3

C、[3,1]

D、(3,1)

18、下列表达式的结果与其他三项不相同的是? ( )

A、abs(-3.4)

B、round(abs(-3.4))

C、abs(round(-3.4))

D、min(round(3.4),round(3.8))

19、关于ascii()函数,描述不正确的是? ( )

A、ascii()返回一个对象的字符串

B、ascii()返回一个对象的ASCII码的值

C、ascii()的返回值的类型必然是字符串

D、ascii(1)的结果是"1"

20、下列关于表达式的计算结果,不正确的是? ( )

A、bool(2*3-0)的值为"True"

B、bool(2*3-2)的值为"True"

C、bool(2*3-3)的值为"True"

D、bool(2*3-6)的值为"True"

21、下列输出结果为"1+2+3=6"的是? ( )

A、print(1+2+3=6)

B、print(1+2+3,'=6')

C、print(1,2,3,sep='+','=6')

D、print(1,2,3,sep='+',end='=6')

22、下列函数能创建一个新的列表的是? ( )

A、sorted()

B、list()

C、dict()

D、set()

23、关于算法的说法,下列说法正确的是? ( )

A、采用顺序查找算法,一定能找到数据

B、算法必须有输入和输出

C、对分查找算法不需要对数据进行排序

D、顺序查找算法不需要对数据进行排序

24、有如下列表a=[8,7,9,6,3,8],采用冒泡排序进行降序排序,请问第2趟排序之后的结果是? ( )

A、[9,8,7,6,8,3]

B、[8,9,7,8,6,3]

C、[9,8,7,8,6,3]

D、[9,8,8,6,7,3]

25、有如下列表a=[8,7,9,6,3,8],采用选择排序进行升序排序,请问第2趟排序之后的结果是? ( )

A、[7,8,6,3,8,9]

B、[3,6,9,7,8,8]

C、[7,6,3,8,8,9]

D、[3,6,7,8,8,9]

二、判断题(共10题,共20分)

26、在Python中,0x10010转化为十进制数是18。( )

27、在Python中,可以使用下面代码读取文件中的数据到列表。( )

f = open('city.csv','r')

name = f.read().strip('\n').split(';')

f.close()

28、在Python中open(‘city.csv’,‘r’)命令的作用是以只读方式打开文件名为city的csv格式文件。( )

29、hex(int(‘12’,16))的结果是’0x18’。( )

30、在Python中,向csv文件中写入数据时,用逗号合并列表name中的元素,可以使用f.write(‘,’.join(name)+‘\n’)语句(f为文件对象名)。( )

31、try-except-else-finally异常处理结构中,不论try程序段中的语句有没有错误,finally程序段中的语句都会得到执行。( )

32、在Python中,执行print(ascii(ord(‘A’)+12))语句,打印一个整型数值结果。( )

33、在Python中,sorted()函数可以实现对列表中数据的排序,但排序后不改变原列表中数据的位置。( )

34、在Python中,表达式divmod(26,10) 的输出结果为(2,6)或(3,-4)。( )

35、在Python中,chr(ord(‘b’)-32)语句的功能是将小写字母b转换为大写字母B。( )

三、编程题(共3题,共30分)

35.明明请你帮忙寻找100-999之间的所有“水仙花数”,并统计个数。“水仙花数”是指一个三位数各位数字的立方和等于该数本身。

例如:153=111+555+333。要求输出结果如下所示:

153

370

371

407

请编程实现上述功能,补全代码。

for i in range(   ①   ):

   x=i

   a=x % 10

   x= (   ②   )    

   b=x % 10

   c=x // 10

   if (   ③   ):

      print(i)

36.查找“支撑数”。在已知一组整数中,有这样一种数非常怪,它们不在第一个,也不在最后一个,而且刚好都比左边和右边相邻的数大,你能找到它们吗? 输入一个数组,输出每个支撑数的数值以及它们在数组中位置编号。

示例:

输入:

1 3 2 4 1 5 3 9 7 10 8 23 85 43

输出:

3 2

4 4

5 6

9 8

10 10

85 13

请编写程序实现上述功能,补全代码。

s=input()

x=s.split(' ')

a=[]

for i in range(0,len(x)):

   a.append(int(   ①   )   

b=[]

c=[]

n=0

for i in range(1,   ②   ):

   if (a[i]>a[i-1] and   ③   ):

      b.append(a[i])

      c.append(   ④   )     

for i in range(   ⑤   ):

   print(b[i],' ',c[i])

37.请读取某班级语文学科的成绩文件score.txt的数据,数据内容如下图显示:

下列代码实现了读取数据并对每个成绩从小到大排序后并输出,请你补全代码。

with open('/data/   ①   ', 'r') as f:

    list = f.readlines()

for i in range(0, len(list)):

    list[i] = list[i].strip('\n')

    list[i]=  (  ②  )

    (  ③  )

print(list)

f.close

参考答案与解析:

一、单选题

1. C

   - 二进制数转换为十六进制数,每四位二进制数对应一位十六进制数。101100111可以分为1011和00111,1011对应B,00111对应7,所以十六进制数为167。

2. D

   -在 Python 中,八进制整数以`0o`或`0O`开头。选项 A 中八进制不能出现数字 8 和 9;选项 B 中有字母 A 不合法;选项 C 出现数字 8 不合法。答案是 D,`0O1207`是合法的八进制表示形式。

3. B

   - 在Python中,int() 函数用于将其他形式的数字转换为整数。该函数可以接受两个参数,第一个参数是要转换的数字,第二个参数是该数字的基数(即数字的进制)`int('10',16)`将十六进制数10转化为十进制数16。

4. C

   - 八进制7转换为十进制是7,十六进制7转换为十进制是7,两者相加为14。

5. C

   - 如果文件`abc.csv`不存在,`open('c:/abc.csv', 'r')`会报错,不会创建文件。

6. C

   - `split("\"))`中的引号应该是单引号,即`split('\")`错误。

7. B

   - `len([2,3,4,5,[7,8],(9,10)])`计算列表的长度,列表中有6个元素,所以结果是6。

8. D

   - `readlines()`每次按行读取整个文件内容,将读取到的内容放到一个列表中,不是字符串。

9. B

   - `f.write(','.join(add)+'\n')`改成`f.write(' '.join(add)+'\n')`,程序运行效果不一样,逗号分隔和空格分隔不同。

10. A

   - 当发生异常时,需要捕获异常,然后进行相应的处理。可能发生错误的语句放在`try`模块里,处理异常的语句放在`except`模块里,可以为一个`try`模块设定多个`except`模块。

11. D

   - 输入"2",`eval(input())`将其转换为整数2,然后输出2。

12. D

   - `a="2"`,`b="3"`,`c=int(a+b)`,`a+b`结果为"23",转换为整数是23。

13. C

   - `sorted((1,3,2))`返回排序后的列表`[1,2,3]`,赋值给`a,b,c`后,`b`的值为2。

14. C

   - `x = min('5678')`,`x`的值为'5'。`bin(x)`返回的是二进制字符串,不能和整数直接比较大小,所以`print(max(bin(x), 7, 6))`语法错误。

15. C

 - A 选项`all(())`结果为`True`。 - B 选项`any(['0'])`结果为`True`。 - C 选项`any((0,))`,元组中元素`0`为假值且只有这一个元素,结果为`False`。 - D 选项`all(['a','b'])`结果为`True`。所以答案是 C。

16. C

   - `bool([])`、`bool(None)`、`bool(range(0))`结果都是`False`,`bool("False")`结果为`True`。

17. D

   - `divmod(22,7)`返回商和余数组成的元组`(3,1)`。

18.A

   - A 选项`abs(-3.4)`结果是`3.4`;B 选项`round(abs(-3.4))`先求绝对值为`3.4`再四舍五入得`3`;C 选项`abs(round(-3.4))`先四舍五入为`-3`再求绝对值得`3`;D 选项`min(round(3.4),round(3.8))`结果也是`3`。所以结果与其他三项不同的是 A 选项。

19. B

   - `ascii()`返回一个对象的字符串表示,不是对象的 ASCII 码的值。

20. D

   - `bool(2*3-6)`的值为`False`,因为2*3 - 6 = 0,`bool(0)`为`False`。

21. D

   - `print(1,2,3,sep='+',end='=6')`输出`1+2+3=6`。

22. B

   - `sorted()`返回一个新的已排序列表,但不改变原列表;`dict()`创建字典;`set()`创建集合。只有`list()`可以创建一个新的列表。

23. D

   - 顺序查找算法不一定能找到数据;算法可以没有输入,但必须有输出;对分查找算法需要对数据进行排序;顺序查找算法不需要对数据进行排序。

24. C

   - 冒泡排序进行降序排序,第一趟排序后结果为`[8,9,7,6,8,3]`,第二趟排序后结果为`[9,8,7,8,6,3]`。

25. B

   - 选择排序进行升序排序,第一趟的结果:[3,7,9,6,8,8],第二趟的结果:[3,6,9,7,8,8]

二、判断题

26. 错误

   - `0x10010`转化为十进制数是65552。

27. 错误

   - `split(';')`中的分隔符应根据实际文件中的分隔符来确定,不一定是分号。

28. 正确

   - `open('city.csv','r')`是以只读方式打开文件名为`city`的`csv`格式文件。

29. 正确

   - `hex(int('12',16))`将十六进制数12转换为十进制再转换回十六进制,结果是`0x18`。

30. 正确

   - 向`csv`文件中写入数据时,可以用逗号合并列表元素并加上换行符写入。

31. 正确

   - 在`try-except-else-finally`异常处理结构中,`finally`程序段中的语句无论是否有异常都会执行。

32. 错误

   - `print(ascii(ord('A')+12))`打印的是字符串结果,不是整型数值。

33. 正确

   - `sorted()`函数可以对列表排序且不改变原列表位置。

34. 错误

   - `divmod(26,10)`的结果固定为`(2,6)`。

35. 正确

   - `ord('b')`得到小写字母`b`的 ASCII 码值,减 32 后再用`chr()`转换为大写字母`B`。

三、编程题

35.参考答案:

for i in range(100, 1000):

    x = i

    a = x % 10

    x = x // 10

    b = x % 10

    c = x // 10

    if (a * a * a + b * b * b + c * c * c == i):

        print(i)

评分标准:

① 100,1000 或等效答案;(3分)

② x//10 或等效答案;(3分)

③ a*a*a+b*b*b+c*c*c==i 或等效答案。(4分)

解析:

①处应该填入100, 1000,表示遍历 100 到 999 之间的所有三位数。

②处应该填入x // 10,去除个位数字后继续获取十位数字。

③处应该填入i == a**3 + b**3 + c**3,判断这个三位数是否满足水仙花数的条件。

36.参考答案:

s=input()

x=s.split(' ')

a=[]

for i in range(0,len(x)):

   a.append(int(x[i]))

b=[]

c=[]

for i in range(1, len(a)-1):

   if (a[i]>a[i-1] and a[i]>a[i+1]):

      b.append(a[i])

      c.append(i+1)

for i in range(len(b)):

   print(b[i],' ',c[i])    

试题解析:

① x[i] 或等效答案;(3分)

② len(a)-1或等效答案;(3分)

③ a[i]>a[i+1] 或等效答案;(4分)

④ i+1 或等效答案;(3分)

⑤ len(b) 或等效答案;(3分)

解析:

①处应该填入x[i],将输入的字符串列表中的每个元素转换为整数添加到列表a中。

②处应该填入len(a) - 1,因为不在第一个和最后一个的数,所以遍历范围是从第二个数到倒数第二个数。

③处应该填入a[i] > a[i + 1],判断当前数是否大于右边相邻的数。

④处应该填入i + 1,记录满足条件的数的位置编号,因为索引从 0 开始,实际位置要加 1。

⑤处应该填入len(b),遍历输出满足条件的数及其位置编号。

37.参考答案:

with open('/data/score.txt', 'r') as f:

    list = f.readlines()

for i in range(0, len(list)):

    list[i] = list[i].strip('\n')

    list[i]=int(list[i])

list.sort()

print(list)

f.close

评分标准:

(1) score.txt      (1分)

(2) int(list[i])     (1分)

(3) list.sort()     (2分)

解析:①处应该填入score.txt,表示要读取的文件名。

②处应该填入int(list[i]),将读取的字符串形式的成绩转换为整数,以便进行排序。

③处应该填入list.sort(),对转换后的整数列表进行从小到大排序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晴朗向上

你的鼓励是我最大的动力,感谢!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值