内容正文:
2.3 程序设计基本知识
一、选择题
1.用Flask框架编写Web应用程序,相关流程的代码如下:
①app=Flask(__name__)
②from flask import Flask
③@app.route('/')
def index():
④app.run()
为开启 Web应用,上面语句执行的先后顺序正确的是( )
A.①②③④ B.②①③④ C.①③②④ D.②①④③
2.列表1st包含10个元素,有如下Python程序段:
from random import randint
lst=[9,11,3,18,6,30,20,9,1,2]
n=len(Ist)
t=randint(3,6)
for i in range(1,t):
k=n-i
for j in range(n-i-1,-1,-1):
if lst[j]>lst[k]:
k=j
if k!=n-i:
lst[k],lst[n-i]=lst[n-i],lst[k]
print(t,lst)
结果不可能是( )
A.3 [9,11,3,18,6,2,1,9,20,30] B.4 [9,11,3,9,6,2,1,18,20,30] C.5 [9,1,3,9,6,2,11,18,20,30] D.6 [9,1,3,2,9,6,11,18,20,30]
3.有下列Python程序段:
s="5a10b3c4d6"
sumx=t=0
flag=True
for ch in s:
if "0"<=ch<="9":
t=t*10+int(ch)
else:
if flag==True:
sumx+=t
t=0
flag=not flag
print(sumx)
该程序段执行后,变量sumx的值为( )
A.8 B.14 C.22 D.28
4.在Python语言中,下面程序段运行结果是( )
s=0
n=1
while s<=5:
s=s+n
n=n+1
print(s)
A.0 B.4 C.6 D.10
5.有如下Python程序段:
x,y,z=input("请输入三个整数:").split(",")
x=int(x);y=int(y);z=int(z)
maxt=x
if y>maxt:maxt=y
if z>maxt:maxt=z
print(maxt)
运行该程序,输入数据“2,13,9”,程序的输出结果是( )
A.13 B.9 C.2 D.31
6.在Python中,以下选项中可以作为变量名的是( )
A.1A B.for C.X_2 D.A+B
7.已知字典rec中存储着某文具店部分商品的类别编码,其值为rec={"01":"铅笔","02":"圆珠笔","03":"钢笔","04":"水笔","05":"白板笔"},现要在字典rec中增加一个键为"06",值为"毛笔"的元素,下列Python语句能实现的是( )
A.rec[06]="毛笔" B.rec["06"]="毛笔"
C.rec["06"]={"毛笔"} D.rec["06"]="06":"毛笔"
8.在Python中,若a=1,b=2,要使输出结果为a+b=3,则应使用的输出语句是( )
A.print("a+b=a+b") B.print("a+b=",a+b)
C.print(a+b,"=a+b") D.print("a+b","=a+b")
9.运行以下程序后,从键盘上输入654,则输出的结果是( )
n=int(input("请输入一个整数:"))
while n!=0:
print(n%10,end="")
n//=10
A.654 B.456 C.645 D.564
10.计算机能直接执行的程序是( )
A.Python语言程序 B.汇编语言程序 C.C语言程序 D.机器语言程序
11.若food="milkeggbread",以下表达式值为['milk', 'egg', 'bread']的是( )
A.[food[:4],food[4:7],food[7:]] B.[food[:3], food[3:6],food[6:]]
C.[food[1:4],food[4:7],food[7:len(food)]] D.[food[0:3],food[3:6],food[6:len(food)-1]]
12.以下Python程序段执行后,输出结果为( )
m=28
if m%3!=0:
print(m,"不能被3整除")
else:
print(m,"能被3整除")
A.m不能被3整除 B.m能被3整除 C.28能被3整除 D.28不能被3整除
13.以下四个选项中属于字符串类型的是( )
A.thing="面包,矿泉水" B.production=["面包","矿泉水"]
C.record={"面包":4.5, "矿泉水":2} D.price=4.5
14.某Python程序如下:
d={}
text=input()
text=text.upper()#将所有字母转换为大写字母
for c in text:
if c in "AEIOU":
if c in d:
d[c]+=1
else:
d[c]=1
print(d["A"])
程序运行后,从键盘输入“How are you? Fine, Thank you. And you?”,输出的结果是( )
A.0 B.1 C.2 D.3
15.有如下Python程序段:
from random import randint
s, i, ans=1,0,0
k= randint (10,24) # randint(10,24)随机生成10到24(含10和24)之间的整数
for j in range (len (nums)):
s=s * nums [j]
while s >= k:
s=s / nums [i]
i+=1
ans +=j -i+1
若nums的值为[2,3,4,5],执行如下程序段后,变量ans的值不可能是( )
A.4 B.5 C.6 D.7
16.在 Python语言中,15岁以下的男生的判断条件是( )
A.nl<15 or xb=="男" B.nl< 15 or xb! ="女"
C.nl<15 and xb=="男" D.nl>= 15 and xb== "男"
17.python提供了整数、浮点数和字符串等常见的数据类型,下列语句中变量n为整数类型的是( )
A.n=float("89") B.n=input( ) C.n=89 D.n="89"
18.已知变量s="password",下列表达式的值为"pass"的是( )
①s[:4] ②s[-5:-1] ③s[:2]+s[3]*2 ④s[0:2]+s[3:5]
A.①②③ B.②④ C.①③④ D.①③
二、填空题
19.在数学课堂上,小智正尝试判断一个数是否既是2的倍数又是3的倍数,如果是2的倍数又是3的倍数则打印出“YES”,否则打印出“NO”,并写出了下列程序,由于操作失误误删了一行代码,请你补充该代码:
num=int(input())
if :
print("YES")
else:
print("NO")
20.求s=1+1/3+1/5+1/7+1/9+…+1/99的和,在如下程序横线空白处填入正确的表达式 。
s=0
for i in range(1,100,2):
print(s)
21.编程中, 是一种将对象的状态信息封装在对象内部,不允许外部直接访问,而是通过方法来操作的机制。
22.编程中, 是一种将代码组织成模块的方式,有助于代码的重用和维护。
23.Python表达式125//3的运算结果是( )
24.程序有3种基本结构, 是最简单的程序结构。
三、判断题
25.已知列表x = [1, 2],执行语句y = x后,表达式id(x) == id(y)的值为True。( )
26.读下面的python程序,在划线处填写上“a<b”,则程序的输出结果是True。( )
a=5
b=8
if :
print("True")
else:
print("Flase")
27.Python语言的变量名要区分英文字母的大小写。( )
28.Python中的同一个变量可以被重复赋值。( )
29.在Python语言中,表达式(2>4)and(8>9)的结果是True。( )
30.NAME、name、Name、NaMe是不同的变量。( )
四、操作题
31.某学校开展食堂窗口满意度调查,让学生分别对食堂窗口:"米粉轩","炒饭屋","快乐饺子窗","爽口素食站","甜蜜角落"进行评价。调查结果如图a所示,若满意度未填为无效票不参与统计,有效票的满意度分3个等级:A.满意、B.一般、C.不满意,分别计1分、0分、-1分。现在计算各食堂窗口满意度,结果用图表形式呈现,部分Python程序如下:
班级
姓名
食堂窗口
满意度
5
周*
快乐饺子窗
B
6
宋*程
甜蜜角落
/
7
季*扬
甜蜜角落
A
…
…
…
…
6
陈*妍
炒饭屋
C
8
赖*军
快乐饺子窗
/
7
赵*祺
爽口素食站
C
图a
import pandas as pd
import matplotlib.pyplot as plt
df1=pd.read_excel("data.xlsx")
df1=① #筛选出有效票
for i in range(0, len(df1)):
rank=dfl.at[i,"满意度"]
②
dfl.at[i,"得分"]=mark
df2=df1.groupby(③ , as_index=False)['得分'].sum()
df2=df2.sort_values("得分", ascending=False)
plt.title("食堂窗口满意度排行")
#设置绘图参数,代码略
plt.bar(df2["食堂窗口"],df2["得分"])
plt.show()
(1)划线处填写合适的代码
(2)执行上述程序后,下列选项中的图表可能是绘制结果的是( )(单选)
A. B. C. D.
32.某仓库记录每天出入库情况,正数表示入库数量,负数表示出库数量。编写程序,查询出入库总量等于k的连续时间段。某星期出入库情况为“10,-10,5,6,7,8,-5”,k值为18的连续时间段有第1天~第5天,第3天~第5天。请回答下列问题:
(1)若将题干例子中的k值改为21,则有 个时间段满足要求。
(2)实现上述功能的部分Python程序如下,请在划线处填入合适的代码。
#读取出入库情况,存入列表a中,读取k值。代码略。
pos={0:[-1]}; count=0
①
for i in range (len(a)):
cur += a[i]
②
if pre in pos:
for j in pos[pre]:
print("时间段:",j+2," ~",i+1])
③
if cur in pos:
pos [cur]. append(i)
else:
pos[cur]=[i]
print("一共有",count,"个时间段")
试卷第1页,共3页
试卷第1页,共3页
学科网(北京)股份有限公司
参考答案:
1.B
【详解】本题考查Python Flask框架程序设计相关内容。Flask Web框架编写网络应用流程是:
(1)from flask import Flask #导入框架模块
(2)app=Flask(__name__) #创建应用实例
(3) @app.route('/') #编写路由
def index(): #编写视图函数
(4)app.run() #启动Web应用
给定语句执行的先后顺序是②①③④。故本题答案是B选项。
2.D
【详解】本题考查Python基础。
t是随机产生的,整段代码完成了t-1次选择,程序运行后,输出的1st后t-1个元素是有序的,并且都比前面的元素大。故正确答案为:选项D
3.A
【详解】本题考查Python基础。
本题的功能是提取字符串中的数字字符并转换为整数,当flag为True时,累加到变量sumx中,字符串中共有5个整数:5、10、3、4、6,t为5、3、6时,flag为True,因为6是字符串最后一个字符,因此t=6没有累加到sumx中,即sumx=5+3=8,故正确答案为:选项A。
4.C
【详解】本题考查Python基础。
该程序功能为:初始化n为1,累加n到变量s,s<=5为循环判断条件,每次循环n加1。当s累加到6时,退出循环。故正确答案为:选项C。
5.A
【详解】本题考查Python基础。
该程序功能是从输入的数字中,找到最大的一个数输出。故正确答案为:选项A。
6.C
【详解】本题考查Python变量相关内容。变量的命名要符合标识符规定,即:只能以字母或下划线开头,不能包含特殊符号,不能是关键字。A选项, 以数字开头,错误;B选项,for为关键字,错误;C选项,符合标识符规定,正确;D选项,含有“+”,错误。故本题答案是C选项。
7.B
【详解】本题考查Python数据类型。在Python中,字典通过键来访问和操作对应的值。当要向字典中添加新的键值对时,使用字典名[键]=值的格式。在给定的字典rec中,要增加一个键为"06",值为"毛笔"的元素,应使用rec["06"]="毛笔"。故答案为:B。
8.B
【详解】本题考查Python基础。print函数显示字符,需要用双引号括起来,变量与显示字符使用逗号分隔。故选择B。
9.B
【详解】本题考查Python程序。程序中使用了input()函数获取用户输入的整数,并将其转换为整型数。接着使用while循环对输入的整数进行处理,循环条件为整数不等于0。在循环体内,使用取余运算符%获取整数的个位数,并使用end=""参数指定不换行输出。然后使用除法//将整数除以10,以去除个位数,继续下一次循环。最终输出的是输入整数的个位数、十位数、百位数……直到整数变为0。因此,要输入654,则输出的结果为456。故答案为:B。
10.D
【详解】本题考查程序语言。A项Python语言程序、B项汇编语言程序和C项C语言程序都需要通过解释器或编译器转换为机器语言才能被计算机执行。D项机器语言程序是计算机能直接执行的程序,因为它是由二进制代码组成的,计算机硬件能够直接识别和执行。因此,正确答案是D。
11.A
【详解】本题考查的是Python切片操作。切片操作基本表达式:object[start_index:end_index:step],step:正负数均可,其绝对值大小决定了切取数据时的“步长”,而正负号决定了“切取方向”,正表示“从左往右”取值,负表示“从右往左”取值。start_index:表示起始索引(包含该索引对应值),该参数省略时,表示从对象“端点”开始取值。end_index:表示终止索引(不包含该索引对应值),该参数省略时,表示一直取到数据“端点”。[food[:4],food[4:7],food[7:]]=['milk', 'egg', 'bread'],[food[:3], food[3:6],food[6:]]=['mil', 'keg', 'gbread'],[food[1:4],food[4:7],food[7:len(food)]]=['ilk', 'egg', 'bread'],[food[0:3],food[3:6],food[6:len(food)-1]]=['mil', 'keg', 'gbrea'],故选A。
12.D
【详解】本题考查Python程序设计相关内容。m=28,执行m%3,结果为1,不等于0,输出:28不能被3整除。故选D。
13.A
【详解】本题考查的是数据类型。选项A是字符串类型,选项B是列表,选项C是字典,选项D是整型。故选A。
14.D
【详解】本题考查Python程序设计相关内容。分析程序段,其功能是将字符串的字符全部转换为大写字母,然后再统计“AEIOU”各字符的个数,最后输出字符“A”的个数,结果为3,故本题答案是D选项。
15.A
【详解】本题考查Python程序。初始化变量s=1,i=0,ans=0。生成随机数k,范围在10到24之间。遍历nums列表,对于每一个元素执行以下操作:更新s的值为s*nums[j]。通过while循环,如果s>=k,则将s除以nums[i]并增加i的值。计算ans的值为ans+(j-i+1)。具体步骤:j=0,ans+=0-0+1=1;j=1,ans+=1-0+1=2;j=2,如果k=10,那么s>=10,s=24/2=12,i=1;s=12/3=4,i=2,跳出循环;如果k=24,那么s=24,s>=24,s=24/2=12,i=1,跳出循环;ans+=2-i+1,根据不同的k值,i的值不同,如果k=10,那么i=2,ans+=2-2+1=1;如果k=24,那么i=1,ans+=2-1+1=2;此时ans的值最少增加1。j=3,如果k=10,s=4*5=20,s>=10,s=20/4=5,i=3,跳出循环;如果k=24,s=12*5=60,s>=24,s=60/3=20,i=2,跳出循环;ans+=3-i+1,根据不同的k值,i的值不同,如果k=10,那么i=3,ans+=3-3+1=1;如果k=24,那么i=2,ans+=3-2+1=2;此时ans的值最少增加1。从上面的分析可以看出:当j=0和j=1时,ans的值已经为3。当j=2和j=3时,ans至少增加1。所以,ans的值最小是5(3+1+1),即不可能是4。
16.C
【详解】本题考查的是Python逻辑表达式。or是或,and是且,==表示相等,!=表示不相等,15岁以下的男生的判断条件是:nl<15 and xb=="男"。故本题应选C。
17.C
【详解】本题考查Python数据类型相关知识。float函数:为一个字符串或整数创建一个新的浮点数;input函数:键盘中输入的内容默认为字符串。A选项,n=float("89")的作用是将字符串"89"转换为float类型的数据后赋值给a,其结果为:89.0,不是整数,选项不符合题意;B选项,n=input()的作用是输入一个字符串并赋值给n,选项不符合题意;C选项,n=89的作用是将整数值89赋值给n,选项符合题意;D选项,n="89"的作用是将字符串"89"赋值给n,选项不符合题意。故本题答案是C选项。
18.D
【详解】本题考查字符串切片操作。切片操作基本表达式:object[start_index:end_index:step],step:正负数均可,其绝对值大小决定了切取数据时的“步长”,而正负号决定了“切取方向”,正表示“从左往右”取值,负表示“从右往左”取值。start_index:表示起始索引(包含该索引对应值),该参数省略时,表示从对象“端点”开始取值。end_index:表示终止索引(不包含该索引对应值),该参数省略时,表示一直取到数据“端点”。s="password",因此①s[:4]="pass",②s[-5:-1]="swor",③s[:2]+s[3]*2="pa"+"s"*2="pass",④s[0:2]+s[3:5]="pa"+"sw"="pasw",故选D。
19.num%2= =0 and num%3= =0
【详解】本题考查程序设计。
判断一个数能被另一个数整除,可以使用取余数是否为0判断。题目中判断一个数是否既是2的倍数又是3的倍数,故可以写为:num%2==0 and num%3==0。
20.s=s+1/i
【详解】本题考查Python程序。题目要求计算序列1+1/3+1/5+1/7+...+1/99的和。可以通过for循环遍历1到99之间的所有奇数,并将每个数的倒数累加到变量s中。在这个程序中,for i in range(1,100,2)表示从1开始到100(不包括100),以步长2进行循环。每次循环中,s=s+1/i将当前奇数的倒数累加到s中,最后输出s的值即为所求的和。故答案为:s=s+1/i。
21.封装
【详解】本题考查计算机编程。在编程中,封装是面向对象编程的重要特性之一。它将对象的状态信息(通常是数据成员)封装在对象内部,不允许外部代码直接访问这些内部数据。而是提供一系列的方法(也称为成员函数),外部通过调用这些方法来对对象的状态进行操作和获取。这样可以保护对象内部数据的完整性和一致性,避免外部随意修改导致的错误,同时也提高了代码的可维护性和可扩展性。故答案为:封装。
22.模块化
【详解】本题考查计算机编程。在编程中,模块化是将复杂的程序分解为相对独立且功能单一的模块的方法。每个模块具有明确的功能和接口,通过这种方式,可以使代码结构更清晰、逻辑更简洁。模块化有助于提高代码的可读性、可重用性和可维护性,不同模块可以独立开发、测试和修改,减少代码的冗余,方便团队协作和项目的扩展。故答案为:模块化。
23.41
【详解】本题考查Python表达式的运算。//是整除运算符,因此125//3=41。
24.顺序结构
【详解】本题考查的知识点是程序基本结构。程序有三种基本结构:顺序结构、选择结构和循环结构。其中,顺序结构是最简单的程序结构。在顺序结构中,程序的各个操作按照它们在源代码中的排列顺序自上而下依次执行。这种结构相对直接明了,只需要按照逻辑顺序编写代码即可。故答案为:顺序结构。
25.正确
【详解】本题考查Python基础。
在Python中,当你执行 y = x 这样的语句时,你实际上并没有创建 x 的一个新副本,而是让变量 y 指向了 x 指向的同一个对象。这意味着 x 和 y 都引用了内存中的同一个列表对象,即内存地址相等,故表达式id(x) == id(y)的值为True。故正确。
26.正确
【详解】本题考查Python基础。
a=5,b=8,a<b返回逻辑真。故输出True。故正确。
27.正确
【详解】本题考查Python。Python语言的变量名是区分英文字母大小写的,这意味着在Python中,变量名var和Var被视为两个不同的变量。故说法正确。
28.正确
【详解】本题考查Python基础。正确。在Python中,变量是动态类型的,这意味着你可以将一个变量从一种类型更改为另一种类型,并且你可以多次为同一个变量赋值。
29.错误
【详解】本题考查Python表达式的运算。逻辑运算符or两边值均为假时值才为假,否则值为真;逻辑运算符and两边值均为真时值才为真,否则值为假,not是取反。因此表达式(2>4)and(8>9)的结果是False。故表述错误。
30.正确
【详解】本题考查Python变量的描述。Python变量区分字母的大小写,故表述正确。
31. df1[df1.满意度!="/"] 或 df1[df1["满意度"]!="/"] mark=ord("B")-ord(rank) 或 mark=66-ord(rank) 或其他等价答案 "食堂窗口" B
【详解】本题考查Python综合应用。
(1)df1是一个DataFrame,包含食堂窗口满意度调查的所有记录。有效票是那些满意度不为空(即不是/)的记录。因此,我们需要筛选出这些记录。因此需要使用了pandas的布尔索引来筛选满意度列不等于/的记录。故答案为:df1[df1.满意度!="/"] 或 df1[df1["满意度"]!="/"]。满意度分为三个等级:A(1分),B(0分),C(-1分)。ord函数返回字符的Unicode码值。满意度A、B、C的Unicode码值分别为65、66、67。因此,可以通过计算66-ord(rank)来得到每个满意度等级对应的分数。故答案为:mark=ord("B")-ord(rank) 或 mark=66-ord(rank)。这里按食堂窗口列对数据进行分组,然后计算每个窗口的得分总和。故答案为:"食堂窗口"。
(2)由程序可得,该程序绘制的横坐标为食堂窗口的名称,纵坐标为食堂窗口的总得分,且按照降序排列。故答案为:B。
32. 3 cur=0 pre=cur-k count+=1或count=count+1
【详解】本题考查Python综合应用。
(1)当k=21时:从第3天到第7天,和为5+6+7+8-5=21;从第1天到第7天,和为10-10+5+6+7+8-5=21;从第4天到第6天,和为6+7+8=21,有3个时间段满足要求。故答案为:3。
(2)因为要开始计算新的连续时间段的和,将当前和初始化为0。故答案为:cur=0。这是为了找到前一个和与目标值k的差值,通过这个差值来判断是否有满足条件的连续时间段。故答案为:pre=cur-k。当找到一个满足要求的时间段时,对总数量进行加1操作,以统计满足条件的时间段的个数。故答案为:count+=1或count=count+1。
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$