一、程序填空
1.阅读程序。观察使用随机数求解百钱白鸡问题的代码并回答问题。
百千白鸡问题是经典的数学问题,原题为“鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,则翁、母、雏各几何?”翻译过来,意思是公鸡一个五块钱,母鸡一个三块钱,小鸡三个一块钱,现在要用一百块钱买一百只鸡,问公鸡、母鸡、小鸡各多少只? 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造成程序无法停止,我们可以在程序中添加一行 _________。 2.阅读程序。阅读求水仙花数的代码并回答问题。
“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=13+53+33,请计算并输出所有三位数的水仙花数。 for n in range(100,1000): i=n//100 j=n//100%10 k=n%10
if n==i*i*i+j*j*j+k*k*k: print(n)
(1)//的符号作用是 _____ 。 (2)%的符号作用是 _____ 。 (3)==的符号作用是 _____ 。
(4)在代码中,变量i表示的是三位数中的 ______ 位。 (5)在代码中,变量j 表示的是三位数中的 ______ 位。 (6)在代码中,变量k表示的是三位数中的 ______ 位。
(7)在range(100,1000)这个区域内,变量n无法取到的数值是________。 3.阅读程序。分析下列切片相关程序并回答问题。 list2=[5,6,7,8,9] print(list2[:]) print(list2[2:]) print(list2[:2]) print(list2[1:3]) print(list2[2:4])
(1)程序第一个print的输出结果是______________。 (2)程序第二个print的输出结果是______________。 (3)程序第三个print的输出结果是______________。 (4)程序第四个print的输出结果是______________。 (5)程序第五个print的输出结果是______________。 4.阅读程序。 for i in range(1,10): for j in range(1,i+1):
print(\"%d X %d=%2d\"%(j,i,j*i),end=\" \") print()
(1)在第一行程序中,变量i的数据范围为_____到____。 (2)在第二行的程序中,变量j的数据范围为_____到____。
(3)如果“%d”表示十进制数,那么%2d则表示____ 位宽的十进制数。
(4)第三行程序改为print(\"%d X %d=%2d\"%(i,j,i*j),end=\" \"),则本题的输出应该是_____。
(5)如果最后一行的print()表示换行,那么end=””的功能是_______ 。 5.编写程序,用*打印一个如下所示的等腰直角三角形,将测试结果截图。 * * * * * * * * * *
6.分析完善程序
已知包含25项的数列: 1,2/3,3/5,....,24/47,25/49。 问题1 :写出该数列的通项公式f(n)= _①
问题2 :以下是计算S=1+ 2/3+3/5+ ... + 24/47+ 25/49的程序,请补全代码: s=0
for i in range(1,26): s=s+ ② print(“s=”,s)
补充完成上述通项公式和程序: ①f(n)=_________ ②___________
7.(项目情境)在中国古代,出自数学家张丘建的《算经》中这样一个值得研究的问题:今有鸡翁一,直钱五;鸡母一,直钱三;鸡雏三,直钱一。凡百钱,买鸡百只。问鸡翁、母、雏各几何?这个问题就是著名的“百钱买百鸡问题”。即:现有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(\"公鸡:\母鸡:\小鸡:\
8.计算机解决问题的过程为“分析问题——设计算法(流程图)——编写程序——调试程序”,
请输入以下代码,自己输入数据运行,结果截图提交
9.程序设计:键盘输入任意的正整数,程序输出与其相应的二进制数。 代码如下:
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
10.程序设计:唐三藏又被妖怪抓走了,这次孙悟空还是没打得过妖怪,于是来求观音菩萨。观音菩萨告诉孙悟空,在天庭里身高正好为1000米的那位神仙可以降伏此妖。于是悟空立刻来到天上,在玉皇大帝的神仙册上看到了按身高从矮到高排列有10000个神仙。由
于时间紧迫,悟空想用最短的时间找到这位神仙,这样才可以尽快解救唐僧。 代码如下:
List=list(map(int,input(“请按身高递增顺序依次输入10000个神仙的身高”).split())) left=1 right=10000 while ① mid= ② if List[mid]==1000: ③
elif List[mid]<1000: ④ else: ⑤
print(“能帮孙悟空的神仙在第{0}位上”.format(mid+l)) (1)程序代码中①处正确的代码是(_______)。
A.left<right B.left<=right C.left!=right D.left>right (2)程序代码中②处正确的代码是(_______)。 A.(left+right)/2 B.(left+right)\\2 C.(left+right)//2 D.(left+right)\\\\2
(3)程序代码中③处正确的代码是(_______)。 A.pass B.print(mid)z C.break D.continue (4)程序代码中④处正确的代码是(_______)。-
A.left=mid B.right=mid C.left=mid+1 D.right=mid-1 (5)程序代码中⑤处正确的代码是(_______)。
A.left=mid B.right=mid C.left=mid+1 D.right=mid-1
11.广场上有许多(有数百人)小朋友在玩分组游戏,当他们分成三人一组时,发现最后多出两个;当他们分成五人一组时,发现最后多出三个;当他们分成七人一组时,发现最后多出两个。编写程序求出这些小朋友的可能人数。
实现上述功能的程序如下,请在程序划线处填入合适的代码。 ________ a=[ ]
for i in range(100,1000): if_____________: a.append(i) total + = 1
print(\"这群小朋友总的人数有:\")
for j in range(len(a)): print(____,end='、') print('')
print('可能情况数为:',total,'种')
划线处①处应该填入的语句为: ; 划线处②处应该填入的语句为: ; 划线处③处应该填入的语句为: 。 12.完善程序实现以下功能并保存。 输出数组的最大值。
arr1 =[12, 435, 76, 24, 78, , 866, 43] ________ = -32768 for i in range(0,7):
if arr1[i] > max1 : max1 = ________ print(\"最大值是:\", ________) input(\"运行完毕,请按回车键退出...\")
13.为保护环境,很多城市开始对垃圾实行分类,便于更好的进行处理,为了让大家了解垃圾的分类情况,建立了以下四类列表,list1(可回收垃圾)、list2(有害垃圾)、list3(易腐垃圾),剩下的为其他垃圾,目前,列表中已经存储了以下数据。 list1=[\"玻璃瓶\旧书\金属\纸板箱\旧衣服\易拉罐\"]
list2=[\"胶片\消毒水\纽扣电池\水银温度计\过期药水\泡沫塑料\"] list3=[\"动物内脏\菜叶菜梗\过期食品\香蕉皮\果壳\"] 根据现有列表,完成以下问题:
(1)写出从列表list3中取出“过期食品”的表达式:
___________________________________________________________________________ (2)写出从list1中截取[\"旧书\金属\纸板箱\"]这一段的表达式:
___________________________________________________________________________ (3)现又发现一个新的列表如下:list4=[\"过期化妆品\过期药品\杀虫剂\"],经 过判断,里面存放的为有害垃圾,如何将该列表中的元素添加到list2中,请写出相关的表达式: __________________________________________________________________________ (4)小明在路上捡到了一个塑料瓶,判断为可回收垃圾,写出相关表达式,将塑料瓶添加到列表list1中:
__________________________________________________________________________ 14.程序补充:
(1)有5万元资金存入银行,选择“1年定期.自动转存”的存款方式,由于银行利率是不断变化的,这5年利率分别是3.25%.3%.3%.2%.1.75%,5年后会有多少收益呢?调用round()函数,保留结果两位小数。
money =_______________________________ rate=_________________________________ for___________________________________ ____________________________________
print(“5年以后存款总额:”,money,“元”)
(2) 某投资者购买了10万元一年期收益率3.7%的银行保证收益型理财产品。每年理财赎回后,他会提取2万元用作生活所需,余下资金仍购买此种理财。在收益率不变的情况下,多少年后本金被全部取出?
money= ________________________________ year= __________________________________ while _________________________________ _________________________________ ________________________________ print(year,“年后资金被全部取出”)
15.辗转相除法,又称欧几里德算法,用于计算两个正整数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; ⑥结束。 (1)描述一是________描述法;描述二是流程图描述法;描述三是计算机程序语言描述法。
(2)在描述三中代码4到6行作用是__________。
(3)在描述三程序设计中,补充代码第8行划线处为__________。
16.学校气象小组使用自动测温仪在校园测量了1月12日的气温,并利用Python绘制了这天的气温图,该图如下所示:
(1)在以上Python程序中,变量Y的数据类型是_________。 (2)在以上Python程序中,第8行横线处的代码是_________。 (3)通过观察,气温釆样间隔时间是_________个小时。
17.(项目情境)递归就是自己调用自己,它是设计和描述算法的一种有力工具,常常用来解决比较复杂的问题。为求解规模为N的问题,设法将它分解成规模较小的问题,从小问题的解容易构造出大问题的解,并且这些规模问题较小的问题也能采用同样的分解方法,分解成规模更小的问题,并能从这些更小问题的解构造出规模较大问题的解。一般情
况下,规模N=1时,问题的解是已知的。已知:从1到n的连续自然数相乘的积、叫做阶乘、用符号n!表示。如5!=1×2×3×4×5,规定0!=1。我们用递归算法可以较容易求n的阶乘。求n的阶乘算法可以描述如下: n!=n*(n-1)! (n-1)!=(n-1)*(n-2)! (n-2)!=(n-2)*(n-3)! 2!=2*1! 1!=0! 0!=1
如果把n!写成函数形式,即f(n),f(n)=n*f(n-1)。如f(5)就是表示5!,求5!的过程可以写成如下形式:
f(5)=5*f(4) f(4)=4*f(3) f(3)=3*f(2) f(2)=2*f(1) f(1)=1
(问题求解)在python中用递归算法求1!+2!+……+n!(n的值为整数,从键盘输入)。请阅读如下程序,在空白处填写适当的表达式或语句,使程序完整。 def f(n): if n==0: return 1 else:
return _________ s=0
n=int(input(\"请输入n:\")) for i in_______: s=________ print(s)
18.模拟一个简单计算器,实现如下功能:输入两个整数和一个运算符(加、减、乘、除),进行算术运算,并输出运算结果。程序运行时,依次输入第一个数、运算符和第二个数,输出运算结果。当输入的运算符是加减乘除(+-*/)四种以外的符号时,则输出“运算符不正确”。当进行除法运算时,如果除数为“0”,提示输出“除数不能为0!”。Python程序实现如下,在划线处填入合适的代码。 a=int(input(\"请输入第一个数: \")) fh=input (\"请输入运算符: \") b=int(input(\"请输入第二个数: \")) flag=True s= ____ if fh in s: if fh==\"+\": c=a+b elif fh==\"-\": c=a-b elif fh==\"*\": c=a*b else: if ____
print(\"除数不能为0! \")
flag=False else: c=a/b if flag==True:
print(\"运算的结果为: \"+____) else:
print (\"运算符不正确\")
19.若两个素数之差为 2,则该对素数称为双胞胎数,如 3,5 就是一对双胞胎数。编写 python 程序,实现如下功能:输入 n 的值,统计显示 n 以内的所有双胞胎数。程序运行界面如图所示:
实现上述功能的程序如下,请在划线处填入合适的代码。 import math def isprime(x): ______
for i in range(2,int(math.sqrt(x))+1): if x % i = = 0 : f=False return f
n=int(input(\"请输入一个正整数 n:\")) c=0 k=3 while k < = n-2:
if isprime( k ) and______________ : c + = 1
print(\"第\"+ str( c ) +\"对双胞胎数:\和',k+2) _______
print(\"共有\"+str(c)+\"对双胞胎数\")
划线处①处应该填入的语句为: ; 划线处②处应该填入的语句为: ; 划线处③处应该填入的语句为: 。
20.某企业开展“运动打卡 动动有奖”活动:若员工在本月累计运动时间30小时以下,
奖励0元;达到30但不足45小时奖励300元;达到45但不足60小时奖励450元;60小时及以上奖励500元。小强用python编写程序实现相关功能:输入某员工本月累计运动时间(时),输出其能获得的奖励金额。
(1)实现上述功能的程序如下,请在划线处填入合适的代码。 t=int(input(“请输入您本月累计运动时间(时):”)) if t<0:
print(“输入错误”) else: if t<30: ①_ elif t<45: m=300 ②_____ m=450 else: m=500
print(“您的奖励是:”,m)
(2)当输入“-1”时,输出信息为_________(选填,填字母:A.输入错误 / B.您的奖励是:0 / C.您的奖励是:500)
21.奇偶校验码是一种增加二进制传输系统可靠性的简单且广泛采用的方法,该方法通过增加一个校验位使得传输的二进制码中“1”的个数恒为奇数或偶数,因此该校验码也分为“奇校验”和“偶校验”。“奇校验”的原理:在发送端发送的每个字节二进制码后增加一个校验位(0或1),使得“1”的个数为奇数;接收端接收并统计每个字节及其校验位中“1”的个数,若为偶数,则意味着传输过程中存在差错。例如: 接收到的每个字节及校验码 100101001 011010101 101011010 1的个数 4 5 5 传输正误 错误 正确 正确 根据以上原理,小强编写了一个Python程序,对接收到的9位二进制编码进行“奇校验”,判断其传输的正误,若判断正确则将前一个字节的编码转成十六进制并输出。 请回答下列问题:
(1)若接收到的二进制码为“101011011”,传输过程__________(选填:是/否)存在差错。
(2)实现上述功能的Python程序如下,请在划线处填入合适的代码。 s=input(\"请输入9位二进制编码:\")
code={10:\"A\ k=0;p=0;ans=“”
for i in s:#统计9位二进制编码中“1”的个数
k=k+int(i) if ____:
print(\"传输错误!\") else:
print(\"传输正确!\") for j in range(0,8,4): p=int(s[j:j+4],2)
# int(x,[base]):将x(字符串或者数字)按照base进制转换成整数 if 0<=p<=9: ans=ans+str(p) else: ans=___
print(\"字节编码用十六进制表示:\",___
22.某市普通高中选课数据如图1所示,学生从地理、化学、生物等科目中选择三门作为高考选考科目,“1”表示已选择的选考科目。使用 Python编程分析每所学校各科目选考的总人数、全市各科选考总人数及其占比,经过程序处理后,保存结果如图2
图1
图2
实现上述功能的 Python程序如下: import pandas as pd import itertools
#读数据到pandas的 DataFrame结构中
df=________ (”xk73.csv”,sep=‘.’,header=‘infer’,encoding=‘utf-8’) km=[‘物理’ ,‘化学’ ,‘生物’ ,‘政治’ ,‘历史’ ,‘地理’ ,‘技术’ ]
#按学校分组计数
sc=df.groupby(‘___________ ’ ,as_index=False).count() #对分组计数结果进行合计,合计结果转换为 DF结构并转置为行 df_sum=pd.DataFrame(data=sc.sum()).T df_sum[‘学校代码’]=‘合计’ #增加"合计"行 result=sc.append(df_sum) #百分比计算 df_percent=df_sum
df_percent[‘学校代码’]=‘比例’ for k in km:
per=df_percent.at[0,k]/zrs df_percent[k]=per #增加"百分比"行
result=result.append(df_percent) #删除"姓名"列 result=______________
#修改"学生编号"为"总人数"
result=result.rename(columns={‘学生编号’:‘总人数’}) #保存结果,创建 Excel文件.生成的 Excel文件 result.to_excel("学校人数统计.xlsx") (1)请在划线处填入合适的代码:
(2)加框处语句的作用是__________________
23.若两个素数之差为2,则该对素数称为双胞胎数,如3,5就是一对双胞胎数。编写python程序,实现如下功能:输入n的值,统计显示n以内的所有双胞胎数。程序运行界面如图所示:
实现上述功能的程序如下,请在划线处填入合适的代码。 def isprime(x): for i in range(2,x): if①__________: return False return True
n=int(input(“请输入一个正整数n:”)) c=0 k=3
while k<=n-2:
if isprime(k) and②___________: print(k,k+2) ③___________ k=k+1
print(“共有”+str(c)+“对双胞胎数”)
24.设计完成算法之后,小C打算用所学的Python程序设计语言完成程序的编写。 (1)Python程序设计语言属于程序设计语言中的_______________。 A.机器语言 B.汇编语言 C.高级语言 D.翻译程序
(2)小C将设计好的算法转为Python程序语言(如下)。其中“Tot2=8”是一个___________,“#初始化时长费为0”是一个__________,“S<=3.3”是一个___________,“float(input(“请输入时长”))”是一个__________。 A.函数 B.表达式 C.赋值语句 D.注释语句 1 Tot1=0 #初始化时长费为0 2 Tot2=0 #初始化里程费为0 3 S=float(input(“请输入里程数”)) 4 T=float(input(“请输入时长”)) #输入里程数和时长 5 if(T>9): #计算时长费用 6 Tot1=(T-9)*0.2 7 if(S<=3.3): #算里程费用 8 Tot2-8 9 else: 10 Tot2=8+(S-3.3)*1.35 11 Cost-Totl+tot2 12 print(Cost) #输出总车费 (3)小C写好代码之后,编译运行发现报错了,根据下图中所示的错误信息分析该程序报错的原因是:
____________________________________________________________________________________________。
NameError Traceback(most recent call last) _______________________________________________。 25.小强想要快速了解“十四五规划”内容的关键词,他先把“十四五规划”内容存储在ssw.txt文档中,如图a所示,统计文档中出现次数最多的前十个关键词,结果如图b所示。文本数据处理的算法设计如图c所示,用Python语言编写的程序段如图d所示。 请根据流程图的每个步骤,填写程序段编号,如A:⑦B:①D:③。现填写C、E、F、G对应的程序段编号.C:__________E:__________F:__________G:__________ 图a 图b 图c 图d 26.阅读程序。分析以下两段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 的含义是_________。 27.某仓库物品代码格式为“X-XXXXXXX-Y”,其中“X”和“Y”均为0到9之间的数字,“Y”为校验码。校验码由前面9个X计算得到,计算方法为:从左边开始,第1个数字乘以1加上第2个数字乘以2……依次类推,直到加上第9个数字乘以9,将该结果除以10,所得余数即为校验码。用Python设计一个程序,输入物品代码,判断输入的代码中校验码是否正确,如果正确输出“正确”,否则输出“错误\"。运行样例如下所示: 样例1: 输入:2-163-91475-4 输出:正确 样例2: 输入:2-163-91475-5 输出:错误 (1)Python程序实现如下,请在划线处填入正确的代码: s=input(\"输入物品代码: \") a=[] for i in range (0, 13): if ___ a. append(int (s[i])) #append( )函数用于在列表末尾添加新的对象 sum=0 for i in range(0, 9) : ____ sdm=sum%10 ___ if sdm==ydm : print(\"正确\") else: print(\"错误\") 28.蒙特卡洛方法不仅可以用来模拟投针实验,还可以用来模拟求解圆周率T。请根据所学知识,并上网搜索有关资料,找到利用蒙特卡洛方法求解圆周率Π的原理、方法和Python程序。 29.编写程序。如图所示的算法,请用Python程序写出实现该算法相应的代码。 30.有如下程序段: sum=0 for i in range(1,20,3) : sum+=i print(“sum=”,sum) (1)循环变量i的初值为:_________,终值为:_________,步长为:__________。 (2)该程序执行后,输出的结果为:____________________。 【参】***试卷处理标记,请不要删除 一、程序填空 1.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;可以跳出循环)。 2.整除 取余 判断是否相等 百 十 个 1000 【详解】 本题考查的是python语言及对程序实现的理解。(1)//的符号作用是取整除,返回商的整数部分(向下取整)。(2)%的符号作用是取模,返回除法的余数。(3)等于,比较符号两边对象是否相等。(4)(5)(6)i=n//100,j=n//10%10,k=n%10,分别利用取整和取余符号,算出三位数对应的每一位上的数字。(7)range()函数的区间是左闭右开,所以第二个参数1000是取不到的。 3.[5,6,7,8,9] [7,8,9] [5,6] [6,7] [7,8] 【详解】 本题主要考查Python列表截取。Python列表的正向索引下标是从零开始,不是1;当只有冒号,表示全部元素;只有头下标i和冒号(代表的是从该头下标i的元素开始截取,一直到最后);只有冒号尾下标i(代表的是从开始一直截取到i-1的元素);头下标i,冒号和尾下标j都有(代表的是从i一直截取到j-1的元素),因此①[5,6,7,8,9]②[7,8,9]③[5,6]④[6,7]⑤[7,8]。 【点睛】 4.9 1 i 2 末尾不换行,添加 空格 【详解】 本题主要考查Python程序的执行与调试。(1)在第一行程序中(for i in range(1,10):),变量i的数据范围为1到9。(2)同理,在第二行的程序中(for j in range(1,i+1):),变量j的数据范围为1到i。(3)如果“%d”表示十进制数,那么%nd则表示n位宽的十进制数,%2d则表示2位宽的十进制数。(4)第三行程序改为print(\"%d X %d=%2d\"%(i,j,i*j),end=\" \"),则本题的输出应该是 ,i与j的位置进行了交 换,如1X2=2变为2X1=2。(5)如果最后一行的print()表示换行,那么end=””的功能是末尾不换行,添加空格。 5.layer = int(input(\"请输入需要打印的层数:\")) for x in range(1,layer+1): for y in range (1,x+1): print(\"*\ print(\"\") 【详解】 本题主要考查Python循环结构。Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串。range可以生成一个整数列表,列表范围根据接收的layer来确定。外层循环用于确定输出行数,内层循环用于控制每行符号个数。 【点睛】 6.n/(2*n-1)或n/(n*2-1) i/(2*i-1) 或 i/(i*2-1) 【详解】 本题主要考查Python程序的执行与调试。①分析数列可知,分子第n项是n,分母第n项是2*n-1,故该数列的通项公式f(n)=n/(2*n-1)或n/(n*2-1)。②此处是对前n项进行求和,变量是i,使用语句s=s+i/(2*i-1) 或s=s+ i/(i*2-1),故此处填i/(2*i-1) 或 i/(i*2-1)。 7.range(1,33) g+m+x==100 5*g+3*m+x/3 【详解】 本题考查的是算法中的经典问题。百鸡百钱问题是典型的枚举算法解决,枚举算法的关键就是找到问题解决的条件和枚举范围。 8. 【详解】 本题主要考查Python程序的执行与调试。运行结果如下: 9.A C 【详解】 本题主要考查Python程序设计。①此处将n取余2,用append函数将值追加到列表result中,故此处填n%2,选A选项。②当n大于0时,n整除2继续循环,循环结束使用reverse函数,将result列表中的元素逆转,故此处填n//2,选C选项。 10.B C C C D 【详解】 本题主要考查二分查找算法及Python程序实现。①二分查找的循环条件是left<=right,故选B选项。②此处是取中间值,需要整除2,故填(left+right)//2 ,故选C选项。③如果mid对应的列表值是1000,表示已找到,则用break跳出循环,选C选项。④如果mid对应的列表值小于1000,则需要更新left的值为mid+1继续循环,选C选项。⑤否则更新right的值为mid-1,选D选项。 11.total=0 i%3 == 2 and i%5 == 3 and i%7 == 2 a[j] 【详解】 本题主要考查Python程序的执行与调试。①变量total用来统计有多少种情况,初始值为0,第一空填total=0。②当他们分成三人一组时,发现最后多出两个;当他们分成五人一组时,发现最后多出三个;当他们分成七人一组时,发现最后多出两个,即if判断条件为i%3 == 2 and i%5 == 3 and i%7 == 2,满足if条件时,将该值加到列表a中,故第二空填i%3 == 2 and i%5 == 3 and i%7 == 2。③最后通过for循环输出所有可能的数,用变量j控制,故第三空填a[j]。 12.max1 arr1[i] max1 【详解】 本题主要考查Python程序执行与调试。变量max1用来保存数组的最大值,初始值赋值为最小值-32768,第一空填max1,通过for循环依次比较当数组元素大于max1时,更新max1的值为该元素继续循环直到与所有元素比较完,第二空填arr1[i],最后输出最大值是max1,故第三空填max1。 13.list3[2] list1[1:4] list2=list2+list4 或 list2.extend(list4) list1=list1+[“塑料瓶”] 或者 list1.append(“塑料瓶”) 【详解】 本题主要考查Python列表数据类型。①“过期食品”在列表list3索引2,故从列表list3中取出“过期食品”的表达式:list3[2]。②\"旧书\金属\纸板箱\"在列表list1索引1~3,从list1中截取[\"旧书\金属\纸板箱\"]这一段的表达式:list1[1:4](不包括4)。③将该列表中的元素添加到list2中,表达式是list2=list2+list4 或 list2.extend(list4)。(extend() 函数用于在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表))。④将塑料瓶添加到列表list1中:list1=list1+[“塑料瓶”] 或者 list1.append(“塑料瓶”)(append字符追加函数)。 14.[0.0325,0.03,0.03,0.02,0.0175] i in rate:(没有冒号算错误) money=round(money*(1+i),2) 100000 0 money>0 或 money>=0 money=round(money*1.037-20000,2) year=year+1 【详解】 本题主要考查Python程序语句。①此处是变量money的初始化,有5万元资金存入银行,故填50000。②5年利率分别是3.25%、3%、3%、2%、1.75%,用rate数组保存,故填[0.0325,0.03,0.03,0.02,0.0175]。③通过for循环,从rate数组中取值,故填i in rate:(没有冒号算错误)。④调用round()函数,保留结果两位小数,故填 money=round(money*(1+i),2)。⑤购买了10万元一年期收益率3.7%的银行保证收益型理财产品,故money的初始值为100000,故填100000。⑥year的初始值也为0,故填0。⑦循环条件是money大于0或大于等于0,故填money>0 或 money>=0。⑧收益率3.7%,每年理财赎回后,会提取2万元用作生活所需,余下资金仍购买此种理财,使用round函数保留2位小数,故填money=round(money*1.037-20000,2)。⑨循环变量是year,此处year递增进入下一轮循环,故填year=year+1。 15.自然语言 确保m>=n r!=0 【详解】 本题主要考查算法及Python程序实现。①描述一是自然语言描述法;描述二是流程图描述法;描述三是计算机程序语言描述法。②在描述三中代码4到6行,当m 本题主要考查Python程序调试与执行。①由代码Y=[6,4,4,3,3,6,9,12,12,11,9,7],可知变量Y的数据类型是list(列表类型)。②scatter是绘制散点图函数,图中还需要使用绘图函数plot,故第8行横线处的代码是plt.plot(X,Y)。③通过观察,气温釆样间隔时间是2个小时。 17.n*f(n-1) range(1,n+1) s+f(i) 【详解】 本题主要考查Python程序的执行与调试。①此处是定义递归函数f(n),由题干,当n=0时,返回1,否则返回n*f(n-1),故此处填n*f(n-1)。②用递归算法求1!+2!+……+n!,故变量i的范围应是1—n,for i in range(1,n+1)表示i的范围是[1,n],故此处填 range(1,n+1)。③循环体实现累加,将每一项阶乘f(i)加到s中,故此处填s+f(i)。 18.\"+-*/\" b==0 str(c) 【详解】 本题主要考查Python程序执行与调试。①变量fh用来接收运算符,由代码“if fh in s”可知,变量s保存加减乘除(+-*/)四种运算符,故此处填\"+-*/\"。②变量b保存第二个数,当进行除法运算时,如果除数为“0”,提示输出“除数不能为0!”,此处是处理b=0的情况,故填b==0。③变量c保存运算结果,此处输出 c的结果,故填str(c)。 19.f = True isprime(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。 20.m=0 elift<60: A 【详解】 本题主要考查Python程序的执行与调试。①若员工在本月累计运动时间30小时以下,奖励0元,即m=0。②达到45但不足60小时奖励450元,故填elift<60:。③-1<0,不是有效值,故输出信息为“输入错误”,故本题选A选项。 21.是 k%2==0或(k+1)%2==1或(k-1)%2==1 ans+code[p] ans 【详解】 本题主要考查Python程序的执行与调试。①若接收到的二进制码为“101011011”,1的个数有6个,则传输过程存在差错。②变量k统计1的个数,若k是偶数则表明传输错误,否则传输正确,故此处填k%2==0或(k+1)%2==1或(k-1)%2==1。③如果p是1~9之间的数字,则直接将p拼接到ans中,否则从字典code中取对应的字母,故此处填ans+code[p]。④变量ans保存转换后的十六进制,故此处填ans。 22.pd.read_ csv 学校代码 result.drop (‘姓名’ ,axis=1) 将总人数存储到变量zrs中 【详解】 本题主要考查Python程序的执行与调试。①将csv文件读入并转化为数据框形式,故填pd.read_ csv。②groupby函数主要的作用是进行数据的分组,此处按学校分组计数,故填学校代码。③此处删除"姓名"列,可以使用drop()函数来删除,故填result.drop (‘姓名’ ,axis=1)。④zrs=len(df.index),该语句是统计df内有多少个元素,即将总人数存储到变量zrs中。 23.x%i==0或x//i==x/i或其他等价表达式 isprime(k+2)或isprime(k+2)==True c=c+1或c+=1 【详解】 本题主要考查Python程序的执行与调试。①isprime(x)函数判断x是不是素数,此处通过for循环判断(用x依次除i,看能不能整除,i的范围时从2~x),故填x%i==0或 x//i==x/i。②此处判断相差2的两个数是不是素数,若是,则输出这两个数,故此处填isprime(k+2)或isprime(k+2)==True。③c用来统计双胞胎数的对数,若满足是双胞胎数的条件,故此处填c=c+1或c+=1。 24.C.高级语言 C.赋值语句 D.注释语句 B.表达式 A.函数 Python程序设计语言规定,在标识符中,字母大小写是有区别的。该程序代码中表示里程费的Tot2错误将字母“T”写成了小写”“t”。 合理的顺序是:③分析问题①设计算法②编写程序④调试运行程序 略 【详解】 本题主要考查Python程序的编写。①Python程序设计语言属于程序设计语言中的高级语言,选C选项。②“Tot2=8”是一个赋值语句,选C选项。③“#初始化时长费为0”是一个注释语句,选D选项。④“S<=3.3”是一个表达式,选B选项。⑤“float(input(“请输入时长”))”是一个函数,float() 函数用于将整数和字符串转换成浮点数,选A选项。⑥编译运行发现报错了,根据下图中所示的错误信息分析该程序报错的原因是:Python程序设计语言规定,在标识符中,字母大小写是有区别的。该程序代码中表示里程费的Tot2错误将字母“T”写成了小写”“t”。⑦小C借助于计算机编写程序解决问题的这个过程,合理的顺序是:③分析问题①设计算法②编写程序④调试运行程序。⑧略 25.② ⑤ ⑥ ④ 【详解】 本题主要考查算法及Python程序实现。①jieba 模块是一个用于中文分词的模块,lcut 方法直接返回 list,流程图中分词后存入words中对应的代码是words=jieba.lcut(txt),故填②。②流程图中循环结构对应的是程序中的⑤。③对counts的值进行排序,可以使用sort方法实现,对应程序中的⑥。④使用循环结构将值一一输出,对应程序中的④。 26.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 或其他等价答案 27.\"0\"<=s[i]<=\"9\" 或s[i] in \"01234567” sum=sum+a[i]*(i+1) ydm=a[9] 【详解】 本题主要考查Python程序执行与调试。①变量s保存商品仓库物品代码,若s[i]是数字则进入循环判断,否则跳过,故此处判断条件是\"0\"<=s[i]<=\"9\" 或s[i] in \"01234567”。②校验码由前面9个X计算得到,计算方法为:从左边开始,第1个数字乘以1加上第2个数字乘以2……依次类推,直到加上第9个数字乘以9,用变量sum统计,故此处填sum=sum+a[i]*(i+1)。③变量sdm是计算得到的校验码,变量ydm是输入的校验码,此处需要将校验码a[9]赋给变量ydm,故填ydm=a[9]。 28.原理:通常蒙特•卡罗方法通过构造符合一定规则的随机数来解决数学上的各种问题。 对于那些由于计算过于复杂而难以得到解析解或者根本没有解析解的问题,蒙特•卡罗方法是一种有效的求出数值解的方法。一般蒙特•卡罗方法在数学中最常见的应用就是蒙特•卡罗积分。方法:蒙特卡罗方法的解题过程可以归结为三个主要步骤:构造或描述概率过程;实现从已知概率分布抽样;建立各种估计量。利用蒙特卡洛方法实现求解圆周率 #!/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) 29.a=float(input(\"请输入一个数\")) b=float(input(\"请输入一个数\")) c=float(input(\"请输入一个数\")) if c>a and c>b: print(\"最大数为:\ elif b>a: print(\"最大数数\ else: print(\"最大小数为\ 【详解】 本题主要考查算法描述及Python程序设计。分析算法流程图,首先输入a、b、c三个数,进行两两比较,输出最大数,故Python程序设计如下: a=float(input(\"请输入一个数\")) b=float(input(\"请输入一个数\")) c=float(input(\"请输入一个数\")) if c>a and c>b: print(\"最大数为:\ elif b>a: print(\"最大数数\ else: print(\"最大小数为\ 30.初值为1 终值为:20 步长为:3 sum=70 【详解】 本题主要考查Python循环结构。由代码for i in range(1,20,3) ,可知循环变量i的初值为1,终值为20,步长为3。该程序执行后,输出的结果为sum=sum+i=0+1+4+7+10+13+16+19=70。 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuo0.com 版权所有 湘ICP备2023021991号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务