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

标签:
普通文字版答案
2024-11-01
| 11页
| 103人阅读
| 0人下载

内容正文:

青少年软件编程(Python)等级考试试卷(三级) 202212真题与解析 分数:100  题数:37 测试时长:60分钟 1、 单选题(共25题,共50分) 1.  列表L1中全是整数,小明想将其中所有奇数都增加1,偶数不变,于是编写了如下图所示的代码。请问,图中红线处,代码应该是?( )(2分) A.x || 2 B.x ^ 2 C.x && 2 D.x % 2 2. 小明为了学习选择排序的算法,编写了下面的代码。针对代码中红色文字所示的一、二、三处,下面说法正确的是?()(2分) a = [8,4,11,3,9] count = len(a) for i in range(count-1):     mi = i     for j in range(i+1,count):          if a[mi] > a[j]:   #代码一               mi = j   #代码二      if i!=mi:         a[mi],a[i] = a[i],a[mi]   #代码三 print(a) A.如果找到更大的元素,则记录它的索引号。 B.如果找到更小的元素,则记录它的索引号。 C.在一趟选择排序后,不管是否找到更小的元素,mi所在元素都得与i所在的元素发生交换。 D.代码三所在的行必然要运行。 3.  小明编写了一段演示插入排序的代码,代码如下。请问红色“缺失代码”处,应该填写哪段代码?()(2分) a = [8,4,11,3,9] count = len(a) for i in range(1, count):     j = i     b = a[i]     while j>0 and b<a[j-1] :         a[j] = a[j-1]         缺失代码         a[j] = b print(a) A.j=j-1 B.j=j+1 C.j=i+1 D.j=i-1 4.  在计算机中,信息都是采用什么进行存储?()(2分) A.二进制数 B.八进制数 C.十进制数 D.十六进制数 5.  十进制数(100)10,转化为二进制数为( )(2分) A.0010011 B.1010001 C.1100100 D.0101100 6.  十六进制数每一位至多可以表示几位二进制位?( )(2分) A.2 B.3 C.4 D.16 7.  八进制数(35)8,转化为十进制数为() (2分) A.100011 B.110001 C.232 D.29 8.  执行代码a=min(3,2,4.3),变量a的值是?()(2分) A.3 B.2 C.4.3 D.4 9.  print(max('python+'))的运行结果是?()(2分) A.'p' B.p C.'y' D.y 10. a=5.12596 print(round(a,2))运行结果是?()(2分) A.5 B.5.1 C.5.12 D.5.13 11. type([{2.6}])运行的结果是?()(2分) A.float B.dict C.True D.list 12. 执行如下代码 a=[1,2,3,4] print(list(enumerate(a))) 运行结果是?()(2分) A.((0, 1), (1, 2), (2, 3), (3, 4)) B.[(0, 1), (1, 2), (2, 3), (3, 4)] C.[1,2,3,4] D.(1,2,3,4) 13. set('hello')运行结果是?()(2分) A.('h', 'e', 'l', 'l','o') B.{'h', 'e', 'l', 'l','o'} C.{'e', 'h', 'l', 'o'} D.('e', 'h', 'l', 'o') 14. print(sum([5,10,min(7,4,6)]))的运行结果是?()(2分) A.22 B.21 C.4 D.19 15. divmod(100,3)的执行结果是?()(2分) A.(1, 33) B.(33, 1) C.[33,1] D.[1,33] 16. 下列表达式结果是False的是?()(2分) A.all({}) B.all([10]) C.all(['1','2','3','']) D.all(['1','2','3']) 17. 将字符串或数字转换为浮点数的函数是?()(2分) A.chr() B.float() C.int() D.str() 18. 以下表达式的值为True是?()(2分) A.bool(2022) B.bool(0) C.bool() D.bool({}) 19. 有这样一段程序: a=[“香蕉“,”苹果”,”草莓”,“哈密瓜”] fs=open(“fruits.csv”,”w”) fs.write(“,”.join(a)+‘ ’) fs.close() 该段程序执行后,该csv文件中的内容是?()(2分) A.香蕉 苹果 草莓 哈密瓜 B.香蕉,苹果,草莓,哈密瓜 C.香蕉苹果草莓哈密瓜 D.["香蕉","苹果","草莓","哈密瓜"] 20. 关于文件的读写操作,下列说法不正确的是?()(2分) A.read( )函数读取文件内容后,生成的是一个字符串 。 B.readline( )每次只读取文件中的一行,并返回字符串类型数据。 C.readlines( )函数每次按行读取整个文件的内容,并返回list类型数据。 D.读取文件内容只能用reader( )对象。 21. 关于下列列表,说法正确的是?()(2分) s=[ [“佩奇”,“100”,“86”,“85”,“90”], [“苏西”,“78”,“88”,“98”,“89”], [“佩德罗”,“80”,“66”,“80”,“92”]] A.这是一组二维数据 B.这样的数据不能存储到CSV文件中 C.无法读取[“佩奇”,“100”,“86”,“85”,“90”]这条数据 D.必须手动写入到CSV文件中 22. 有关于write()函数的说法正确的是?()(2分) A.write( )函数只能向文件中写入一行数据 B.write( )函数的参数不是字符串类型 C.write( )函数也可以向文件中写入多行数据 D.write( )函数和writelines( )函数完全相同 23. 对于在csv文件中追加数据,下列说法正确的是?()(2分) A.只能以单行方式追加数据 B.只能以多行方式追加数据 C.多行数据追加的函数是writerow( ) D.以单行方式或多行方式追加都可以 24. Python的异常处理try....except...else...finally机制中,以下哪部分语句一定能得到全部执行?()(2分) A.try子句 B.except子句 C.else子句 D.finally子句 25. Python的异常处理机制中,以下表述哪项是错误的?()(2分) A.如果当try中的语句执行时发生异常,Python就执行匹配该异常的except子句。 B.如果当try中的语句执行时发生异常,try代码块的剩余语句将不会被执行。 C.如果在try子句执行时没有发生异常,Python将执行else语句后的语句。 D.异常处理结构能够发现程序段中的语法错误。 二、判断题(共10题,共20分) 26. 二进制数转化为十进制数的方法是:按权展开、逐项相加,如:(101)2=(10)10。() 27. 语句print(round(2.785, 2))运行后的结果是2.79。() 28. map() 不会根据提供的函数对指定序列做映射。() 29. 语句print(tuple(range(5)))的输出结果是(0, 1, 2, 3, 4)。() 30. 运行语句set('2022'),其输出结果是{'2','0','2','2'}() 31. f=open(‘ss.csv’,’r’) n=f.read().strip(“ ”).split(“,”) f.close() 这段代码的功能是读取文件中的数据到列表。() 32. 一维数组可以用列表实现,二维数组则不能用列表实现。() 33. 用with open (‘fruits.csv’,’r’)as f 语句,打开fruits.csv文件,在处理结束后不会自动关闭被打开的文件,因此需要写上f.close( )语句。() 34. 异常处理结构中,finally程序段中的语句不一定都会得到执行。() 35. 在计算机中,每一个二进制位可以表示0和1两种信息。() 三、编程题(共3题,共30分) 36. 下面程序实现对二维数据的处理,请你补全代码。 f=open('/data/score2.csv','r') a=[] for i in f:     a.append(i.strip().split(',')) f.close()            ①           for i in a:     s=''     for j in i:                   ②              print(s) 程序执行结果为: [['王鑫', '86', '90', '92', '99', '94', '95'], ['杨小虹', '93', '97', '95', '90', '86', '85'], ['李静', '89', '98', '99', '94', '90', '85']] 王鑫       86    90    92    99    94    95   杨小虹     93    97    95    90    86    85   李静       89    98    99    94    90    85 37. 在三位数的自然数中,找出至少有一位数字是5的,至少能被3整除的所有整数,并统计个数,具体代码如下: count=0 lst=[] for i in range(           ①           ):     if i%3==0:         a=i%10         b=i//10%10         c=           ②                   if            ③           :             count+=1             lst.append(i) print("这样的三位数有:",lst) print("总数量有:",count) 38. 输入一个正数,以下代码编程求出它的平方根。请你补全代码。 in_var = float(input("请输入一个需要开方的正数,可以使用2位小数: x = ")) if in_var < 0:     x = - in_var else:     x = in_var low = 0.0 high = x s_root =           ①           if x > 0 and x < 1:     high = 1.0     low = 0     s_root =           ②           if x >= 0:     while abs(           ③           ) > 0.0001:          if x > 1.0:              if s_root ** 2 < x:                     low = s_root             else:                     high = s_root             s_root =           ④                   if x == 1.0 and x == 0.0:             s_root = x         else:             if s_root ** 2 < x:                 low = s_root             else:                 high = s_root         s_root =           ⑤           if in_var >= 0:     print("所求数的平方根为:s_root = %.1f"%(s_root))     参考答案与解析: 一、单选题 1. D - 判断一个数是否为奇数可以使用取余运算,即`x % 2`,如果结果为1则为奇数。 2. B - 代码中内层循环遍历未排序部分,如果找到更小的元素,则记录它的索引号,最后进行交换,使得当前位置为最小元素。 3. A - 在插入排序中,当找到合适位置后,需要将指针向前移动,即`j = j - 1`。 4. A - 在计算机中,信息都是采用二进制数进行存储。 5. C - 十进制数100转化为二进制为1100100。 6. C - 十六进制数每一位至多可以表示4位二进制位。 7. D - 八进制数(35)8转化为十进制为3×8 + 5 = 29。 8. B - `min(3, 2, 4.3)`取最小值为2。 9. D - `max('python+')`取字符串中的最大字符为'y',输出是y。 10. D - `round(a, 2)`将5.12596保留两位小数为5.13。 11. D - `type([{2.6}])`的结果是列表类型,即`list`。 12. B - `enumerate(a)`返回一个可迭代对象,其中包含索引和对应的值,转换为列表后形式为`[(0, 1), (1, 2), (2, 3), (3, 4)]`。 13. C - `set('hello')`将字符串转换为集合,去除重复元素后为`{'e', 'h', 'l', 'o'}`。 14. D - `sum([5,10,min(7,4,6)])`先计算`min(7,4,6)`为4,然后求和为5 + 10 + 4 = 19。 15. B - `divmod(100, 3)`返回商和余数组成的元组为(33, 1)。 16. C - `all()`函数判断可迭代对象中所有元素是否都为真值,`all(['1','2','3',''])`中有一个空字符串,不是真值,所以结果为`False`。 17. B - `float()`函数将字符串或数字转换为浮点数。 18. A - `bool(2022)`为`True`,非零数字被视为真值;`bool(0)`为`False`;`bool()`为`False`;`bool({})`为`False`。 19. B - `fs.write(“,”.join(a)+‘ ’)`将列表中的元素用逗号连接并加上换行符写入文件,结果为“香蕉,苹果,草莓,哈密瓜”。 20. D - 读取文件内容可以使用多种方法,不只是`reader()`对象。 21. A - 这是一组二维数据,可以存储到 CSV 文件中,也可以读取其中的某一条数据,不一定需要手动写入 CSV 文件。 22. C - `write()`函数可以向文件中写入多行数据,参数是字符串类型,与`writelines()`函数不完全相同。 23. D - 在 CSV 文件中追加数据可以以单行方式或多行方式追加。 24. D - 在异常处理机制中,`finally`子句无论是否发生异常都会得到执行。 25. D - 异常处理结构不能发现程序段中的语法错误,只能处理运行时错误。 二、判断题 26. 错误 - 二进制数(101)2转化为十进制为$1×2^2 + 0×2^1 + 1×2^0 = 5$,不是(10)10。 27. 正确 - `round(2.785, 2)`将2.785保留两位小数为2.79。 28. 错误 - `map()`会根据提供的函数对指定序列做映射。 29. 正确 - `tuple(range(5))`生成一个元组(0, 1, 2, 3, 4)。 30. 错误 - `set('2022')`将字符串转换为集合,去除重复元素后为`{'2','0'}`。 31. 正确 - 这段代码读取文件中的数据,去除换行符,以逗号分割后存入列表。 32. 错误 - 二维数组可以用列表的列表实现。 33. 错误 - 使用`with open (‘fruits.csv’,’r’)as f`语句,在处理结束后会自动关闭被打开的文件,不需要再写`f.close()`语句。 34. 错误 - 在异常处理结构中,`finally`程序段中的语句一定会得到执行。 35. 正确 - 在计算机中,每一个二进制位可以表示0和1两种信息。 三、编程题 36.参考答案: 参考程序: f=open('/data/score2.csv','r') a=[] for i in f: a.append(i.strip().split(',')) f.close() print(a,' ') for i in a: s='' for j in i: s=s+'{:6}\t'.format(j) print(s) 评分标准: (1) print(a,' ')或等效答案;(2分) (2) (2)s=s+'{:6}\t'.format(j)或等效答案。(2分) 解析: 代码首先读取文件数据存入二维列表a,print(a,' ')用于查看读取结果。 循环中s=s+'{:6}\t'.format(j)将每个元素格式化为固定宽度并添加制表符后存入s,最终打印出整齐的二维数据。 37.参考答案: 参考程序: count=0 lst=[] for i in range(100,1000):     if i%3==0:         a=i%10         b=i//10%10         c=i//100         if a==5 or b==5 or c==5:             count+=1             lst.append(i) print("这样的三位数有:",lst) print("总数量有:",count) 评分标准: (1)100,1000 或者100,1000,1 ;(3分) (2)i//100 ;(3分) (3)a==5 or b==5 or c==5 。(4分) 解析:代码通过循环遍历 100 到 999 的三位数,判断能被 3 整除且至少有一位数字是 5。通过合理的循环和条件判断,实现了找出符合特定条件的三位数并统计个数的功能。 38.参考答案: 参考程序: in_var = float(input("请输入一个需要开方的正数,可以使用2位小数: x = ")) if in_var < 0:     x = - in_var else:     x = in_var low = 0.0 high = x s_root =(low + high) / 2 if x > 0 and x < 1:     high = 1.0     low = 0     s_root =(low + high) / 2 if x >= 0:     while abs( s_root ** 2 - x) > 0.0001:          if x > 1.0:              if s_root ** 2 < x:                     low = s_root             else:                     high = s_root             s_root =(low + high) / 2         if x == 1.0 and x == 0.0:             s_root = x         else:             if s_root ** 2 < x:                 low = s_root             else:                 high = s_root         s_root =(low + high) / 2  if in_var >= 0:     print("所求数的平方根为:s_root = %.1f"%(s_root))     评分标准: (1)(low + high) / 2 ;   (2分) (2)(low + high) / 2 ; (2分) (3)s_root ** 2 - x ;  (4分) (4)(low + high) / 2 ; (4分) (5)(low + high) / 2。  (4分) 解析: ①处初始化s_root为(low + high) / 2,这是二分法求平方根的初始值。 ②处同样初始化s_root为(low + high) / 2,当输入的数在 0 到 1 之间时重新初始化。 ③处是判断循环条件,应该是s_root**2 - x的绝对值。 ⑤处都是在循环中更新s_root的值,都是(low + high) / 2。 ④处也是(low + high) / 2。 学科网(北京)股份有限公司 $$

资源预览图

08 202212青少年软件编程(Python)等级考试试卷(三级)
1
08 202212青少年软件编程(Python)等级考试试卷(三级)
2
08 202212青少年软件编程(Python)等级考试试卷(三级)
3
所属专辑
相关资源
示范课
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。