【编程】计算机二级Python真题及答案解析2word程序填空阅读填空程序试题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

【编程】计算机二级Python真题及答案解析2word程序填空阅读填空程序试

一、程序填空
1.完善程序实现如下功能并保存:
有5个人坐在一起,第5个人说他比第4个人小3岁;第4个人说他比第3个人小3岁;第3个人说他比第2个人小3岁;第2个人又说他比第1个人小3岁;第1个人说他是38岁。

编写程序,计算出第5个人的年龄并显示。

def age(n):
if n == 1: c = ________
else: c = age(n - 1) - 3
return ________
print("第5人的年龄:",age(________))
input("运行完毕,请按回车键退出...")
2.程序编写
求1+22+32+……+1002的结果
_______________________________
_______________________________
_______________________________
_______________________________
input(“运行完毕,请按回车键退出...”)
3.阅读程序。

分析有关多项式的代码并回答问题。

求1!+2!+3!+……+20!的和。

n=0
s=0
t=1
for n in range(1,21):
t*=n
s+=t
print(s)
(1)n的作用是________________。

(2)s的作用是 ______________。

(3)t的初值必须赋值为1,这是因为_________。

(4)t*=n的等价语句是 __________
(5)s+=t的等价语句是 ______。

4.完善程序。

以下是计算S=1+6+11+…+101的程序代码。

请你在处填写正确的语句。

s=0
k=1
while(k<=101)
__
s=0
k=1
while(k<101):
k=k+5
s=s+k
print(s+1)
5.调试程序。

请阅读以下程序并写出运行结果。

fruites=['banana','apple','mango']
for fruit in fruites:
print(fruit)
a=len(fruites)
print('a=',a)
_________________
6.(项目情境)在中国古代,出自数学家张丘建的《算经》中这样一个值得研究的问题:今有鸡翁一,直钱五;鸡母一,直钱三;鸡雏三,直钱一。

凡百钱,买鸡百只。

问鸡翁、母、雏各几何?这个问题就是著名的“百钱买百鸡问题”。

即:现有100文钱,公鸡5文钱一只,母鸡3文钱一只,小鸡一文钱3只,要求:公鸡,母鸡,小鸡都要有,把100文钱买100只鸡,买的鸡是整数。

问公鸡、母鸡和小鸡各几何?
(问题求解)设用变量g、m、x三个变量分别存放公鸡、母鸡和小鸡的数量,请阅读如下程序,在空白处填写适当的表达式或语句,使程序完整。

for g in range(1,20):
for m in _______:
for x in range(3,98,3):
if _________ and __________ ==100:
print("公鸡:",g,"母鸡:",m,"小鸡:",x)
7.请编写一个密码登陆系统,接收用户从键盘输入的密码和你自己的密码进行比对,如果正确就显示“恭喜你进入系统”如果不正确让用户重新输入,有三次机会。

8.输入三个同学的成绩,然后大到小排列。

9.编写一个程序,判定用户输入的两个数 a和 b,如果用户输入的第一个数大,则两数互换,否则原样输出。

10.猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。

以后每天早上都吃了前一天剩下的一半零一个。

到第10天早上想再吃时,见只剩下一个桃子了。

求第一天共摘了多少。

11.求100以内素数。

12.程序设计:键盘输入任意的正整数,程序输出与其相应的二进制数。

代码如下:
n=int(input("请输入一个十进制数:"))
result=[]
while n>0:
result.append( ① )
n=②
result.reverse()
for i in result:
print(i,end=”)
(1)程序代码中①处正确的代码是(_______)。

A.n%2 B.n/2 C.n//2 D.n*2
(2)程序代码中②处可能的代码是(_______)。

A.n%2 B.n/2 C.n//2 D.n*2
13.(最大公约数)用辗转相除法求两个正整数的最大公约数。

代码如下:
def gcd (m,n):
r=
while r!=0:
m=n
n=
return
a=int(input(‘请输入a的值:’))
b=int(input(‘请输入b的值:’))
print(‘最大公约数是:' )
填空:
________ ________ ________ ________ ________
14.“百鸡百钱”问题是一个有名的数学问题,出自《张丘建算经》。

其内容是:公鸡5文钱1只,母鸡3文钱1只,小鸡3只1文钱,用100文钱买100只鸡,其中公鸡、母鸡和
小鸡都必须要有,问公鸡、母鸡和小鸡各多少只?
(1)请在空格处填写正确的代码,使程序完善实现以下功能。

money=100 #一共100文钱
num=100 #一共100只鸡
cock_price=5 #公鸡价格5文
hen_price=3 #母鸡价格3文
threechick_price=1 #3只小鸡1文
for cock_num in range(1,_______): #公鸡只数可能为1-20
for hen_num in range(1,_________): #母鸡只数可能为1-33
for chick_num in range(1,101): #(3小鸡)只数可能为1-100
money1=cock_num*cock_price+hen_num*hen_price+chick_num/threechick_price num1=cock_num+hen_num+chick_num
if money1==money and num1==num:
print (cock_num,hen_num,__________)
input("运行完毕,请按回车键退出...")
(2)运行程序,运行结果如图所示。

15.完善程序实现以下功能并保存。

输入一元二次方程的系数a,b,c的值,求解一元二次方程 ax2+bx+c=0(a≠0)
#请不要更改源程序的结构,删除原题里的①、②。

填写正确的代码,使程序完善import math
a=float(input("请输入方程系数a(!=0):"))
b=float(input("请输入方程系数b:"))
c=float(input("请输入方程系数c:"))
delta=b*b-4*a*c
if delta>________:
x1=(-b+math.sqrt(delta))/(2*a)
x2=(-b-math.sqrt(delta))/(2*a)
print("方程有两个不同的解",x1,x2)
elif delta==0:
x1=________
print("方程有两个相同的解",x1)
else:
print("方程无解")
input("运行完毕,请按回车键退出...")
16.蒙特卡洛方法不仅可以用来模拟投针实验,还可以用来模拟求解圆周率T。

请根据所学知识,并上网搜索有关资料,找到利用蒙特卡洛方法求解圆周率Π的原理、方法和Python程序。

17.某品牌手机第一年销量为20000台,假设平均每年的销量比上一年增加68%,请问几年后能使总销量达到60000台。

下面的程序能实现上述的功能,请将缺失的代码补充完整。

total= every_year=20000
year=1
while __________________ :
every_year + = ____________
total + = every_year
year + = 1
print(year)
18.辗转相除法,又称欧几里德算法,用于计算两个正整数m、n的最大公约数。

它是已知最古老的算法,其可追溯至公元前300年前。

辗转相除法的算法步骤是,对于给定的两个正整数m、n(m>n),用m除以n得到余数r,若余数r不为0,就将n和r构成新的一对数(m=n,n=r),继续上面的除法,直到余数为0,这时m就是原来两个数的最大公约数。

因为这个算法需要反复进行除法运算,故被形象地命名为“辗转相除法”。

小曲设计了辗转相除法的算法,请根据下面算法回答问题。

描述一描述二描述三
①输入两个正整数m,n
(m>n);
②计算m除以n所得的
余数r;
③m=n,n=r;
④若r=0,则m,n的最大公
约数等于m;否则转到
步骤②;
⑤输出最大公约数m;
⑥结束。

法。

(2)在描述三中代码4到6行作用是__________。

(3)在描述三程序设计中,补充代码第8行划线处为__________。

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)请在划线处填入合适代码。

Private Sub Commandl_Click()
Dim a(1 To 100)As Integer ´存储字符串,长度不超过100个字符Dim b(1 To 100)As Integer 存储转置矩阵,长度不超过 10*10 Dim c(1 To 100)As Long
Dim s As String, tmp As String
Dim k As Integer, t As Integer, i As Integer, j As Integer
Dim n As Integer, m As Integer, lens As Integer
s=Textl. Text ´在 Textl 中输入原始字符串
k=Val(Text 2.Text) ´在 Text 2 中输入区块大小K Randomize
For i=1 To k^2
b(i)=Int(Rnd*9)+1
tmp=tmp十Str(b(i))
If i Mod k=0 Then
List 2. AddItem tmp
tmp="" .
End If
Next i
lens=Len(s):n=lens
For i=1 To n
tmp=Mid(s,i,1)
①__________
Listl. AddItem Str(a(i))
Next i
Do While n Mod k<>0
n=n十1
a(n)=0
Listl. AddItem Str(a(n))
Loop
For i=1 To n
m=(i―1)Mod k+1
t=1
Forj= ②__________
c(i)=a(j) * b((m-1) * k+t)+c(i)
t=t+1
Next j
Next i
For i=1 To n
List 3. AddItem Str(c(i))
Next i
s=″″
For i=1 To lens
③__________
s=s+Chr(t+64)}
Next i
Text 3.Text=s ´在Text 3 中输出转置后的字符串
End Sub
20.阅读程序。

观察使用随机数求解百钱白鸡问题的代码并回答问题。

百千白鸡问题是经典的数学问题,原题为“鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,则翁、母、雏各几何?”翻译过来,意思是公鸡一个五块钱,母鸡一个三块钱,小鸡三个一块钱,现在要用一百块钱买一百只鸡,问公鸡、母鸡、小鸡各多少只?
import random
while True:
x=random.randrange(0,20)
y=random.randrange(0,33)
z=random.randrange(0,100)
if 5*x+3*y+z/3==100 and x+y+z==100:
print('公鸡',x)
print('母鸡',y)
print('小鸡',z)
(1)Python中导入库文件的命令是________。

(2)random.randrange(0,20)生成的随机数的范围是_________。

(3)如果不想写类似random.randrange(0,20)这么长的句子,可以修改程序中的第一行为________
(4)while True 的作用是______ 。

(5)如果while True造成程序无法停止,我们可以在程序中添加一行 _________。

21.学校开展“奇妙的数字”研究性学习活动。

张轩小组4人决定把课题定为《探秘水仙花数》。

(1)张轩使用百度搜索引擎搜索到“水仙花数”是这样定义的:“水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153 = 13+53+33,那么这个数就是一个“水仙花数”。

百度属于____搜索引擎(全文,分类)
(2)为了求解100--999这些数字中,哪些数字是“水仙花数”?张轩小组进行了算法设计,并使用python编写了一段程序来求解所有的“水仙花数”,程序和运行结果下图:
k是可以重新赋值的,k是变量还是常量?____程序中①处有空缺,请补充完整①处的代码。

____程序中逐一验证了100到999之间所有的三位数是否符合“水仙花数”的定义条件,这种算法叫做______(解析法,枚举法,递归法,二分法)。

(3)在研究成果展示环节,张轩小组可以使用什么软件制作《探秘水仙花数》的研究成果报告?(_____)
22.学习了Python绘制图形操作后,信息小组接到了编程演示的任务。

为此,小组同学编写了一段代码,绘制出多个不同颜色的圆形。

代码如下:
import turtle
turtle. bgcolor("black")
colors=["red", "green", "blue", "yellow"]
for x ① range(100):
turtle. pencolor(colors[x%4])
turtle. circle(x)
turtle. left(90)
请分析任务,完成下列题目。

(1)程序中①处应填写(________)。

A.print B.input C.in D.colors
(2)程序中x%4的作用是(________)。

A.计算x乘以4的结果
B.计算x除以4的整数部分
C.计算x除以4的小数部分
D.计算x除以4的余数
(3)执行此程序,绘制出圆形的总颜色数是(________)。

A.1 B.4 C.5 D.100
(4)执行此程序,绘制出圆形的总个数是(________)。

A.1 B.4 C.99 D.100
(5)此程序属于程序设计结构中的(________)。

A.顺序结构 B.分支结构
C.循环结构 D.跳转结构
23.小金同学学完了进制转换后,对课后的不同进制的加减法很是头疼,爱动脑筋的小金
突发奇想,能不能用python程序来完成这些作业呢?请帮小金完成代码编程. def convert(s):
m=0
le=len(s)
key=s[le-1]
if key=="B":
n=2
elif key=="D":
_______
else:
n=16
i=0
while i<=le-2:
c=s[le-1-i]
if c>="0"and c<="9":
a=ord(c)-ord("0")
elif c>="A"and c<="F":
a=ord(c)-ord("A")+10
_____________
i+=1
return m
s=input("请输入算式")
result=0;suanfu1="";suanfu2="";s1=""
for i in range(len(s)):
c=s[i]
if c=="+" or c=="-" or c=="=":
__________
suanfu1=suanfu2
suanfu2=c
if suanfu1=="":
result=t
if suanfu1=="+":
result=result+t
if suanfu1=="-":
result=result-t
s1=""
else:
s1=s1+c
print("计算结果为"+str(result)+"D")
(1)将程序横线处补充完整
(2)如输入“1110B+10D-30H=”则输出结果为___________。

24.阅读程序。

分析以下关于字符拼接与转换的Python程序并回答问题。

students=[ '小明','小红','小刚']
scores={ '小明':95,'小红':90,'小刚':90}
print(len(students))
print(len(scores))
(1)students的数据类型是______________。

(2)scores的数据类型是_____________。

(3)在scores中,每个字符与后面的数值共同构成了一个____________。

(4)len(students)的返回值是____________。

(5)print(len(scores))的输出结果是__________。

25.水仙花数是指一个三位数,它的每个位上的数字的3次方之和就等于它本身,例如:1**3+5**3+3**3=153。

这类三位数也被叫做自恋数、自幂数或者阿姆斯特朗数。

[问题求解]设这个数存放于变量x中,变量g、s、b分别存放个位、十位、百位上的数。

需得分离数字得到每位上的数,即将变量g、s、b表示为x的形式。

请阅读如下python程序,在空白处填写适当的表达式或语句,使程序完整。

print ("三位数之内的水仙花是:")
for x in___(100,1000):
b=x//100
s=(x//10)___
g=___
If x=(b**3 +s**3+g**3):
print(___)
26.(项目情境)水仙花数是指一个三位数,它的每个位上的数字的3次方之和就等于它本身,例如:1**3+5**3+3**3 = 153。

这类三位数也被叫做自恋数、自幂数或者阿姆斯特朗数。

(问题求解)设这个数存放于变量x中,变量g、s、b分别存放个位、十位、百位上的数。

需得分离数字得到每位上的数,即将变量g、s、b表示为x的形式。

请阅读如下python程序,在空白处填写适当的表达式或语句,使程序完整。

print ("三位数之内的水仙花是:")
for x in _____ :
b=x//100
s=_____
g=_____
if x==(b**3 + s**3 + g**3):
_____
27.阅读程序。

分析以下两段Python程序并回答问题。

#程序1
i=1
while i<101:
print('把这句话打印100遍')
i+=1
#程序2
i=100
while i:
print('把这句话打印100遍')
i=i-2
(1)在程序1中,i+=1这句话的含义是______________。

(2)在程序1中,‘把这句话打印100遍’实际输出了_____遍。

(3)在程序2中,i的初值是___。

(4)在程序2中,‘把这句话打印100遍’实际输出了_____遍。

(5)在程序2中,while i 的含义是_________。

28.使用Python自身提供的IDLE集成开发环境录入以下代码及调试
运行,检测结果。

# 鸡兔同笼
for x in range(1,23):
y=35-x
if 4*x+2*y==94:
print("兔子有%s只,鸡有%s只"%(x,y))
特别提示:代码录入完毕,调试运行,检测错误,讨论错误原因,上网查找错误格式的处置办法,直至能正确输出结果。

29.(项目情境)一元二次方程ax2+bx+c=0(a≠0),当b2-4ac≥0,方程有两个不同的实数根,当b2-4ac<0时,方程无实数根。

(问题求解)下面的python程序实现的功能是判断方程是否有实数根。

请阅读如下python 程序,在空白处填写适当的表达式或语句,使程序完整。

import math
a=int(input("请输入a的值:"))
b=int(input("请输入b的值:"))
c=int(input("请输入c的值:"))
d=_____ #将表达式b2-4ac的值赋给变量d
if ____
print("x1=",(-b+math.sqrt(d))/(2*a)) #输出方程的其中一个实数根
print("x2=",(_________) #输出方程的另一个实数根
else:
_________ #输出“方程无实数根”
30.地球绕太阳的运行周期为365天5小时48分46秒(合365.24219天),即一回归年。

公历的平年只有365天,比回归年短约0.2422天,每四年累积约一天,把这一天加于2月末(即2月29日),使当年的时间长度变为366天,这一年就是闰年。

判断某一年是否是闰年的方法是年份数能被4整除,但不能被100整除,或者年份数能被400整除。

以下是一段用于判断某一年是否是闰年的程序。

请将上面程序框中空格处的内容填写完整,其中①处填写代码注释
___________ ______ __________ _______ _______
【参考答案】***试卷处理标记,请不要删除
一、程序填空
1.c 5
【详解】
本题主要考查Python程序执行与调试。

①第一个人38岁,n标记第几个人,变量c保存年龄,当n=1时,c=38,故第一空填38。

②后面的人都比前一个人小3岁,故当n不等于1时,调用递归函数age, c = age(n - 1) - 3,最后返回第n个人的年龄c,第二空填c。

③此处是返回第5个人的年龄,即age(5),填5。

2.total=0 #变量可任选(符合规则) for i in range(1,101): total=total+i*i
#total=total+i**2 print(total)
【详解】
本题主要考查Python程序的编写。

①变量total用来统计最终的计算结果,其初始值为0,故填total=0 #变量可任选(符合规则)。

②求1+22+32+……+1002的结果,用for循环结构,变量i的范围是从1到100,故填for i in range(1,101):。

③计算语句是
total=total+i*i #total=total+i**2。

④最后用print()函数输出计算结果total,故填print
(total)。

3.计算每一项的阶乘记录阶乘相加后的和 t记录的是每一项阶乘的结果,t*=n即
t=t*n,t初值为1,能计算出每项的阶乘结果,若为0,则每项的阶乘结果都是0,不符合题意。

t=t*n s=s+t
【详解】
本题考查的是python语言编程。

本题考查的是1-20阶乘的求和。

本题的重点是要先计算出对应的每一项阶乘的结果t,然后20项阶乘的结果记录在s中。

在此过程中既要考虑到累乘求阶乘结果,又要考虑到累加求所有阶乘的和。

初值n=0,在1-21的循环过程中,记录每一项的阶乘,s=0记录阶乘累加的和,t=1记录每一项阶乘的结果。

每求一次阶乘就要进行一次求和,故语句t*=n,s+=t均在“for n in range(1,21):”的循环体内。

4. s=s+k
k=k+5
print(s)
【详解】
本题主要考查Python程序的执行与调试。

s=0,k=1,计算S=1+6+11+…+101,循环条件是k<=101,故循环体应为s=s+k,k=k+5,循环结束后,输出计算结果,故print(s)。

5.banana
apple
mango
a= 3
【详解】
本题主要考查Python中For循环结构。

for循环可以遍历任何序列的项目,如一个列表或者一个字符串;len() 方法返回列表元素个数。

因此本题输出为各列表内容及列表元素个数。

【点睛】
6.range(1,33) g+m+x==100 5*g+3*m+x/3
【详解】
本题考查的是算法中的经典问题。

百鸡百钱问题是典型的枚举算法解决,枚举算法的关键就是找到问题解决的条件和枚举范围。

7.pw=input("请输入密码:")
password="123456"
i=1
while(i<=3):
if pw==password:
print("恭喜你进入系统!")
break
else:
print("请重新尝试:",i)
pw = input("请输入密码:")
i=i+1
【详解】
本题主要考查程序设计。

可以通过Python程序设计语言实现题干要求,可以通过while循环控制三次机会,使用if条件分支结构判断是否输入正确,具体代码如下:
pw=input("请输入密码:")
password="123456"
i=1
while(i<=3):
if pw==password:
print("恭喜你进入系统!")
break
else:
print("请重新尝试:",i)
pw = input("请输入密码:")
i=i+1
8.
【详解】
本题主要考查程序设计与实现。

可以使用Python程序实现题干要求:
9.a=int(input(" 请输入数 a:"))
b=int(input(" 请输入数 b:"))
if a>b:
t=a
a=b
b=t
print("用户输入的数按小到大排序结果是: ", a, b)
else :
print("原样输出 ",a,b)
【详解】
本题主要考查Python程序设计。

使用input函数接收两个数a和b,用if条件分支结构判
断a和b的大小,如果a大于b,则交换,否则原样输出,具体代码如下:
a=int(input(" 请输入数 a:"))
b=int(input(" 请输入数 b:"))
if a>b:
t=a
a=b
b=t
print("用户输入的数按小到大排序结果是: ", a, b)
else :
print("原样输出 ",a,b)
10.s=1
for i in range(9):
s=(s+1)*2
print(s)
【详解】
本题主要考查Python程序设计。

第10天,只剩下一个桃子s=1,由题干每天早上都吃了前一天剩下的一半零一个,则第9天剩下的桃子为(s+1)*2,可以通过for循环求得第一天共摘了多少个桃子,具体代码如下:
s=1
for i in range(9):
s=(s+1)*2
print(s)
11.for i in range(1,100):
if i > 1:
for j in range(2,i):
if (i % j) == 0:
break
else:
print(i)
【详解】
本题主要考查Python程序设计。

可以通过for循环找出100以内的素数,用i依次整数2~i-1,如果能整除表明i不是素数,否则i为质数,具体代码如下:
for i in range(1,100):
if i > 1:
for j in range(2,i):
if (i % j) == 0:
break
else:
print(i)
12.A C
【详解】
本题主要考查Python程序设计。

①此处将n取余2,用append函数将值追加到列表result 中,故此处填n%2,选A选项。

②当n大于0时,n整除2继续循环,循环结束使用reverse函数,将result列表中的元素逆转,故此处填n//2,选C选项。

13.m%n r r=m%n n gcd(a,b)
【详解】
本题主要考查Python程序设计。

①首先对m和n求余得到r,判断r是否为0,故此处填m%n。

②如果r为0则结束,否则更新m的值为n,n的值为r。

③此处用更新后的m和n 继续求r,继续判断,故填r=m%n。

④循环结束后当r=0时,n即为最大公约数,故填n。

⑤输入a、b的值,使用函数gcd求a和b的最大公约数,故填gcd(a,b)。

14.34chick_num
【详解】
本题主要考查Python程序的执行。

①公鸡数量的范围1-20,for cock_num in range(1,21)表示变量cock_num的范围是1-20,故此处填21。

②母鸡的数量可能为1-33,同理,故此处填34。

③此处是按顺序使用print()函数输出公鸡数量、母鸡数量、小鸡数量,故此处填chick_num。

15.-b/(2*a)
【详解】
本题主要考查Python程序执行与调试。

①delta大于0,方程有两个不同的解,delta等于0,方程有两个相同的解,delta小于0,方程无解,故第一空填0。

②delta=0,则方程有两个相同的根,x=-b/(2*a),故第二空填-b/(2*a)。

16.原理:通常蒙特•卡罗方法通过构造符合一定规则的随机数来解决数学上的各种问题。

对于那些由于计算过于复杂而难以得到解析解或者根本没有解析解的问题,蒙特•卡罗方法是一种有效的求出数值解的方法。

一般蒙特•卡罗方法在数学中最常见的应用就是蒙特•卡罗积分。

方法:蒙特卡罗方法的解题过程可以归结为三个主要步骤:构造或描述概率过程;实现从已知概率分布抽样;建立各种估计量。

利用蒙特卡洛方法实现求解圆周率
#!/usr/bin/Python
#-*- coding:utf-8 -*-
import random
import math
def monteCarlo(N):
i = 0
count = 0
while i <= N:
x = random.random()
y = random.random()
if pow(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 -*-import randomimport mathdef monteCarlo(N): i = 0 count = 0 while i <= N: x = random.random() y = random.random() if pow(x, 2) + pow(y, 2) < 1: count += 1 i += 1 pi = 4 * count / N print(pi)monteCarlo(1000000)
17.total<60000every_year*0.68
【详解】
本题主要考查Python程序执行与调试。

①由题干可知,while循环条件是总销量total小于60000,故第一空填total<60000。

②平均每年的销量比上一年增加68%,即every_year + =every_year*0.68,故第二空填every_year*0.68。

18.自然语言确保m>=n r!=0
【详解】
本题主要考查算法及Python程序实现。

①描述一是自然语言描述法;描述二是流程图描述法;描述三是计算机程序语言描述法。

②在描述三中代码4到6行,当m<n时,交换m、n 的值,否则跳过,故作用是确保m>=n。

③由题干可知,循环条件是余数r不等于0,故代码第8行划线处为r!=0。

19.①a(i)=Asc(tmp)-64或a(i)=Asc(tmp)-Asc("A")+1 ②i–m+1To i–m+k ③t=(c(i)–1) Mod 26+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+1 To i-m十k”。

代码③处是将计算结果c(i)按原长度转换成相应大写字符,计算结果要求除以26取余,若直接写成c(i)Mod 26,则导致数值26的结果为0,因此需要先减1,Mod后再加1这样的处理技巧,因此答案为“(c(i)-1)Mod 26+1”。

20.import 0~19(包括0和19) import random as r 让程序无限循环 break;
【详解】
本题主要考查Python程序的执行与调试。

①Python中导入库文件的命令是import,如import random。

②random.randrange(0,20)生成的随机数的范围是0~19(包括0和19)。

③如果不想写类似random.randrange(0,20)这么长的句子,可以修改程序中的第一行为import random as r(给random取个简单的别名)。

④while True 的作用是让程序无限循环。

⑤如果while True造成程序无法停止,我们可以在程序中添加一行break;(满足条件后,执行break;可以跳出循环)。

21.全文变量 k+1 枚举法 Word/WPS/PowerPoint等
【详解】
本题主要考查Python程序的执行与调试。

①百度属于全文搜索引擎,也是关键词搜索。

②变量可以反复赋值,故k是变量。

③循环体执行完,k递增,继续找水仙花数,故此处填k+1。

④逐一验证了100到999之间所有的三位数是否符合,这种算法叫做枚举法。

⑤在研究成果展示环节,张轩小组可以使用Word/WPS/PowerPoint等软件制作《探秘水仙花数》的研究成果报告。

22.C D B D C
【详解】
本题主要考查Python程序调试。

①Python程序for循环格式是:for 变量 in range( ),故程序中①处应填写in,选C选项。

②程序中x%4的作用是计算x除以4的余数,选D选项。

③colors=["red", "green", "blue", "yellow"],依次循环从colors中取颜色,故执行此程序,绘制出圆形的总颜色数是4,故本题选B选项。

④x的范围是从0到99,故执行此程序,绘制出圆形的总个数是100个,选D选项。

⑤此程序属于程序设计结构中的循环结构,选C选项。

23.n=10 m=m+(n**(le-2-i))*a t=convert(s1) -24D
【详解】
本题主要考查Python程序的执行与调试。

①二进制的权值是2,十进制的权值是10,十六进制的权值是16,此处是十进制的情况,故填n=10。

②二进制、十六进制转化为十进制的方法是“按权展开、逐项相加”,从右往左加,变量i的初值等于0,故此处要变换为le-2-i,故此处填m=m+(n**(le-2-i))*a。

③当字符c是“+”、“-”、“=”时,则表明第一个运算数已全部保存到变量s1中,此处需要将其转化为十进制保存到变量t中,故填
t=convert(s1)。

④1110B转化为十进制数是14D,30H转化为十进制数是48D,故
1110B+10D-30H=-24D。

24.列表字典键值对 3 3
【详解】
本题考查的是python语言的数据类型,列表和字典。

(1)列表是写在方括号[]之间,用逗号分隔开的元素列表,students=[ '小明','小红','小刚']就是列表。

(2)字典用{}标识,它是一个无序的“键(key):值(value)”对集合,字典当中的元素是通过键来存取的,而不是通过偏移存取。

scores={ '小明':95,'小红':90,'小刚':90}就是一个字典类型。

(3)其中“'小明':95”就构成了一个键值对。

(4)len() 方法返回列表元素个数。

students=[ '小明','小红','小刚'],里面有三个元素,故返回值是3。

(5)print(len(scores)),其中scores={ '小明':95,'小红':90,'小刚':90}该字典有3个键值对,故输出结果是3。

25.range %10 x% 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。

26.range(100,1000) x//10%10 x%10 print ("三位数之内的水仙花是:"+str(x))
【详解】
本题主要考查Python程序的执行与调试。

①水仙花数是指一个三位数,即[100,999],for x in range(100,1000)表示x的范围是100-999,故此处填range(100,1000)。

②变量g、s、b分别存放个位、十位、百位上的数,故s=x//10%10(“//”表示整除,“%”表示取余)。

③g=x%10。

④如果满足 x==(b**3 + s**3 + g**3),则输出“三位数之内的水仙花是:x”,故此处填print ("三位数之内的水仙花是:"+str(x))。

27.i=i+1 无数遍 100 无数遍 i!=0 或 i>0 或其他等价答案
【详解】
本题主要考查Python程序的执行与调试。

①在程序1中,i+=1这句话的含义是i=i+1(即i 递增1)。

②i的初值为1,while循环条件i<101为真,会一直执行循环体,无法跳出循环体执行i+=1,故‘把这句话打印100遍’实际输出了无数遍。

③在程序2中,i的初值是100。

④i=100,while i(即while 100)一直为真,会一直执行循环体,无法跳出循环体执行i=i-2,故‘把这句话打印100遍’实际输出了无数遍。

⑤在程序2中,while i 的含义是
i!=0 或 i>0 或其他等价答案
28.错误1:兔子4只腿,最多只能是23只,而 range(1,23)只取到22,没取到23,故应改为: range(1,24)
错误2:缩进错误,y=35-x、if 4*x+2*y==94:是for语句中的语句块,应缩进。

print("兔子有%s只,鸡有%s只"%(x,y))是if语句中的语句块,应缩进。

【详解】
本题考查的是Python调试。

本题程序错误如下:
错误1:兔子4只腿,最多只能是23只,而 range(1,23)只取到22,没取到23,故应改为: range(1,24)
错误2:缩进错误,y=35-x、if 4*x+2*y==94:是for语句中的语句块,应缩进。

print("兔子有%s只,鸡有%s只"%(x,y))是if语句中的语句块,应缩进。

调试完最终输出:兔子有12只,鸡有23只。

29.b*b-4*a*c或b**2-4*a*c d>=0 -b-math.sqrt(d))/(2*a) print("方程无实数根")
【详解】
本题主要考查Python程序的调试。

①此处将表达式b2-4ac的值赋给变量d,故填b*b-
4*a*c或b**2-4*a*c。

②当b2-4ac≥0,方程有两个不同的实数根,故此处if判断条件是d>=0。

③当b2-4ac≥0时,方程的两个根分别为x1=(-b+math.sqrt(d))/(2*a),x2=(-b-math.sqrt(d))/(2*a),故此处填-b-math.sqrt(d))/(2*a)。

④else部分,即x<0时,输出“方程无。

相关文档
最新文档