全国青少年信息素养大赛 Python编程挑战赛初赛 内部集训模拟试卷六及详细答案解析
博主推荐
- 所有考级比赛学习相关资料合集【推荐收藏】
1、Python比赛
-
信息素养大赛Python编程挑战赛
-
蓝桥杯python选拔赛真题详解
-
蓝桥杯python省赛真题详解
-
蓝桥杯python国赛真题详解
2、Python考级
-
python等级一级真题解析【电子学会】
-
python等级二级真题解析【电子学会】
-
python等级三级真题解析【电子学会】
-
python等级四级真题解析【电子学会】
信息素养大赛初赛Python编程模拟试卷六
选择题
1、以下程序的运行结果是
def f(x,y.z):print(x,y,z)
f(z=3,x=2.y=1)
A、3 2 1
B、1 2 3
C、2 1 3
D、3 1 2
答案:C
考点分析:考察函数的调用,调用f函数的时候传入了指定的参数及对应的值,所以输出的时候会输出对应的值;如果没有指定实参名字就是按顺序一个一个匹配;答案C
2、关于以下程序,下列表述中错误的一项是
c=1
def fun(n):a=1for b in range(1,n):a*=breturn a
n=int(input('Enter n='))
print(fun(n),c)
A、c是全局变量,a是局部变量
B、n是形式参数,当n=5时,程序输出120 1
C、程序实现求阶乘
D、range()函数是python内置函数
答案:B
考点分析:考察阅读程序能力,fun函数是实现求阶乘,c是全局变量,a是局部变量,传入形参n,for循环中range的右边界是n,是不包括n的,只能到n-1;所以传入5最后求的是4的阶乘,答案是24;答案B
3、以下关于全局变量和局部变量的表述正确的是
A、如果在函数中定义的局部变量与全局变量同名,则全局变量屏蔽局部变量
B、可以通过global关键字,通过全局变量修改局部变量
C、nonlocal关键字用来在函数或局部作用域使用内层(非全局)变量
D、全局变量的作用域一定比局部变量的作用域大
答案:D
考点分析:考察变量相关知识,如果在函数中定义的局部变量与全局变量同名,则局部量屏蔽全局变量,可以通过global关键字,通过局部变量修改全局变量,。nonlocal关键字用来在函数或局部作用域使用外层(非全局)变量。局部变量的作用域是指程序内部,全局变量的作用域是整个程序;答案D
4、有如下Python程序段,执行该程序后,结果是
def fun(*p):return sum(p)
print(fun(1,3,5))
A、4
B、6
C、8
D、9
答案:D
考点分析:考察函数的使用,fun函数是实现求和,1+3+5=9,答案D
5、在一个平面中,有几个圆两两相交,但任二个圆不相切,任三个圆无公共点,以下函数能计算出n个园把平面分成的区域个数,空格处填写的语句是
A、c(n-1)+2*(n-1)
B、c(n-1)+ c(n-2)
C、c(n-1)+2*n
D、c(n-1)+2*(n+1)
答案:A
考点分析:考察阅读程序能力,因为是选择题,可以使用数字带入的方式更为简单,当2等于2的时候,应该是分成了4个区域,只有A选项符合;答案A
本文作者:小兔子编程 作者首页:https://blog.csdn.net/frank2102
6、观察此题示例代码,以下表述中错误的是
nums = range(2,20)
for i in nums:nums=list( filter(lambda x:x==i or x % i,nums))
print(nums)
A、filter()函数输出后是一个迭代对象而不是列表
B、示例代码中的关键字lambda表示匿名函数
C、lambda x:x==i or x % i,nums中冒号之前的x是这个函数的参数
D、匿名函数需要return来返回值,表达式本身结果就是返回值
答案:D
考点分析:考察阅读程序能力,关键字lambda表示匿名函数,冒号之前的表示它们是这个函数的参数,匿名函数不需要retum来返回值,表达式本身结果就是返回值。在定义匿名函数时,需要将它直接赋值给一个变量,然后再像一般函数调用;答案D
7、下面关于递归函数说法正确的是
A、一般来说,递归函数的执行效率高于非递归函数
B、边界条件和递归关系是递归函数编写的关键
C、递归函数的嵌套调用次数没有限制
D、递归函数不可以改写为非递归函数
答案:B
考点分析:考察递归函数相关知识,递归函数通常执行效率会低于非递归函数,在Python中默认递归函数的次数为1000次,递归函数通常也都可以通过模拟或者迭代进行改写;答案B
8、下面哪种算法使用了分治的方法
A、插入排序
B、快速排序
C、选择排序
D、冒泡排序
答案:B
考点分析:考察分治算法的使用,上面四种排序算法中快速排序使用的是分治算法,此外归并排序用的也是分治算法;答案B
9、运行以下程序输出的结果是
y=2
def fun(): global y y=1 print(y)
fun()
print(y)
A、2
1
B、2
2
C、1
2
D、1
1
答案:D
考点分析:考察变量的使用,Python中定义函数时,若想在函数内部对函数外的变量进行操作,就需要在函数内部声明其为global以改变它的值;答案D
10、下列选项中,关于如何安装第三方库的说法正确的是
A、如果电脑没有联网,仍然可以使用pip工具安装本地的whl文件
B、必须使用命令行工具安装第三方库
C、第三方库只要可以用pip完整的下载下来,就可以成功安装
D、安装上Anaconda就安装了所有的第三方库
答案:A
考点分析:考察第三方库安装相关知识,可执行文件不需要使用命令行工具就可以安装。没有编译的第三方库,即使能够下载,也无法安装。Anaconda里面包含了800多个第方库,但并不是全部的第三方库;答案A
11、下列程序段的运行结果为
def f(n):if n<=1:return 1else:return f(n-1)*3
print(f(5))
A、9
B、27
C、81
D、243
答案:C
考点分析:考察函数的使用,函数f实现的是3的n-1次方,输入5,得到的就是3的4次方;答案C
12、下面的程序输出1~100之间能被7整除但不能同时被5整除的所有整数;根据下面哪个选项的方法优化后,程序的运行效率最高
k=1
while k<101:if k%7==0 and k%5 !=0:print(k)K += 1
A、将k=1改为k=7
B、将k=1改为k=5
C、将k+= 1改为k +=7
D、将k=1改为k=7,同时将k+=1改为k+=7
答案:D
考点分析:考察阅读程序能力,要求的是能被7整除且不能被5整除,所以最好的优化是从7开始,然后每次加7;答案D
13、有如下Python程序,执行该程序后,结果是
g = lambda x,y=3,z=5:x+y+z
print(g(2))
A、2
B、5
C、7
D、10
答案:D
考点分析:考察lambda函数的使用,lambda函数是匿名函数,是非常简洁而且高效的使用,通常适用于一行写完,一般只包含一个表达式,2对应的形参是x,所以得到的是:2+3+5=10;答案D
14、有一球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下,求它在第10次落地前,反弹多高?用说归函数解决,下面选项正确的是
A、
def height(n):if n == 1:return 100else:return n*2
print(height(10))
B、
def height(n):if n == 1:return 100else:return height(n-1)/2
print(height(10))
C、
def height(n):if n == 1:return 100else:return height(n+1)/2
print(height(10))
D、
def height(n):if n == 1:return 100else:return height(n-1)*2
print(height(10))
答案:B
考点分析:考察递归函数的使用,题目告知每次弹起的高度是前一次的一半,所以递归规则为height(n-1)2;答案B
15、应用分治算法的前提是
A、问题的可分性和解的可归并性
B、问题的复杂性和解的简单性
C、问题的可分性和解的存在性
D、问题的复杂性和解的可归并性
答案:A
考点分析:考察分治算法,分治算法将问题分解为多个相似的子问题,递归地解决这些子问题,然后将子问题的解合并以得到原问题的解。分治算法的核心思想是“分而治之”,即将复杂问题分解为更小、更易处理的子问题;所以前提是问题要可以拆分,同时解是可以进行合并的;答案A
本文作者:小兔子编程 作者首页:https://blog.csdn.net/frank2102
16、有如下Python程序,执行该程序后,结果是
x = 3
def calc():x = 5
print(calc())
A、3
B、5
C、无输出
D、None
答案:D
考点分析:考察函数相关知识,这题很多小朋友可能会选择B,我们要认真看自定义函数calc,并没有返回值,所以函数会返回None,输出的结果应该是None;答案D
17、有如下Python的自走义函数,执行该程序后,结果是
def calc(x,y,op):return eval(str(x)+op+str(y))
print(calc(3,5,'+'))
A、8
B、35
C、None
D、-2
答案:A
考点分析:考察函数的使用,calc函数中是计算x+y,可能很多小朋友们看到函数里面有str强制转换成字符串函数,也就是x和y是进行字符串的拼接“3+5”;但是前面还有一个eval函数,eval函数是会将字符串作为表达式进行计算,返回计算后的结果,答案A
18、阅读下列程序段,数列的第6项值为多少
def fibona(x):if x==1 or x==2:f=1for i in range(3,x+1):f=fibona(x-1)+fibona(x-2)return f
n=int(input("请输入数列第几项:"))
m=fibona(n)
print("数列的第"+str(n)+"项的值为"+str(m))
A、1
B、8
C、21
D、34
答案:B
考点分析:考察斐波那契数列,斐波那契数列第i项为前两项之和:1、1、2、3、5、8、13...,所以第六项为8;答案B
19、如下代码运行后下面选项中描述错误的是
def pph(a,b):c=a**2+bb=areturn c
a=10
b=100
c=pph(a,b)+a
print(a,' ',b,' ',c)
A、执行该函数后,变量a的值为10
B、执行该函数后,变量b的值为100
C、执行该函数后,变量c的值为200
D、该函数名称为pph
答案:C
考点分析:考察阅读程序能力,自定义函数调用用的是值传递,所以改变了形参的值并不会改变实参的值,所以执行后,a还是等于10,b还是等于100,c的值为210,pph函数里面是计算a的平方加b并返回;答案C
20、以下有关Python函数的定义表述中错误的是
A、函数的定义必须在主程序调用语句之前出现
B、在形参列表中必须先列出有默认值的形参,再列出没有默认值的形参
C、实参是实际占用内存地址的,而形参不占用
D、def关键字后面加函数名定义函数,定义必须以冒号结尾
答案:B
考点分析:考察函数相关知识,ACD都正确,B选项刚好说反了,在形参列表中必须先列出没有默认值的形参,再列出有默认值的形参;答案B