内容正文:
专题05 Python程序实现
目 录
第一部分 明晰学考要求·精准复习
第二部分 基础知识梳理·全面提升
第三部分 考点精讲精练·对点突破
考点01 表达式转换
考点02 关系表达式计算
考点03 逻辑表达式计算
考点04 算法实现
考点05 问题解决
第四部分 实战能力训练·满分必刷
专题
考试内容要求
对应学业质量水平
Python程序实现
1.掌握表达式转换
2.掌握关系表达式值的计算
3.掌握算术表达式的计算
4.算法实现案例
5.问题解决案例
1.掌握一种程序设计语言的基本知识,使用程序设计语言实现简单算法。
2.通过解决实际问题,体验程序设计的基本流程,感受算法的效率,掌握程序调试与运行的方法。
一、表达式转换
Python语言中的表达式转换通常涉及以下几个方面:
1. 逻辑表达式转换:用逻辑运算符与( ), 或( ),非( )将复杂逻辑转换为简洁的表达式。
2. 算术表达式转换:用算术运算符+,-,*,/,整除( ),模( )对数学公式进行计算和转换。
3. 类型转换:通过类型函数int(), float(), str()等在不同数据类型间转换。
4. 函数调用转换:将复杂的逻辑封装在 中,通过函数 来复用代码和简化表达。
【注意】数学公式转换时乘号用*表示,不可省略。
二、关系表达式值
在Python中,关系表达式用于比较两个值,并返回一个布尔值( 或 )。例如:
x = 20
y = 10
is_greater = x > y # 结果是True,因为20大于10
print(is_greater)
(1)在Python中,关系运算符的优先级是相同的,它们的优先级低于算术运算符。关系运算符包括:等于(==)、不等于(!=)、<、<=、>、>=。当多个关系运算符出现在表达式中,按从左到右的顺序进行。
(2)在Python中,逻辑运算符的优先级是逻辑非运算符 的优先级最高。 运算符的优先级高于 运算符。
(3)如果要确保某部分优先计算,在某部分的前后加上 。
【归纳】
关系运算符用于比较两个操作数的值,并返回一个布尔值(True或False)。
逻辑运算符用于结合多个布尔表达式,并返回一个布尔值。
逻辑与运算符(and)要求所有操作数均为True,结果才为True。例如,True and False 返回False。
逻辑或运算符(or)要求至少一个操作数为True,结果就为True。例如,True or False 返回True。
逻辑非运算符(not)用于反转操作数的布尔值。例如,not True将返回False,而not False返回True。
三、算术表达式计算
(1)**
“**”是幂运算,用于计算 ,例如,2**3的结果是 。
【注意】 表示对数据a进行开根号计算。
(2)%和//
在编程中,%被称为取余运算符,用于获取两个数相除的余数,常用于判断一个数是否能被另一个数 。//通常表示整数除法,返回两个数相除后的 结果。例如,8 % 3的结果是2,表示8除以3的余数是2;8 // 3的结果是2,表示8除以3得到的整数商是2。
在取数位上的数值时,可以通过连续除以10并取余的方式得到每一位数字,例如,对于数字123,123%10的结果是3(个位),123//10的结果是12,12%10的结果是2(十位),12//10的结果是1,1%10的结果是1(百位)。
【注意】开根号开可以使用math模块, 也可以进行开根号计算。
四、算法实现案例
(1) :是通过建立数学模型,运用数学原理和逻辑推理来找到问题的解。
(2) :思路是通过遍历所有可能的情况来找到问题的解。
(3) :从某个初始近似值出发,通过迭代公式逐步逼近问题的精确解。
(4) :思路是将问题分解为更小的子问题,直到达到基本情况,然后逐步返回解决整个问题。
(5) :思路是将问题的搜索范围不断缩小,直到找到解为止。
(6)经典算法
1.两数交换:在Python中,a,b= 即可实现两数互换。
2.斐波那契数列:对于任意的n大于1,数列中的第n项可以表示为 ,即 F(0) = 0, F(1) = 1, F(n) = + 。
3.辗转相除法:
①用较大数除以较小数,得到商和余数。
②将较小数替换为大数,余数替换为小数,重复步骤1。
③当余数为0时,较小数即为最大公约数。
【归纳】在Python中实现算法通常遵循以下步骤:
1. 首先需要明确算法要解决的问题是什么,理解问题的输入和预期输出。
2. 将解决问题的步骤用 或 描述出来,以便更清晰地理解算法的逻辑结构。
3. 根据分析和流程图,使用Python语言编写代码实现算法。
4. 编写代码后,需要进行 ,确保程序能够正确执行并得到预期的结果。
在编写程序时,还需要注意Python的数据类型和变量命名规则,确保代码的正确性和可读性。
五、问题解决案例
根据近几年出题和练习的情况,大致分为以下四个方面。
(1)存钱案例
(2)百钱百鸡、水仙花
(3)数学问题
(4)生活问题
【注意】
①分析问题中的 ,转化为Python能识别的语句。
②在关键处理部分,如关系运算、逻辑运算、算术运算中注意Python程序的书写要求。
③一定要运行调试,从结果验证生成情况是否符合实际。
练
考点01 表达式转换
【典型例题1】
(2024-全国)数学式子a÷2b-c,对应的Python表达式是( )
A.a/b2-c B.a/(2*b-c) C.a/(2*b)-c D.a/2*b-c
【典型例题2】
(2022-河南)数学代数式对应的python表达式是( )
A.2/2X-y B.2/2(X+y) C.2/(2*X+y) D.2/(2X)+y
· 对点专攻
1.下列与数学表达式对应的python表达式,正确的是( )。
A.(-b + math.sqrt(b * b – 4 * a * c))/a * a
B.-b + math.sqrt (b * b – 4 * a * c)/2*a
C.(-b + math.sqrt(b * 2 – 4 * a * c))/(2 * a)
D.(-b + math.sqrt( b * b – 4 * a * c))/(2 * a)
2.将数学表达式3x/5y,用Python表达式可表示为( )
A. x3/y5 B. 3*x/5*y C. 3*x/(5*y) D. 3*x//(5*y)
考点02 关系表达式计算
【典型例题1】
(2024-全国)与关系表达式x==0等价的表达式是( )
A.x=0 B.not x C.x D.x!=1
【典型例题2】
(2023-江苏)下列关系表达式中运算结果成立的是( )
A."hello"=="Hello" B.'compare'>='computer' C.2!=8 D.3.14<=2.718
· 对点专攻
1.用 Python 语言表示数学表达式|X|>=5 正确的是( )
A. X>=5 B. X<=-5 C. X>=5 or X<=-5 D. X>=5 and X<=-5
2.若x是一个整型变量,则判断它是否为5的倍数的Python关系表达式是( )
A. x % 5 == 0 B. x / 5 == 0 C. x \ 5 = =0 D. int(x / 5) == 0
考点03 逻辑表达式计算
【典型例题1】
(2024-浙江)下列逻辑表达式中,值为True的是( )
A.int(-5.6)==len("Python") B."Python"[5:6] =="on" C.6+int("-3") <= len("-3") D.1750//100%10 ==7
【典型例题2】
(2023-贵州)在Python语言中,下列逻辑表达式值为True的是( )
A.not(4==4) B.3>4 or 3>2 C.3>4 or 3<2 D.3<4 and 3<2
【典型例题3】
(2023-江苏)某校要筛选出身高(t)165厘米~185厘米之间,并且体重(w)在52公斤及以上的学员,下列Python逻辑表达式正确的是( )
A.165<=t<=185 or w>=52 B.165<=t<=185 and w>=52
C.t<=165 or t>=185 or w>=52 D.t<=165 or t>=185 and w<=52
· 对点专攻
1.查询所有身高T超过1.75米且体重W不大于55公斤学生的信息,表示该条件的逻辑表达式为( )
A. T>=1.75 and W<=55 B. T<=1.75 or W>=55
C. T>1.75 and W<=55 D. T>1.75 or W<55
2.查找工资在600元以上并且职称为“工程师”的记录,其逻辑表达式为( )
A. '工资'>600 OR 职称='工程师' B. 工资>600 AND 职称= 工程师
C. '工资'>600 AND '职称'='工程师' D. 工资>600 AND 职称='工程师'
考点04 算法实现
【典型例题1】
(2023-贵州)解析算法是通过找出解决问题的前提条件与结果之间的关系表达式,并计算表达式来实现问题的求解,下列更适合使用解析算法实现的是( )
A. 找出1000以内的所有质数 B. 输入长方形的长和宽,计算长方形的周长
C. 统计全班同学的身高 D. 将输入的三个数从小到大进行排序
【典型例题2】
(2023-昆明)百钱买百鸡问题是记载于中国古代5—6世纪成书的《张邱建算经》中的一道不定方程组问题,其重要之处在于开创“一问多答”的先例,这是过去中国古算书中所没有的。其问题是这样的:今有鸡翁一,值钱伍;鸡母一,值钱三;鸡雏三,值钱一、凡百钱买鸡百只,问鸡翁、母、雏各几何?
用代码描述解决不定方程组的正整数解的算法如下:
(1)该算法采用的是___________(选填“穷举法”、“解析法”、“枚举法”、“分治法”)。
(2)该算法中,条件i*5+j*3+k/3==100 and i+j+k==100共被判断了多少次 ?(可以直接填计算结果也可以填计算式子)。
· 对点专攻
1.解析算法是通过找出解决问题的前提条件与结果之间关系的表达式,并计算表达式来实现问题的求解。下列问题中适合使用解析算法解决的是( )
A.找出校模考中所有满分同学的试卷 B.将同学按身高从高到低顺序进行排列
C.从体检数据中查找视力异常同学记录 D.已知三角形的底和高,输出该三角形面积
2.“枚举算法”又称为“穷举法”,其基本思想是:一一列举出所有可能的解,并验证每个可能的解是否是真正的解,若是,就采纳,否则,就抛弃。
小明利用枚举算法解决“百元买百鸡”问题。用100元钱买100只鸡,公鸡,母鸡,小鸡都要有。公鸡5元1只,母鸡3元1只,小鸡1元3只。请问公鸡,母鸡,小鸡各应该买多少只?
假设公鸡有X只,母鸡有Y只,小鸡有Z只。
以下Python程序段实现了“百元买百鸡”的功能,请补全①②③处代码。
c = 0
for x in ①:
for y in range(1,33):
z=100-x-y
if ②:
print("公鸡:",x,"母鸡:",y,"小鸡:",z)
③
print("共有买法",c,"种")
考点05 问题解决
【典型例题1】
(2024-江苏)如果将5万元存入银行,选择一年定期自动转存的存款方式,假设5年内利率没有发生变化,均为1.25%,问:5年后到期存款总额为多少?请在序号处填写正确的代码,且在不改变原程序结构的情况下删除序号,调试完成后保存文件。
rate=0.0125 #给利率变量赋值
money=50000 #给存款总额变量赋初值(单位:元)
for year in range(1,①):
money=②*(l+rate)#计算每年新的存款总额
print("五年后的存款总额为:",③,"元")输出结果
(2023-云南)“水仙花数”是指一个三位自然数,其各位数字的立方和等于该数本身,即一个三位数abc,若满足a3+b3+c3=abc,则这个三位数是水仙花数。小周同学准备编写一个Python程序找出所有水仙花数。
(1)他利用程序逐个列举所有的三位自然数,并依次验证上述条件a3+b3+d3=abc是否满足,这种算法叫______算法。
(2)当程序运行结束后,第5行的if程序一共执行了______次。
(3)程序第5行下划线处应填入______。
· 对点专攻
1.小明想用压岁钱环游中国,妈妈告诉他大约需要60000元,但现在小明只有50000元。他请妈妈帮忙存在银行里,银行年利息1.25%,小明几年能存够?
rate=0.0125
money=50000
year=0
while ①_______:
money=②_______ (1+rate)
③_______
print("存款数为6万元至少需要",year,"年")
2.水仙花数是指一个3位数,它的每个位上的数字的3次幂之和等于它本身(例如:13+53+ 33=153)。通过Python编程可以得到所有的3位水仙花数并打印出来。
(1)实现上述功能的部分程序代码如下,请在划线处填入合适的代码。
for i in range(_____):
a=i// 100 #取出百位数字
b=______ #取出十位数字
c=i%10 #取出个位数字
if
print("水仙花数是:”, i)
(2)加框处的代码有误,以下可以代替此代码的正确代码有( )
A. a**3+b**3+c**3==i: B. not i!=a**3+b**3+c**3:
C. a**3+b**3+c**3!=I D. i==a**3+b**3+c**3 E.(a+b+c)**3==i:
1、用于求变量s值的算法如下:
①变量s的初值是0,变量n的初值是1;
②若变量n的值大于100,则转到步骤⑤;
③s←—s+(-1)的n-1次方×n;
④n的值增加1,转到步骤②;
⑤输出s的值;
⑥结束。
下列数学表达式中,其计算结果与上述算法执行后变量s的值相等的是( )
A. 1+2+3+·+100 B. -1-2-3-…-100 C. 1-2+3-4+…-100 D. -1+2-3+4+…+100
2、下列选项中,关系表达式的结果为真的是( )
A. int(-1.8) == -abs(2) B. math.cos(0) == math.sin(90)
C. math.sin(0) == random.randint(1,1) - 1 D. int(1.8) == math.sqrt(4)
3、关系表达式是用________连接起来的式子。( )
A. 算术运算符 B. 关系运算符 C. 逻辑运算符 D. 成员运算符
4、某员工工资表中包含工号、姓名、工资、职称等字段,查找工资在3000元以上并且职称为“工程师”的记录,其逻辑表达式为( )
A. "工资">3000 OR 职称="工程师" B. 工资>3000 AND 职称="工程师"
C. "工资">3000 AND "职称"="工程师" D. 工资>3000 AND 职称=工程师
5、下列Python逻辑表达式中,值为True的是( )
A. 3/2!=1 B. 'D'<'A' C. 5%3!=2 D. 'G'=='g'
6、解析法在算法实现中通常用于解决哪类问题( )
A. 数值计算问题 B. 排序问题 C. 搜索问题 D. 图像处理问题
7、斐波那契数列也叫兔子繁殖数列,小明编写了下列代码求第74个月能繁殖多少对兔子,他使用的算法是( )
A.解析法 B.迭代法 C.枚举法 D.二分法
8、递归是计算科学领域中一种重要的计算思维模式。面对一个大规模复杂问题的求解,递归的基本思想是把规模较大的问题层层转化为规模较小的同类问题求解。对递归而言,递推与回归,二者缺一不可。请用递归法解决下面问题:有5个人坐在一起,问第5人多少岁?他说比第4个人大两岁;问第4人的岁数?他说比第3个人大两岁;问第3个人,又说比第2个人大两岁;问第2个人,他说比第1人大两岁。最后问第1个人,他说10岁。根据题意得出递推关系式:
请问第五个人多大?请在序号处填写正确的代码。
def age(n):
#递归求年龄
if n==1:
return ①
else:
return ②
#主程序
print(“第5个人的年龄是:”,③,“岁。”)
9、输入一个产品的价格(假设价格在百元以内),使用二分法快速猜到这个价格,并输出猜了几次的程序代码如下:
x=int(input("请输入要猜的价格:"))
step=0
f1=1
f2=100
while (f1<=f2):
mid=①
step=step+1
if mid>x:
f2=mid
elif mid<x:
f1=②
else:
break
print("猜的次数为",step)
(1)补充画横线的代码:____,____。
(2)当输入价格为13时,输出结果为____。
10、以下程序代码采用的算法是( )。
def gcd(m,n):
while m%n != 0:
m,n=n,m%n
return n
a=int(input("请输入a的值:"))
b=int(input("请输入b的值:"))
print(gcd(a,b))
A.枚举法 B.二分法 C.递归法 D.迭代法
11、假设银行的定期存款年利率是r,小明将1000元存入银行,根据输入的利率,计算从多少年以后小明在银行的存款超过2000元。请在序号处填写正确的代码,且不改变原程序的结构,并把序号删除,调试完成后保存文件。
r = float(input("请输入银行定期存款年利率:")) # r为利率,可以输入0.01~0.05之间的小数
money = 1000
y = 0
while money ① 2000:
y = y+1
money = money*(②)
print(③, "年后小明在银行的存款超过2000元。")
12、信息技术学科期末考试结束后,老师将学生的成绩转换成对应的等第。成绩对应的等第为:
s=float(①("请输入分数:"))
if ②:
print("优秀")
elif s>=75:
print("良好")
elif ③:
print("合格")
elif s>0:
print("不及格")
elif s==0:
print("缺考")
13、由计算机随机生成一个100以内的正整数,用户有5次猜数机会,如果猜中则提示"猜中了"并退出程序,否则经比较给出相应的提示,然后继续猜数。如果5次均未猜中,输出提示信息后结束游戏。
import ① #导入随机模块
number=random.randint(1,100)
for i in range(1,6):
guess=int(input("请在1至100中输入一个数:"))
if guess<number:
print("你输入的数字太小了,你还有",②,"次机会")
③ guess>number:
print("你输入的数字太大了,你还有",5-i,"次机会")
④:
print("你猜对了!")
break
if guess!=number:
print("这个数是:",number)
print("5次没有猜中,很遗憾,游戏结束")
14、已知实数x、y关系如下:
输入实数x,计算y的值。
x = float(input("输入实数x= "))
if x ① 0 :
y = x - 5
② x<1 :
y = x + 5
else:
y= ③ + 8
④(y)
15、使用沃利斯公式计算圆周率:
s=①
x=0
y=②
item=1
while ③<=1000000:
if item%2==1:
x+=2
else:
④
s=s*x/y
item+=1
print(2*s)
16、小球由5米高度自由落体运动,不考虑空气阻力,每次落地后反弹回原高度的一半,重复这个过程,理论上永远不会停止。求它在第10次落地时,共经过多少米?
程序代码如下:
h=5
s=5
for i in range(2,①):
#第1次已经计算在内,从第2次开始计算
s=②
h=③
print(s)
原创精品资源学科网独家享有版权,侵权必究!2
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$$
专题05 Python程序实现
目 录
第一部分 明晰学考要求·精准复习
第二部分 基础知识梳理·全面提升
第三部分 考点精讲精练·对点突破
考点01 表达式转换
考点02 关系表达式计算
考点03 逻辑表达式计算
考点04 算法实现
考点05 问题解决
第四部分 实战能力训练·满分必刷
专题
考试内容要求
对应学业质量水平
Python程序实现
1.掌握表达式转换
2.掌握关系表达式值的计算
3.掌握算术表达式的计算
4.算法实现案例
5.问题解决案例
1.掌握一种程序设计语言的基本知识,使用程序设计语言实现简单算法。
2.通过解决实际问题,体验程序设计的基本流程,感受算法的效率,掌握程序调试与运行的方法。
一、表达式转换
Python语言中的表达式转换通常涉及以下几个方面:
1. 逻辑表达式转换:用逻辑运算符与(and), 或(or),非(not)将复杂逻辑转换为简洁的表达式。
2. 算术表达式转换:用算术运算符+,-,*,/,整除(//),模(%)对数学公式进行计算和转换。
3. 类型转换:通过类型函数int(), float(), str()等在不同数据类型间转换。
4. 函数调用转换:将复杂的逻辑封装在函数中,通过函数调用来复用代码和简化表达。
【注意】数学公式转换时乘号用*表示,不可省略。
二、关系表达式值
在Python中,关系表达式用于比较两个值,并返回一个布尔值(True或False)。例如:
x = 20
y = 10
is_greater = x > y # 结果是True,因为20大于10
print(is_greater)
(1)在Python中,关系运算符的优先级是相同的,它们的优先级低于算术运算符。关系运算符包括:等于(==)、不等于(!=)、<、<=、>、>=。当多个关系运算符出现在表达式中,按从左到右的顺序进行。
(2)在Python中,逻辑运算符的优先级是逻辑非运算符not的优先级最高。and运算符的优先级高于or运算符。
(3)如果要确保某部分优先计算,在某部分的前后加上括号。
【归纳】
关系运算符用于比较两个操作数的值,并返回一个布尔值(True或False)。
逻辑运算符用于结合多个布尔表达式,并返回一个布尔值。
逻辑与运算符(and)要求所有操作数均为True,结果才为True。例如,True and False 返回False。
逻辑或运算符(or)要求至少一个操作数为True,结果就为True。例如,True or False 返回True。
逻辑非运算符(not)用于反转操作数的布尔值。例如,not True将返回False,而not False返回True。
三、算术表达式计算
(1)**
“**”是幂运算,用于计算幂次方,例如,2**3的结果是8。
【注意】a**0.5表示对数据a进行开根号计算。
(2)%和//
在编程中,%被称为取余运算符,用于获取两个数相除的余数,常用于判断一个数是否能被另一个数整除。//通常表示整数除法,返回两个数相除后的整数结果。例如,8 % 3的结果是2,表示8除以3的余数是2;8 // 3的结果是2,表示8除以3得到的整数商是2。
在取数位上的数值时,可以通过连续除以10并取余的方式得到每一位数字,例如,对于数字123,123%10的结果是3(个位),123//10的结果是12,12%10的结果是2(十位),12//10的结果是1,1%10的结果是1(百位)。
【注意】开根号开可以使用math模块,math.sqrt()也可以进行开根号计算。
四、算法实现案例
(1)解析法:是通过建立数学模型,运用数学原理和逻辑推理来找到问题的解。
(2)穷举法:思路是通过遍历所有可能的情况来找到问题的解。
(3)迭代法:从某个初始近似值出发,通过迭代公式逐步逼近问题的精确解。
(4)递归法:思路是将问题分解为更小的子问题,直到达到基本情况,然后逐步返回解决整个问题。
(5)二分法:思路是将问题的搜索范围不断缩小,直到找到解为止。
(6)经典算法
1.两数交换:在Python中,a,b=b,a即可实现两数互换。
2.斐波那契数列:对于任意的n大于1,数列中的第n项可以表示为前两项的和,即 F(0) = 0, F(1) = 1, F(n) = F(n-1)+F(n-2)。
3.辗转相除法:
①用较大数除以较小数,得到商和余数。
②将较小数替换为大数,余数替换为小数,重复步骤1。
③当余数为0时,较小数即为最大公约数。
【归纳】在Python中实现算法通常遵循以下步骤:
1. 首先需要明确算法要解决的问题是什么,理解问题的输入和预期输出。
2. 将解决问题的步骤用流程图或自然语言描述出来,以便更清晰地理解算法的逻辑结构。
3. 根据分析和流程图,使用Python语言编写代码实现算法。
4. 编写代码后,需要进行调试和运行,确保程序能够正确执行并得到预期的结果。
在编写程序时,还需要注意Python的数据类型和变量命名规则,确保代码的正确性和可读性。
五、问题解决案例
根据近几年出题和练习的情况,大致分为以下四个方面。
(1)存钱案例
(2)百钱百鸡、水仙花
(3)数学问题
(4)生活问题
【注意】
①分析问题中的条件和目的,转化为Python能识别的语句。
②在关键处理部分,如关系运算、逻辑运算、算术运算中注意Python程序的书写要求。
③一定要运行调试,从结果验证生成情况是否符合实际。
练
考点01 表达式转换
【典型例题1】
(2024-全国)数学式子a÷2b-c,对应的Python表达式是( )
A.a/b2-c B.a/(2*b-c) C.a/(2*b)-c D.a/2*b-c
【答案】C
【解题技巧】2b是2*b,故在计算的时候要优先计算
【解析】本题考查Python表达式。数学表达式"a÷2b-c"中,除法运算符是"",减法运算符是"-”。根据数学运算法则,先进行乘除法运算,再进行加减法运算。因此,在Python表达式中,需要使用括号来确保正确的运算顺序。正确的Python表达式应该是"a/(2*b)-c",因为它将除法运算放在括号中,确保了先执行乘除法运算,然后再执行减法运算。故答案为:C。
【典型例题2】
(2022-河南)数学代数式对应的python表达式是( )
A.2/2X-y B.2/2(X+y) C.2/(2*X+y) D.2/(2X)+y
【答案】C
【解题技巧】分母上转为表达式要加括号
【解析】本题主要考查Python表达式。在python语言中除号用“/”,表达式中2X+y是被除数,题中表达式对应的python表达式是2/(2*X+y)。故本题选C选项。
· 对点专攻
1.下列与数学表达式对应的python表达式,正确的是( )。
A.(-b + math.sqrt(b * b – 4 * a * c))/a * a
B.-b + math.sqrt (b * b – 4 * a * c)/2*a
C.(-b + math.sqrt(b * 2 – 4 * a * c))/(2 * a)
D.(-b + math.sqrt( b * b – 4 * a * c))/(2 * a)
【答案】D
【解析】本题考查的是Python表达式。sqrt()求平方根,乘法运算符为“*”,除法为“”,嵌套函数均使用小括号。表示为(-b+math.sqrt(b*b-4*a*c))/(2*a),故选D。
2.将数学表达式3x/5y,用Python表达式可表示为( )
A. x3/y5 B. 3*x/5*y C. 3*x/(5*y) D. 3*x//(5*y)
【答案】C
【解析】本题考查Python表达式。题中所给数学表达式表示3x与5y的比值。在 Python 中,除法运算符/表示浮点数除法,因此可以使用相同的形式来表示这个表达式。故答案为:C。
考点02 关系表达式计算
【典型例题1】
(2024-全国)与关系表达式x==0等价的表达式是( )
A.x=0 B.not x C.x D.x!=1
【答案】B
【解题技巧】==表示等于,结论要么是True,要么是False
【解析】本题考查的是Python表达式。在Python中,0代表False,非0代表True,not是取反。x为0时,x==0值为True,not x值为True;x为非0时,x==0值为False,not x值为False。故选B。
【典型例题2】
(2023-江苏)下列关系表达式中运算结果成立的是( )
A."hello"=="Hello" B.'compare'>='computer' C.2!=8 D.3.14<=2.718
【答案】C
【解题技巧】成立即为True。
【解析】本题主要考查Python表达式的运算。表达式"hello"="Hello"、'compare'>='computer'、3.14<=2.718值均为False,表达式2!=8值为True,故本题选C选项。
· 对点专攻
1.用 Python 语言表示数学表达式|X|>=5 正确的是( )
A. X>=5 B. X<=-5 C. X>=5 or X<=-5 D. X>=5 and X<=-5
【答案】C
【解析】本题主要考查Python表达式的运算。x的绝对值大于5,x要么大于5,要么小于-5,故选C。
2.若x是一个整型变量,则判断它是否为5的倍数的Python关系表达式是( )
A. x % 5 == 0 B. x / 5 == 0 C. x \ 5 = =0 D. int(x / 5) == 0
【答案】A
【解析】本题主要考查Python表达式的运算。排除C,不是除法符号;B是除法,D是求整,A是取余数,故选A。
考点03 逻辑表达式计算
【典型例题1】
(2024-浙江)下列逻辑表达式中,值为True的是( )
A.int(-5.6)==len("Python") B."Python"[5:6] =="on" C.6+int("-3") <= len("-3") D.1750//100%10 ==7
【答案】D
【解题技巧】两个等号表示判断左右是否相等。
【解析】本题主要考查Python表达式的运算。D选项正确,1750//100%10=17%10=7,故为True。A选项错误,int(-5.6)=-5,len("Python")=6,故表达式int(-5.6)==len("Python")值为False;B选项错误,"Python"[5:6]=“n”,故表达式“Python"[5:6]=="on"值为False;C选项错误,6+int("-3")=6-3=3,len("-3")=2,故为False。故本题选D。
【典型例题2】
(2023-贵州)在Python语言中,下列逻辑表达式值为True的是( )
A.not(4==4) B.3>4 or 3>2 C.3>4 or 3<2 D.3<4 and 3<2
【答案】B
【解题技巧】or,或运算,只要两边有一个True即为True,明显3>2是True。
【解析】本题考查Python运算符与表达式相关内容。A选项,not (4==4) -->not True-->False。B选项,3>4 or 3>2->False or True-->True。C选项,3>4 or 3<2-->False or False-->False。D选项,3<4 and 3<2-->True and False-->False。故本题答案是B选项。
【典型例题3】
(2023-江苏)某校要筛选出身高(t)165厘米~185厘米之间,并且体重(w)在52公斤及以上的学员,下列Python逻辑表达式正确的是( )
A.165<=t<=185 or w>=52 B.165<=t<=185 and w>=52
C.t<=165 or t>=185 or w>=52 D.t<=165 or t>=185 and w<=52
【答案】B
【解题技巧】并且,所以是and,之间也是and。
【解析】本题考查Python逻辑表达式相关内容。A选项,表达式描述的是身高在范围之内或体重在52及以上,不符合题意。B选项,表达式描述的是身高在范围之内并且体重在52及以上,符合题意。C选项,表达式描述的是身高<=165或身高>=185或体重>=52,不符合题意。D选项,and优先级高于or,该表达式描述的是身高<=165或(身高>=185且体重>=52),不符合题意。故本题答案是B选项。
· 对点专攻
1.查询所有身高T超过1.75米且体重W不大于55公斤学生的信息,表示该条件的逻辑表达式为( )
A. T>=1.75 and W<=55 B. T<=1.75 or W>=55
C. T>1.75 and W<=55 D. T>1.75 or W<55
【答案】C
【解析】本题考查Python逻辑表达式相关内容。左边是超过,故是大于,排除AB;右边是不大于,故是小于或等于,故选C。
2.查找工资在600元以上并且职称为“工程师”的记录,其逻辑表达式为( )
A. '工资'>600 OR 职称='工程师' B. 工资>600 AND 职称= 工程师
C. '工资'>600 AND '职称'='工程师' D. 工资>600 AND 职称='工程师'
【答案】D
【解析】本题考查Python逻辑表达式相关内容。列名不加引号,排除AC;文本内容加引号,然后两边的条件都要满足,故选D。
考点04 算法实现
【典型例题1】
(2023-贵州)解析算法是通过找出解决问题的前提条件与结果之间的关系表达式,并计算表达式来实现问题的求解,下列更适合使用解析算法实现的是( )
A. 找出1000以内的所有质数 B. 输入长方形的长和宽,计算长方形的周长
C. 统计全班同学的身高 D. 将输入的三个数从小到大进行排序
【答案】B
【解题技巧】数学公式是解析法
【解析】本题考查基本算法相关内容。输入长方形的长和宽,计算长方形的周长,是长方形周长的公式解析,故选B。
【典型例题2】
(2023-昆明)百钱买百鸡问题是记载于中国古代5—6世纪成书的《张邱建算经》中的一道不定方程组问题,其重要之处在于开创“一问多答”的先例,这是过去中国古算书中所没有的。其问题是这样的:今有鸡翁一,值钱伍;鸡母一,值钱三;鸡雏三,值钱一、凡百钱买鸡百只,问鸡翁、母、雏各几何?
用代码描述解决不定方程组的正整数解的算法如下:
(1)该算法采用的是___________(选填“穷举法”、“解析法”、“枚举法”、“分治法”)。
(2)该算法中,条件i*5+j*3+k/3==100 and i+j+k==100共被判断了多少次 ?(可以直接填计算结果也可以填计算式子)。
【答案】(1)穷举法或枚举法、(2)198000或20*33*300
【解题技巧】循环所有的可能性。
【解析】本题主要考查算法及Python程序实现。①分析题干及代码,可知该算法采用的是穷举法,通过循环嵌套穷举所有的可能。②range(start,stop,[step]),start:计数从 start 开始。默认是从0开始。stop:计数到stop结束,但不包括stop。步长是step,可以省略。代码是三层for循环嵌套,因此条件i*5+j*3+k/3==100and i+j+k==100共被判断了20*33*300=198000,故填198000或20*33*300。。
· 对点专攻
1.解析算法是通过找出解决问题的前提条件与结果之间关系的表达式,并计算表达式来实现问题的求解。下列问题中适合使用解析算法解决的是( )
A.找出校模考中所有满分同学的试卷 B.将同学按身高从高到低顺序进行排列
C.从体检数据中查找视力异常同学记录 D.已知三角形的底和高,输出该三角形面积
【答案】D
【解析】本题考查的是算法相关知识。解析算法是通过找出解决问题的前提条件与结果之间关系的表达式,并计算表达式来实现问题的求解。已知三角形的底和高,输出该三角形面积可采用解析法,故本题应选D。
2.“枚举算法”又称为“穷举法”,其基本思想是:一一列举出所有可能的解,并验证每个可能的解是否是真正的解,若是,就采纳,否则,就抛弃。
小明利用枚举算法解决“百元买百鸡”问题。用100元钱买100只鸡,公鸡,母鸡,小鸡都要有。公鸡5元1只,母鸡3元1只,小鸡1元3只。请问公鸡,母鸡,小鸡各应该买多少只?
假设公鸡有X只,母鸡有Y只,小鸡有Z只。
以下Python程序段实现了“百元买百鸡”的功能,请补全①②③处代码。
c = 0
for x in ①:
for y in range(1,33):
z=100-x-y
if ②:
print("公鸡:",x,"母鸡:",y,"小鸡:",z)
③
print("共有买法",c,"种")
【答案】①range(1,20)、②5*x+3*y+z/3==100、 ③c=c+1
【解析】本题考查的是python编程。X代表公鸡,公鸡5元一只,所以①处range函数为range(1,20),左闭右开区间。if条件是满足三种鸡的总价格为100元的条件,故答案为5*x+3*y+z/3==100,注意这里是一个判断条件,用==表示。c代表的是有几种购买方案,当i条件满足时,即满足一种方案,执行方案数加1,c=c+1。
考点05 问题解决
【典型例题1】
(2024-江苏)如果将5万元存入银行,选择一年定期自动转存的存款方式,假设5年内利率没有发生变化,均为1.25%,问:5年后到期存款总额为多少?请在序号处填写正确的代码,且在不改变原程序结构的情况下删除序号,调试完成后保存文件。
rate=0.0125 #给利率变量赋值
money=50000 #给存款总额变量赋初值(单位:元)
for year in range(1,①):
money=②*(l+rate)#计算每年新的存款总额
print("五年后的存款总额为:",③,"元")输出结果
【答案】①6、②money、③money
【解题技巧】循环处理解析问题。
【解析】本题考查Python程序。(1)因为要计算5年的存款总额,所以循环次数应该是5次,range(1,6)可以产生1到5的整数序列,满足5次循环的需求。故答案为:6。(2)每年的新存款总额是基于上一年的存款总额计算的,所以这里应该是money。故答案为:money。(3)最后要输出的是5年后的存款总额,即循环结束后计算得到的money的值。故答案为:money。
(2023-云南)“水仙花数”是指一个三位自然数,其各位数字的立方和等于该数本身,即一个三位数abc,若满足a3+b3+c3=abc,则这个三位数是水仙花数。小周同学准备编写一个Python程序找出所有水仙花数。
(1)他利用程序逐个列举所有的三位自然数,并依次验证上述条件a3+b3+d3=abc是否满足,这种算法叫______算法。
(2)当程序运行结束后,第5行的if程序一共执行了______次。
(3)程序第5行下划线处应填入______。
【答案】(1)枚举或穷举、(2)900、(3)n1**3+n2**3+n3**3==i
【解题技巧】列举所有的可能,参照给定的公式转为Python表达式
【解析】本题主要考查Python程序的综合应用。①利用程序逐个列举所有的三位自然数,并依次验证上述条件a3+b3+d3=abc是否满足,这种算法叫枚举算法或穷举法。②range(start,stop,[step]),start:计数从start开始。默认是从0开始。stop:计数到stop结束,但不包括stop。当程序运行结束后,第5行的if程序一共执行了1000-100=900次。③“水仙花数”是指一个三位自然数,其各位数字的立方和等于该数本身,即一个三位数abc,若满足a3+b3+c3=abc,则这个三位数是水仙花数。幂运算符号是“**”,故程序第5行下划线处应填入nl**3+n2**3+n3**3==i。
· 对点专攻
1.小明想用压岁钱环游中国,妈妈告诉他大约需要60000元,但现在小明只有50000元。他请妈妈帮忙存在银行里,银行年利息1.25%,小明几年能存够?
rate=0.0125
money=50000
year=0
while ①_______:
money=②_______ (1+rate)
③_______
print("存款数为6万元至少需要",year,"年")
【答案】①money<60000、②money、③year+=1
【解析】本题考查的是Python循环语句应用。①处,根据题意,当压岁钱达到60000时,存够,故此处应为:money<60000。②处,本息=本金*(1+利率),故此处应为:money。③处,循环一次,存款年数累加1,故此处应为:year+=1。
2.水仙花数是指一个3位数,它的每个位上的数字的3次幂之和等于它本身(例如:13+53+ 33=153)。通过Python编程可以得到所有的3位水仙花数并打印出来。
(1)实现上述功能的部分程序代码如下,请在划线处填入合适的代码。
for i in range(_____):
a=i// 100 #取出百位数字
b=______ #取出十位数字
c=i%10 #取出个位数字
if
print("水仙花数是:”, i)
(2)加框处的代码有误,以下可以代替此代码的正确代码有( )
A. a**3+b**3+c**3==i: B. not i!=a**3+b**3+c**3:
C. a**3+b**3+c**3!=I D. i==a**3+b**3+c**3 E.(a+b+c)**3==i:
【答案】(1)100,1000、i//10%10、(2)AB
【解析】本题主要考查Python程序的综合应用。①range(start,stop,[step]),start:计数从start开始。默认是从0开始。stop:计数到stop结束,但不包括stop。此处变量i是3位数,i的范围是从100~999,故此处填100,1000。②此处取出十位数字,先除10再取余可以得到,故填i//10%10。③此处需要使用关系运算符“==”,故可以使用代码a**3+b**3+c**3==i:,或not i!=a**3+b**3+c**3:代替,选AB选项。
1、用于求变量s值的算法如下:
①变量s的初值是0,变量n的初值是1;
②若变量n的值大于100,则转到步骤⑤;
③s←—s+(-1)的n-1次方×n;
④n的值增加1,转到步骤②;
⑤输出s的值;
⑥结束。
下列数学表达式中,其计算结果与上述算法执行后变量s的值相等的是( )
A. 1+2+3+·+100 B. -1-2-3-…-100 C. 1-2+3-4+…-100 D. -1+2-3+4+…+100
【答案】C
【解析】本题主要考查Python表达式的相关内容。有-1的n-1次方,故有加有减,排除AB,-1的n-1,当n=1时,结果为1,故第一个数字是1,选C。
2、下列选项中,关系表达式的结果为真的是( )
A. int(-1.8) == -abs(2) B. math.cos(0) == math.sin(90)
C. math.sin(0) == random.randint(1,1) - 1 D. int(1.8) == math.sqrt(4)
【答案】C
【解析】本题主要考查Python关系表达式的相关内容。A,1==2,False;B,0==1,False;D,1==2,False;C,0==0,故C正确。
3、关系表达式是用________连接起来的式子。( )
A. 算术运算符 B. 关系运算符 C. 逻辑运算符 D. 成员运算符
【答案】B
【解析】本题主要考查Python关系表达式的相关内容。关系运算符,如>、<、==等。故选B。
4、某员工工资表中包含工号、姓名、工资、职称等字段,查找工资在3000元以上并且职称为“工程师”的记录,其逻辑表达式为( )
A. "工资">3000 OR 职称="工程师" B. 工资>3000 AND 职称="工程师"
C. "工资">3000 AND "职称"="工程师" D. 工资>3000 AND 职称=工程师
【答案】B
【解析】本题主要考查Python逻辑表达式的相关内容。工资是数量,故排除AC,职称是文本,故需要加引号,本题选B。
5、下列Python逻辑表达式中,值为True的是( )
A. 3/2!=1 B. 'D'<'A' C. 5%3!=2 D. 'G'=='g'
【答案】A
【解析】本题主要考查Python逻辑表达式的相关内容。第一个为True;剩下三个都是False,B,D字母在A字母后面应该是大于;C,余数为2;D,大小写不一样。
6、解析法在算法实现中通常用于解决哪类问题( )
A. 数值计算问题 B. 排序问题 C. 搜索问题 D. 图像处理问题
【答案】A
【解析】本题考查解析法的描述。解析法通常用于解决数值计算问题,它涉及数学公式和方程的直接应用。故选A。
7、斐波那契数列也叫兔子繁殖数列,小明编写了下列代码求第74个月能繁殖多少对兔子,他使用的算法是( )
A.解析法 B.迭代法 C.枚举法 D.二分法
【答案】B
【解析】本题考查迭代算法的应用。从第三个月开始,每个月的兔子对数是前两个月的兔子对数之和,又同时作为下一个月兔子对数的加数。这种重复反馈的过程称为迭代。故选B。
8、递归是计算科学领域中一种重要的计算思维模式。面对一个大规模复杂问题的求解,递归的基本思想是把规模较大的问题层层转化为规模较小的同类问题求解。对递归而言,递推与回归,二者缺一不可。请用递归法解决下面问题:有5个人坐在一起,问第5人多少岁?他说比第4个人大两岁;问第4人的岁数?他说比第3个人大两岁;问第3个人,又说比第2个人大两岁;问第2个人,他说比第1人大两岁。最后问第1个人,他说10岁。根据题意得出递推关系式:
请问第五个人多大?请在序号处填写正确的代码。
def age(n):
#递归求年龄
if n==1:
return ①
else:
return ②
#主程序
print(“第5个人的年龄是:”,③,“岁。”)
【答案】①10、②age(n-1)+2、③age(5)
【解析】本题考查程序设计。①递归程序,当n为1时,返回年龄为10。故正确答案为:10。②当n大于1时,调用参数为n-1的递归函数,返回值加2。故正确答案为:age(n-1)+2。③调用递归函数计算第5个人的年龄。故正确答案为:age(5)。
9、输入一个产品的价格(假设价格在百元以内),使用二分法快速猜到这个价格,并输出猜了几次的程序代码如下:
x=int(input("请输入要猜的价格:"))
step=0
f1=1
f2=100
while (f1<=f2):
mid=①
step=step+1
if mid>x:
f2=mid
elif mid<x:
f1=②
else:
break
print("猜的次数为",step)
(1)补充画横线的代码:____,____。
(2)当输入价格为13时,输出结果为____。
【答案】①(f1+f2)//2、mid、②3
【解析】本题考查Python程序。(1)使用二分法,中间值mid的计算公式为(f1+f2)//2,故答案为:(f1+f2)//2。如果中间值mid小于输入的价格x,说明价格在中间值的右侧,需要将最小值f1更新为mid+1,故答案为:f1=mid+1。(2)当输入价格为13时,输出结果为3。这是因为通过二分法,第一次猜测的中间值为50,然后更新最大值f2为50,再次猜测中间值为25,最后一次猜测中间值为13,第三次猜测成功。所以猜的次数为3。故答案为:3。
10、以下程序代码采用的算法是( )。
def gcd(m,n):
while m%n != 0:
m,n=n,m%n
return n
a=int(input("请输入a的值:"))
b=int(input("请输入b的值:"))
print(gcd(a,b))
A.枚举法 B.二分法 C.递归法 D.迭代法
【答案】D
【解析】本题主要考查迭代算法。迭代法是用计算机解决问题的一种基本方法,它让计算机对一组指令或一定步骤进行重复执行,在每次执行这组指令或这些步骤是都从变量的原值推出他的一个新值,用迭代法解决问题,要考虑迭代的初值、迭代的过程、迭代的结束或迭代的次数。简单地说就是运算过程中的变量的不断交替,分析程序可知,辗转相除法求最大公约数采用的算法是迭代法,故本题选D选项。
11、假设银行的定期存款年利率是r,小明将1000元存入银行,根据输入的利率,计算从多少年以后小明在银行的存款超过2000元。请在序号处填写正确的代码,且不改变原程序的结构,并把序号删除,调试完成后保存文件。
r = float(input("请输入银行定期存款年利率:")) # r为利率,可以输入0.01~0.05之间的小数
money = 1000
y = 0
while money ① 2000:
y = y+1
money = money*(②)
print(③, "年后小明在银行的存款超过2000元。")
【答案】①<=、(②1+r或r+1、③y
【解析】本题考查Python循环结构的应用。分析题目内容及程序段可知:①处,while循环作用是计算存款超过2000元的时间,不超过将重复执行,故此处应填写:<=。②处,存款额=本金+本金*利息,故此处应填写:1+r或r+l。③处,print函数作用是将计算好的年数输出,故此处应填写:y。
12、信息技术学科期末考试结束后,老师将学生的成绩转换成对应的等第。成绩对应的等第为:
s=float(①("请输入分数:"))
if ②:
print("优秀")
elif s>=75:
print("良好")
elif ③:
print("合格")
elif s>0:
print("不及格")
elif s==0:
print("缺考")
【答案】①input、②s>=90、③s>=60
【解析】本题考查Python程序。输入input;优秀是大于或等于90;合格是大于或等于60小于75。
13、由计算机随机生成一个100以内的正整数,用户有5次猜数机会,如果猜中则提示"猜中了"并退出程序,否则经比较给出相应的提示,然后继续猜数。如果5次均未猜中,输出提示信息后结束游戏。
import ① #导入随机模块
number=random.randint(1,100)
for i in range(1,6):
guess=int(input("请在1至100中输入一个数:"))
if guess<number:
print("你输入的数字太小了,你还有",②,"次机会")
③ guess>number:
print("你输入的数字太大了,你还有",5-i,"次机会")
④:
print("你猜对了!")
break
if guess!=number:
print("这个数是:",number)
print("5次没有猜中,很遗憾,游戏结束")
【答案】①random、②5-i、③elif、④else
【解析】本题考查Python程序。随机模块random;5-i次机会;elif;else
14、已知实数x、y关系如下:
输入实数x,计算y的值。
x = float(input("输入实数x= "))
if x ① 0 :
y = x - 5
② x<1 :
y = x + 5
else:
y= ③ + 8
④(y)
【答案】①<=、②elif、③-2*x或者x*(-2)、④print
【解析】本题考查Python程序。根据所给函数,第一段是小于或等于0,<=;第二段是elif;其他为-2*x;打印print
15、使用沃利斯公式计算圆周率:
s=①
x=0
y=②
item=1
while ③<=1000000:
if item%2==1:
x+=2
else:
④
s=s*x/y
item+=1
print(2*s)
【答案】①1、②1、③item、④y+=2
【解析】本题考查Python程序。乘法故s=1;y是分母,初始化1;item是第几项;y在偶数项的时候每次要加2。
16、小球由5米高度自由落体运动,不考虑空气阻力,每次落地后反弹回原高度的一半,重复这个过程,理论上永远不会停止。求它在第10次落地时,共经过多少米?
程序代码如下:
h=5
s=5
for i in range(2,①):
#第1次已经计算在内,从第2次开始计算
s=②
h=③
print(s)
【答案】①11、②s+h、③h/2
【解析】本题考查Python程序。因为第1次已经计算在内,从第2次开始计算,故1处填11;高度进行累计,s=s+h;高度是原来的一般,h=h/2。
原创精品资源学科网独家享有版权,侵权必究!2
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$$