内容正文:
3.2 Python语言程序设计
一、选择题
1.下列代码的执行结果是( )
ls=[[1,2,3],[[4,5],6],[7,8]]
print(len(ls))
A.3 B.4 C.8 D.1
2.下列选择中,错误的是( )
A.Python语言中的“ord”是将字符转换为对应存储编码的函数
B.Python语言中的“chr”是将编码值转换为对应字符的函数
C.Python语言中的“bin”是将一个十进制数转换为对应二进制数的函数
D.Python语言中的“ascii”函数字符转换为对应ASCII码
3.假设输入5,下面的python程序运行结果为( )
A.25 B.5*3 C.运行报错,类型不匹配 D.555
4.在Python程序设计语言当中,如果x=12.357,执行语句print("%.2f"%x),则输出结果为( )
A.12.357 B.12.35 C.12.36 D.12.4
5.在Python中,运行以下代码后,变量i的值是( )
i=20
while i>=5:
print(i)
i=i-5
A.10 B.-5 C.5 D.0
6.下列语句中不能输出DataFrame对象df前三行所有数据的是( )
A.print(df[df.index<=3]) B.print(df.head(3)) C.print(df.columns) D.print(df[0:3])
7.有如下程序段,已知列表 a=[1, 3, 4, 2, 3],则程序运行后,变量 S 的值为( )
k = a[0]
S=0
for i in rang(5):
if a[i] >k :
k=a[i]
S=S + k
print(S)
A.7 B.12 C.15 D.16
8.“水仙花数”是指一个三位正整数,其各位数字立方和等于该数本身。例如:153=13+53+33,故153是一个水仙花数。求1000以内的所有水仙花数的Python程序如下( )
A.i//100//10 B.i%100%10 C.i%100//10 D.i//100%10
9.费马平方和定理:质数能表示为两个平方数之和的充分必要条件是该质数被4除余1,如13=22+32。现通过编程来验证3-99之间所有质数是否符合费马平方和定理。
实现该功能的Python程序如下,运行结果如图所示,划线处的代码可以是( )
from math import sqrt
def prime(n):
# prime(n)判断n是否为质数,返回True/False,代码略
for n in range(3, 101, 2):
if prime(n):
a=1; flag=True
while a < sqrt(n) and flag:
b= ①
if int(b)==b:
print(str(n)+“=”+str(a)+“**2+”+str(int(b))+“**2”)
flag=False
a=a+1
if ②
print(n,“无法用两个平方数之和表示”)
A.① b=sqrt(n-a**2) ②flag
B.①b=sqrt(n-a*a) ②not flag
C.① b=sqrt(n-a*a) ②n%4!=1
D.① b=sqrt(n-a**2) ②b==int(b)
10.一个闰年年份“2**2”,中间两个数字未知。以下Python程序段的功能是:输出可能的最大年份。
i=100;flag=False
while i>0 and not flag:
print(j)
方框中的代码由以下三部分组成:
下列选项中代码顺序正确的是( )
A.①②③ B.①③② C.②③① D.③①②
11.有Python程序段如下,执行该程序段后,a[0]~a[5]中不可能的值是( )
import random
a=[0]*6
a[0]=random.randint(1,10) #随机生成一个[1,10]范围内的整数
i=1
while i<6:
a[i]=a[i-1]+random.randint(1,10)
if i%2==0:
a[i]=a[i]+a[i]%2
elif a[i]%2==0:
a[i]=a[i]//2
i+=1
print(a)
A.[3,9,14,22,31,20] B.[3,9,20,13,20,27] C.[10,19,26,29,32,39] D.[7,17,20,13,22,12]
12.某 Python代码如下:
s = ['lemon','banana','strawberry','apple','grape']
ans = s[0]
n = len(s[0])
for x in s:
if len(x)> n:
n = len(x)
ans = x
print(ans)
执行后输出的结果是( )
A.banana B.apple C.grape D.strawberry
13.下列算法流程图描述的算法执行结果是( )
for i in range(1,6):
for j in range(1,5-i+1):
print(" ",end="") #输出一个空格
for j in range(1,i+1):
print("*",end="")
print("")
A. B. C. D.
14.小张收集了近阶段要学习的英文单词,存储为“data.txt”文件,格式如图所示。
处理“data.txt”文件中英文单词的 Python 程序段如下:
file=“data.txt”
n=0
for word in open(file): #打开文件准备读
if word[0:1]=='c': #word每次读到第一行信息,word[0:1]则是当前行字符的第1个字符
n=n+1
print(n)
运行该程序段后,输出的值为( )
A.1 B.2 C.3 D.5
15.有如下Python程序段:
import random
n=random. randint (5,15)
i=0:a=[0]*10
while i<n:
j=0
a[j]=a[j]+1
while a[j]==3:
a[j]=0
j=j+1
a[j]=a[j]+1
i=i+1
执行该程序段后,列表a中元素之和为3,则n的值不可能是( )
A.5 B.7 C.10 D.13
16.有如下Python程序段:
a=[3,4,7,9,12,17]
i = a[0];j =a[5];tar =20;ans =-1
while i <=j:
mid=(i + j)//2
tmp=0
for k in range(len(a)):
if a[k]>mid:
tmp += a[k] - mid
if tmp >= tar:
ans = mid;i = mid+1
else:
j = mid -1
执行该程序段后,变量ans的值为( )
A.-1 B.6 C.7 D.10
二、填空题
17.以下用于将小时h折算成秒s的Python表达式正确的有( )(多选)
①s=h*60**2 ②s=h*(60**2) ③s=h*60*60 ④s=h*60*2 ⑤s=(h*60)***2
18.time模块是一个 。time.sleep(10)是 10秒。
19.有如下Python程序段。
import pandas as pd
list=[['周欣怡','湖州',15,646],['王培新','杭州',16,598],['张佳明','杭州',16,609],['林逢春','嘉兴',15,547],['朱梁栋','湖州',16,588],['陈清瑞','嘉兴',15,571]]
inf=pd.DataFrame(list,columns=['姓名','地区','年龄','总分'])
print(inf)
print('_',20)
print(inf.groupby('地区',as_index=True).mean())
执行该程序段后,输出的结果是 (单选,填字母)。
20.程序分析题:分析完善程序
以下是求解一元二次方程( a=0)的主要源程序,请你补全代码:
import math
a=int(input(" a="))
b=int(input("b="))
c=int(input("c="))
d= ① #一元二次方程根的判别式
if d>0:
x1=(-b+math.sqrt(d))/ (2*a)
x2=(-b-math.sqrt(d))/(2*a)
print("x1=",x1)
print("x2=",x2)
if ② :
print("x1=x2=",-b/(2*a))
if d<0:
print("无实数解!")
请补充完成上述程序: ① ②
21.在Python 语言中, 是实现图形用户界面的模块,可以快速创建 。
22.在编程语言中, 数据类型用于存储文本数据。
三、判断题
23.在Python中用<>表示不等于。( )
24.不能用for 、in、if等关键字作为变量名。( )
25.若条件表达式的值一直为true,则while循环将一直执行。( )
26.用户自定义函数通过return语句只能返回一个数值。( )
27.计算机程序能重复使用。( )
28.在Python语言中,数据的输出是通过output()函数实现的。( )
四、操作题
29.用 Python 编辑器打开 “Y:\91”下的文件“求奇数的和.py 进行以下操作并保存结果。
(1)请填空完善该程序,实现功能:求1到100之间所奇数的和。
(2)编写完成后原名保存并关闭应用软件。
s=0 #s 中存放 1-100 之间所有奇数的和
for i in range(_①_, 100, _②_):
s = ③
print(s)
① ② ③
30.某数的平方与它的逆序数的平方互为逆序数,则该数被称为奇妙平方数。如122=144,212=441,12与21互逆,144与441互逆,12就是奇妙平方数。小明编写了一个找出200以内所有奇妙平方数的程序。程序运行界面及效果如图所示:
实现上述功能的程序如下,请在程序划线处填入合适的代码。
n=200
sum=0
print("200以内的奇妙平方数有:")
for a in range(1,n+1):
①
b=0
while tmp!=0:
②
tmp=tmp∥10
t1=str(a**2);t2=str(b**2)
if ③ and t1!=t2 :
print(str(a)+"**2="+t1,str(b)+"**2="+t2)
sum+=1
print("共找到"+str(sum)+"个奇妙平方数")
程序划线①处应填入的代码为 ;
程序划线②处应填入的代码为 ;
程序划线③处应填入的代码为 。
试卷第1页,共3页
试卷第1页,共3页
学科网(北京)股份有限公司
参考答案:
1.A
【详解】本题主要考查Python函数。len() 返回字符串、列表、字典、元组等长度,故len(ls)=3,故本题选A选项。
2.D
【详解】本题考查Python程序设计相关内容。ord()函数是Python的内置函数的一种。它可以对应一个长度为1的字符返回相对应的Unicode值或者八进制的ASCII值。chr()是一个内置函数,用于将Unicode编码转换为对应的字符。bin()函数是Python的一个内置函数,主要功能是返回整形(int)或者长整形(long int)的二进制表示。ascii()是一个内置函数,用于返回表示对象的ASCII字符串。ABC选项说法正确,D选项说法错误。故本题答案是D选项。
3.D
【详解】本题考查Python基础。
在 Python 中,input()函数读取用户输入的内容并将其作为字符串返回。因此,当你输入5时,变量 n 的值将是字符串5。在执行 print(n*3) 时,Python 会将字符串5乘以3,这将导致字符串的重复,所以结果会是:555。故正确答案为:选项D。
4.C
【详解】本题考查Python输出语句。print("%.2f"%x)语句表示浮点数(12.357)被四舍五入到小数点后两位,即输出12.36,故选C。
【点睛】
5.D
【详解】本题考查Python程序。分析代码执行过程:初始值i=20。进入while循环,条件i>=5为真。打印i的值,输出20。更新i的值为20-5=15。再次进入while循环,条件i>=5仍为真。打印i的值,输出15。更新i的值为15-5=10。再次进入while循环,条件i>=5仍为真。打印i的值,输出10。更新i的值为10-5=5。再次进入while循环,条件i>=5仍为真。打印i的值,输出5。更新i的值为5-5=0。再次进入while循环,条件i>=5为假,循环终止。故答案为:D。
6.C
【详解】本题主要考查DataFrame数据结构。print(df.columns)语句的功能是输出df对象的标题行,因此不满足要求,故本题选C选项。
7.A
【详解】本题主要考查Python程序的执行。k=a[0]=1,当i=1时,a[1]=3>k,执行k=a[1]=3,S=S+k=3;当i=2时,a[2]=4>k,执行k=a[2]=4,S=S+k=7;后续循环不再满足if判断条件,因此程序运行后,变量 S 的值为7,故本题选A选项。
8.C
【详解】本题主要考查Python表达式运算。此处是得到三位正整数的十位,可以先取余100得到后2位,再整除10得到,即i%100//10。或者i先整除10得到前2位,再对10取余得到十位数,即i//10%10故,故本题选C选项。
9.AC
【详解】本题主要考查Python程序的执行与调试。四个选项中第一问都正确,它们的含义相同,即 a**2等效于 a*a 。重点在第二问。代码 if int(b)==b的含义是b如果正好是整数而不是浮点数说明 n 是由两个整数的平方和组成。条件成立就输出n由那两个整数的平方和组成,这两个整数分别是a和b。 flag=false代码说明不用再循环已经找到满足两个数的平方和等于n的变量a和b。flag为false时表示n可以有两个数的平方和组成,flag为true时表示没有两个整数的平方和是n。A选项符合题意,B选项错误。题干中“质数能表示为两个平方数之和的充分必要条件是该质数被4除余1”,故C选项也正确。b==int(b)成立时flag值为false,n是可以有两个整数的平方和组成,D选项错误。故本题选AC选项。
10.D
【详解】本题主要考查Python程序的执行与调试。变量i表示中间未知的两个数字,题干要输出可能的最大年份,应从99开始,而i的初值为100,故首先执行③i=i-1;其次是年份的表示用变量j,故第二部分是①j=2002+i*10;最后判断j是否是闰年,若是则赋值flag为True退出循环,故②if j%4==0 and j%100!=0 or j%400==0: flag=True,故本题选D选项。
11.A
【详解】本题主要考查Python程序的执行与调试。a[0]=random.randint(1,10) ,随机生成一个[1,10]范围内的整数。每次循环a[i]=a[i-1]+random.randint(1,10),如果索引i是偶数(从2开始),则执行a+[i]=a[i]+a[i]%2,执行完对应的a[i]必为偶数,即a[2]、a[4]必是偶数,[3,9,14,22,31,20]不符合条件,故本题选A选项。
12.D
【详解】本题主要考查Python程序的执行。s = ['lemon','banana','strawberry','apple','grape'],ans = s[0]='lemon',n = len(s[0])=5,变量x依次取列表s中的值,当len(x)>5时,将x赋给ans。当x='banana'时,满足if条件,n=len(x)=6,ans=x='banana';当x='strawberry'时,满足if条件,n=len(x)=10,ans=x='strawberry',此后再不满足if判断条件,故执行后输出的结果是strawberry,故本题选D选项。
13.B
【详解】本题主要考查算法流程图的执行。分析程序可知,最外层循环中i控制行,一共输出5行,变量i的范围是1~5;内层第一个循环控制输出空格,内层第二个循环控制输出符号“*”,且随着i的递增,空格在减少,“*”在增加,“*”的个数依次是1、2、3、4、5,选项B符合,故本题选B选项。
14.B
【详解】本题考查的是程序的识读。程序中n中记录的值为,各单词中以小写字母c开头的单词的个数,共2个,compter和capsule。故选项B正确。
15.C
【详解】本题主要考查Python程序的执行与调试。n=random. randint (5,15),变量n随机生成5~15,当a[j]=3,此时赋值a[j]=0,j=j+1,a[j]=a[j]+1,外层循环每次执行时均赋值j=0。因此当n=5时,a=[2, 1, 0, 0, 0, 0, 0, 0, 0, 0];当n=7时,a=[1, 2, 0, 0, 0, 0, 0, 0, 0, 0];当n=10时,a=[1, 0, 1, 0, 0, 0, 0, 0, 0, 0];当n=13时,a=[1, 1, 1, 0, 0, 0, 0, 0, 0, 0]。执行该程序段后,列表a中元素之和为3,因此n的值不可能是10,故本题选C选项。
16.B
【详解】本题考查Python程序设计相关内容。分析代码段,初始状态下,ans =-1,tar =20,i=3,j=17。
(1)i<=j成立,第一次进入外循环:mid=(i + j)//2=10,tmp=0,k从 0到5依次执行内循环体,当 k值为0、1、2、3时,a[k]>mid不成立,当k值为4、5时,a[k]>mid成立,两次都执行 tmp += a[k] - mid,使得tmp=9,此时,tmp >= tar不成立,执行j = mid -1,j=9。i值未发生变化,仍然=3。
(2)i<=j成立,第二次进入外循环:mid=(i + j)//2=6,tmp=0,k从 0到5依次执行内循环体,当 k值为0、1时,a[k]>mid不成立,当k值为2、3、4、5时,a[k]>mid成立,四次都执行 tmp += a[k] - mid,使得tmp=21,此时,tmp >= tar成立,执行ans = mid;i = mid+1;ans=6,i=7,j值未发生变化,值为9。
(3)i=7,j=9,i<=j成立,第三次进入外循环:mid=(i + j)//2=8,tmp=0,k从 0到5依次执行内循环体,当 k值为0、1、2时,a[k]>mid不成立,当k值为3、4、5时,a[k]>mid成立,三次都执行 tmp += a[k] - mid,使得tmp=14,此时,tmp >= tar不成立,执行j = mid -1,j=7,i值未发生变化,值为7。
(4)i=7,j=7,i<=j成立,第四次进入外循环:mid=(i + j)//2=7,tmp=0,k从 0到5依次执行内循环体,当 k值为0、1、2时,a[k]>mid不成立,当k值为3、4、5时,a[k]>mid成立,三次都执行 tmp += a[k] - mid,使得tmp=17,此时,tmp >= tar不成立,执行j = mid -1,j=6,i值未发生变化,值为7。(5)i=7,j=6,i<=j不成立,不再进入循环。在四次循环内,只有第二次循环,ans才获得值,其值为6。
故本题答案是 B选项。
17.①②③
【详解】本题考查Python运算符与表达式相关内容。①s=h*60**2-->s=h*3600,可以将h折算成秒,正确。 ②s=h*(60**2)--> s=h*3600,可以将h折算成秒,正确。 ③s=h*60*60--> s=h*3600,可以将h折算成秒,正确。④s=h*60*2--> s=h*120,不可以将h折算成秒,错误。⑤s=(h*60)***2,Python中没有“***”这种运算符,错误。故本题答案是:①②③。
18. 时间库 延时
【详解】本题主要考查Python时间模块。time模块是一个时间库,time.sleep(10)是延时10秒。
19.B
【详解】本题考查Python程序设计相关内容。pd.DataFrame是Pandas库中的一个类,用于创建和操作数据框(DataFrame),DataFrame是Pandas的核心数据结构,用于以表格形式和处理数据,类似提供电子表格或数据库表格。df.groupby()函数返回的对象是一系列键值对,其中键是分组的字段值,值是该字段值下的数据表。mean()函数可以方便地计算一组数据的平均值,从而帮助我们进行数据分析和统计。程序段中以list为数据源创建表格,再调用df.groupby().mean()函数按照地区进行分组并计算每组平均值,故本题答案为B选项。
20. b*b-4*a*c 或b**2-4*a*c d==0
【详解】本题考查的是程序的实现。①填写的是一元二次方程根的判别式,故应为b*b-4*a*c,注意填空时,表达式的格式要正确。②根据后面的“x1=x2=”提示,该if语句是判断的是该一元二次方程有两个相等的根的情况,即判别式等于0,此处要注意其写法:d==0。
21. tkinter GUI应用程序
【详解】本题考查的是Python语言相关知识。在Python 语言中,tkinter是实现图形用户界面的模块,可以快速创建GUI应用程序。
22.字符串
【详解】本题考查的是数据类型。字符串数据类型用于存储文本数据,由一系列字符组成。
23.错误
【详解】本题考查Python关系运算符相关内容。用来表示不等于的符号是“!=”,“==”表示等于,“>=”表示大于等于,“<=”表示小于等于,故本题答案是:错误。
24.正确
【详解】本题主要考查Python变量的命名。变量的命名规则有:只能以字母或下划线开头,不能包含特殊符号,不能是关键字。故表述正确。
25.正确
【详解】本题主要考查Python循环语句。在Python中,while循环的工作方式是,当条件表达式的值为True时,循环体内的代码会一直执行。为了避免死循环,必须确保在循环体内包含能够改变条件表达式值的语句,以便在某个时刻条件表达式的值变为False,从而退出循环。故说法正确。
26.错误
【详解】本题考查的是Python的自定义函数。用户自定义函数通过return语句可以返回多个数值。故题干中的说法是错误的。
27.正确
【详解】本题考查计算机程序相关内容。计算机软件(程序)复用指的是在开发软件时,重复利用已有的代码和模块,以提高开发效率,并减少开发成本。故本题答案是:正确。
28.错误
【详解】本题考查的知识点是Python语言中的输出语句。在Python语言中,实现数据的输出是使用print函数,故答案为错误。
29. 1 2 s+i
【详解】本题主要考查Python程序循环结构。range(start, stop, [step]),start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5;step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)。求1到100之间所奇数的和,故变量i的初值是1,每次递增2,循环体是s=s+i,故①②③处分别填1、2、s+i。
30. tmp=a b=b*10+tmp%10 t1==t2[::-1]或t1[::-1]==t2
【详解】本题考查Python程序设计。
程序中while循环的功能是求整数tmp的逆序数,因此可知进行求解前,应先将a的值赋给变量tmp,因此程序①处的代码为tmp=a;求整数tmp的逆序数,即将整数tmp的最低位变为最高位,最高位变为最低位,其余各位也相同处理,求出一个余数时,先将之前结果扩大10倍后,然后再加上当前的余数,根据代码t2=str(b**2),可知,a的逆序数保存在变量b中,因此程序②处代码为b=b*10+tmp%10;为了处理方便,将a的平方数和b的平方数转换为字符串来处理,如果它们不是同一个数且它们的平方数为互逆数时,则该数为奇妙平方数,求字符串t2的逆序数可用代码t2[::-1],因此③处代码为t1==t2[::-1],也可以写为t1[::-1]==t2。
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$