完整版python二级考试试题2Word文档下载推荐.docx
《完整版python二级考试试题2Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《完整版python二级考试试题2Word文档下载推荐.docx(15页珍藏版)》请在冰豆网上搜索。
Else:
b=a-2
print(b)
A.6B.8C.10D.12
9.下列Python表达式的值为偶数的是()
A.12*3%5B.len(“Welcome”)
C.int(3.9)D.abs(-8)
10.下列选项中,属于Python输入函数的是()。
A.random()B.print()C.Cout()D.input()
11.以下叙述中正确的是()。
A.Python3.x与Python2.x兼容
B.Python语句只能以程序方式执行
C.Python是解释型语言
D.Python语言出现得晚,具有其他高级语言的一切优点
12.Python文件的后缀名是()。
A..docB..vbpC..pyD..exe
13.在python语言中表示“x属于区间[a,b)”的正确表达式是()
A.a≤xorx<
bB.a<
=xandx<
bC.a≤xandx<
bD.a<
=xorx<
b
14.在Python中,返回x的绝对值的函数是()。
A.abs(x)B.bin(x)C.all(x)D.input(x)
15.Python输入函数为()。
A.time()B.round()C.input()D.print()
二、程序填空
16.蒙特卡洛方法不仅可以用来模拟投针实验,还可以用来模拟求解圆周率T。
请根据所学知识,并上网搜索有关资料,找到利用蒙特卡洛方法求解圆周率Π的原理、方法和Python程序。
17.水仙花数是指一个三位数,它的每个位上的数字的3次方之和就等于它本身,例如:
1**3+5**3+3**3=153。
这类三位数也被叫做自恋数、自幂数或者阿姆斯特朗数。
[问题求解]设这个数存放于变量x中,变量g、s、b分别存放个位、十位、百位上的数。
需得分离数字得到每位上的数,即将变量g、s、b表示为x的形式。
请阅读如下python程序,在空白处填写适当的表达式或语句,使程序完整。
print("
三位数之内的水仙花是:
"
)
forxin___(100,1000):
b=x//100
s=(x//10)___
g=___
Ifx=(b**3+s**3+g**3):
print(___)
18.若两个素数之差为2,则该对素数称为双胞胎数,如3,5就是一对双胞胎数。
编写python程序,实现如下功能:
输入n的值,统计显示n以内的所有双胞胎数。
程序运行界面如图所示:
实现上述功能的程序如下,请在划线处填入合适的代码。
importmath
defisprime(x):
______
foriinrange(2,int(math.sqrt(x))+1):
ifx%i==0:
f=False
returnf
n=int(input("
请输入一个正整数n:
))
c=0
k=3
whilek<
=n-2:
ifisprime(k)and______________:
c+=1
print("
第"
+str(c)+"
对双胞胎数:
k,'
和'
k+2)
_______
print("
共有"
+str(c)+"
对双胞胎数"
划线处①处应该填入的语句为:
;
划线处②处应该填入的语句为:
划线处③处应该填入的语句为:
。
19.某字符转置算法描述如下:
将字符串(均为大写字符)s依次转换为相对应的数值(字符A~Z对应数值1~26);
·
转换后的数值以K个数据为一段,将n个待处理的数据依次分割成若干段(最后一段不足部分用0来补充);
每一段中K个数据与K*K转置矩阵进行乘法运算;
将乘法运算得到的每一个结果值除以26求余数,依次转换成相应字符(数值1~26对应字符A~Z),最后按原始字符串长度输出。
乘法运算规则如下:
第i个元素c(i)=第j个元素a(j)*转置矩阵第j行第i个元素b(t)的乘积之和(其中j=1,2…K)
例如:
字符串s=PYTHON,区块大小K=4,的转置过程如下:
(1)根据算法描述,上述示例中,字符“N”的相乘结果(即图中(★)处)为________。
(2)请在划线处填入合适代码。
PrivateSubCommandl_Click()
Dima(1To100)AsInteger´
存储字符串,长度不超过100个字符
Dimb(1To100)AsInteger存储转置矩阵,长度不超过10*10
Dimc(1To100)AsLong
DimsAsString,tmpAsString
DimkAsInteger,tAsInteger,iAsInteger,jAsInteger
DimnAsInteger,mAsInteger,lensAsInteger
s=Textl.Text´
在Textl中输入原始字符串
k=Val(Text2.Text)´
在Text2中输入区块大小K
Randomize
Fori=1Tok^2
b(i)=Int(Rnd*9)+1
tmp=tmp十Str(b(i))
IfiModk=0Then
List2.AddItemtmp
tmp="
.
EndIf
Nexti
lens=Len(s):
n=lens
Fori=1Ton
tmp=Mid(s,i,1)
①__________
Listl.AddItemStr(a(i))
DoWhilenModk<>0
n=n十1
a(n)=0
Listl.AddItemStr(a(n))
Loop
m=(i―1)Modk+1
t=1
Forj=②__________
c(i)=a(j)*b((m-1)*k+t)+c(i)
t=t+1
Nextj
Nexti
List3.AddItemStr(c(i))
s=″″
Fori=1Tolens
③__________
s=s+Chr(t+64)}
Text3.Text=s´
在Text3中输出转置后的字符串
EndSub
20.完善程序实现以下功能并保存。
输入一元二次方程的系数a,b,c的值,求解一元二次方程ax2+bx+c=0(a≠0)
#请不要更改源程序的结构,删除原题里的①、②。
填写正确的代码,使程序完善
a=float(input("
请输入方程系数a(!
=0):
b=float(input("
请输入方程系数b:
c=float(input("
请输入方程系数c:
delta=b*b-4*a*c
ifdelta>
________:
x1=(-b+math.sqrt(delta))/(2*a)
x2=(-b-math.sqrt(delta))/(2*a)
方程有两个不同的解"
,x1,x2)
elifdelta==0:
x1=________
方程有两个相同的解"
,x1)
else:
方程无解"
input("
运行完毕,请按回车键退出..."
21.编写程序,用*打印一个如下所示的等腰直角三角形,将测试结果截图。
*
**
***
****
【参考答案】***试卷处理标记,请不要删除
1.D
【详解】
本题主要考查Python程序的执行。
列表的索引是从0开始的,故List[3]=9,故段运行后的输出结果是9,故本题选D选项。
解析:
D
2.D
本题主要考查Python赋值语句。
“5s”不是一个合法的变量名,不能将变量x赋给一个数值或表达式,可以将s+5赋给变量s,故本题选D选项。
3.C
变量i的范围是从1~20,每次递增3,故x=0+1+4+7+10+13+16+19=70,输出x为70,故程序段运行的结果是70,故本题选C选项。
C
4.C
本题主要考查Python分支结构。
分析程序可知,该程序采用多分支结构,故程序①处应填elif,故本题选C选项。
5.A
本题考查的是Python函数。
input()是输入函数,print()是输出函数,abs()是绝对值函数。
故选项A正确。
A
6.B
Python表达式a=b中“=”表示把“=”右边变量的值赋值给左边变量,故本题选B选项。
B
7.D
本题主要考查Python表达式知识点。
书写表达式时运算符号不能省略,+加、-减、*乘、**幂、/除、//整除、%取模,A、B、C正确的表达式分别是b**2-4*a*c,1/2*g*t*
书写表达式时运算符号不能省略,+加、-减、*乘、**幂、/除、//整除、%取模,A、B、C正确的表达式分别是b**2-4*a*c,1/2*g*t**2,pi*r**2,2*pi*r是正确的表达式,故本题选D选项。
8.B
a=6,满足a>
=0,执行b=a+2=8,故在Python中运行后,b的值是8,故本题选B选项。
9.D
本题主要考查Python表达式。
12*3%5=1,len(“Welcome”)=7,int(3.9)=3,abs(-8)=8,故本题选D选项。
10.D
本题主要考查Python输入函数。
random()是随机函数,print()是输出函数,Cout()函数是统计字符串里某个字符出现的次数,input()是输入函数,故本题选D选项。
11.C
本题考查Python相关知识点
Python3.x与Python2.x版本不同,不兼容。
故选项A说法错误
Python语句也可以使用脚本直接运行。
故选项B说法错误
Python是解
Python是解释型语言。
故本题选C选项
Python不具有其他高级语言的一切优点。
故选项D说法错误
12.C
本题主要考查Python相关知识点知识点。
.doc是文字处理软件(word后缀名),.vbp是VisualBasic工程文件后缀名,.exe是可执行文件后缀名,.py是Python文件
.doc是文字处理软件(word后缀名),.vbp是VisualBasic工程文件后缀名,.exe是可执行文件后缀名,.py是Python文件的后缀名,故本题选C选项。
13.B
在python语言中表示“x属于区间[a,b)”的正确表达式是a<
b,故本题选B选项。
14.A
本题主要考查Python标准函数。
在Python中,返回x的绝对值的函数是abs(x),bin()返回一个整数或者长整数的二进制表示,all()函数用于判断给定的可迭代参数中的所有
在Python中,返回x的绝对值的函数是abs(x),bin()返回一个整数或者长整数的二进制表示,all()函数用于判断给定的可迭代参数中的所有元素是否都为TRUE,input(x)是输入函数,故本题选A选项。
15.C
input()是输入函数,print()是输出函数。
故选项C正确。
16.原理:
通常蒙特•卡罗方法通过构造符合一定规则的随机数来解决数学上的各种问题。
对于那些由于计算过于复杂而难以得到解析解或者根本没有解析解的问题,蒙特•卡罗方法是一种有效的求出数值解的方法。
一般蒙特•卡罗方法在数学中最常见的应用就是蒙特•卡罗积分。
方法:
蒙特卡罗方法的解题过程可以归结为三个主要步骤:
构造或描述概率过程;
实现从已知概率分布抽样;
建立各种估计量。
利用蒙特卡洛方法实现求解圆周率
#!
/usr/bin/Python
#-*-coding:
utf-8-*-
importrandom
defmonteCarlo(N):
i=0
count=0
whilei<
=N:
x=random.random()
y=random.random()
ifpow(x,2)+pow(y,2)<
1:
count+=1
i+=1
pi=4*count/N
print(pi)
monteCarlo(1000000)
本题考查的知识点是Python程序。
原理:
利用蒙特卡洛方法实现求解圆周率#!
/usr/bin/Python#-*-coding:
utf-8-*-importrandomimportmathdefmonteCarlo(N):
i=0count=0whilei<
x=random.random()y=random.random()ifpow(x,2)+pow(y,2)<
count+=1i+=1pi=4*count/Nprint(pi)monteCarlo(1000000)
17.range%10x%10或x-b*100-s*10或其它同等答案x
本题考查的是Python程序设计。
水仙花数是指一个三位数,故使用range函数遍历100~999;
s存放的是十位数,故可以选对x取整后再除以10求余,故第二空应填%10(求余符号%);
g是存放个位,直接除以10求余,或减去前面整百和整十的数,故第三空为:
x%10或x-b*100-s*10或其它同等答案;
如果找到满足条件的数,则输出,故第四空为:
x。
18.f=Trueisprime(k+2)k=k+1或k+=1或k=k+2或k+=2
本题主要考查Python程序的执行与调试。
①isprime(x)用来判断x是不是素数,通过用x整除2~int(math.sqrt(x)),如果余数为0则表明该数不是素数,赋值f为假退出循环,f的初值为True,故第一空填f=True。
②若两个素数之差为2,则该对素数称为双胞胎数,此处判断相差为2的两个数是不是素数,故第二空填isprime(k+2)。
③素数都是奇数,此处需要更新k的值继续循环判断,可以将k的值递增1或递增2,故填k=k+1或k+=1或k=k+2或k+=2。
19.①a(i)=Asc(tmp)-64或a(i)=Asc(tmp)-Asc("
A"
)+1②i–m+1Toi–m+k③t=(c(i)–1)Mod26+1
本题考查乘法运算规则的理解以及转置矩阵中行列数据的读取。
(1)根据算法描述,图中
(1)处的值为15×
5+14×
1+0×
2+0×
9=89。
(2)程序先随机生成数组b,其下标为1到k×
k,并以行列的形式显示在列表框list2中(即为转置矩阵),然后读取大写字符串s中的每个字符,并将每个字符转换成相应字母表中的位置存储在数组a中。
代码①处为字符转成相应的字母表中位置值,下方代码将a(i)输出在列表框listl中,故此处应获取a(i)的值。
根据题干描述“字符A~Z对应数值1~26”,此处为将tmp获取的字符通过Asc函数进行转换,语句为“a(i)=Asc(tmp)-64”,还可以是“a(i)=Asc(tmp)-Asc(″A″)+1”。
代码②处为循环变量j的取值范围,根据乘法规则,变量j的范围是每一段中的1到k之间的值,需要获取每一段的起始位置下标,结合上文得到的m值,可得循环变量的范围是“i-m+1Toi-m十k”。
代码③处是将计算结果c(i)按原长度转换成相应大写字符,计算结果要求除以26取余,若直接写成c(i)Mod26,则导致数值26的结果为0,因此需要先减1,Mod后再加1这样的处理技巧,因此答案为“(c(i)-1)Mod26+1”。
20.-b/(2*a)
本题主要考查Python程序执行与调试。
①delta大于0,方程有两个不同的解,delta等于0,方程有两个相同的解,delta小于0,方程无解,故第一空填0。
②delta=0,则方程有两个相同的根,x=-b/(2*a),故第二空填-b/(2*a)。
21.layer=int(input("
请输入需要打印的层数:
forxinrange(1,layer+1):
foryinrange(1,x+1):
*"
end="
本题主要考查Python循环结构。
Pythonfor循环可以遍历任何序列的项目,如一个列表或者一个字符串。
range可以生成一个整数列表,列表范围根据接收的layer来确定。
外层循环用于确定输出行数,内层循环用于控制每行符号个数。
【点睛】