小黑课堂计算机二级Python | 第一、二套基础操作题详细解析(附代码与考点总结)
小黑课堂基础操作题第一、二套
第一题
题目
41、考生文件夹下存在一个文件PY101. py,请写代码替换横线,不修改其他代码,实现以下功能:键盘输入正整数n,按要求把n输出到屏幕,格式要求:宽度为20个字符,减号字符-填充,右对齐,带千位分隔符。如果输入正整数超过20位,则按照真实长度输出。
例如:键盘输入正整数n为1234,屏幕输出---------------1,234
提示:建议使用本机提供的Python集成开发环境IDLE编写、 调试及验证程序。
代码
n=int(input()) #1234
print("{:->20,}".format(n)) #---------------1,234
解析
主要考查 format()的格式控制
语法为:{<参数序号>:<格式控制标记>},其中格式控制标记包括:填充,对齐,宽带,, ,.精度,类型等。填充常跟对齐一起使用。
^居中 <左对齐 >右对齐 ,后面带宽度
:后面带填充的字符,只能是一个字符,不指定默认空格
千位分隔符用 :, 实现
第二题
题目
42、考生文件夹下存在一个文件PY102. py,请写代码替换横线,不修改其他代码,实现以下功能:
a和b是两个列表变量,列表a为[3, 6, 9]已给定,键盘输入列表b,计算a中元素与b中对应元素乘积的累加和。
例如:键盘输入列表b为[1,2, 3],累加和为13+26+3*9=42,因此,屏幕输出计算结果为42
提示:建议使用本机提供的Python集成开发环境IDLE编写、调试及验证程序。
代码
a=[3,6,9]
b=eval(input()) #b=[1,2,3]
sum=0 #
for i in range(3):
sum+=a[i]*b[i]
print(sum)
解析
主考 for循环
eval()函数的核心作用:把传入的字符串当作 Python 代码来执行,并返回执行结果。
eg:b=eval(input())
当输入
[1,2,3]时,input()本身会把输入内容变成字符串"[1,2,3]"
eval()会把这个字符串"[1,2,3]"当成 Python 代码去解析,最终返回一个真实的列表对象 [1,2,3]所以变量
b最终存储的是列表[1,2,3],而不是字符串"[1,2,3]"
range()函数用于生成一个整数序列,是一个可迭代对象,语法为:
| 语法形式 | 说明 | 示例 | 生成的序列 |
|---|---|---|---|
| range(n) | 从 0 开始,到 n-1 结束,步长为 1 | range(5) | 0,1,2,3,4 |
| range(a, b) | 从 a 开始,到 b-1 结束,步长为 1 | range(2, 7) | 2,3,4,5,6 |
| range(a, b, s) | 从 a 开始,到 b-1 结束,步长为 s(可正可负) | range(1, 10, 2) | 1,3,5,7,9 |
| range(10, 1, -2) | 10,8,6,4,2 |
关键注意点:
range()生成的序列是左闭右开的(包含起始值,不包含结束值),这是二级考试的易错点;- 步长
s不能为 0,否则会报错;- 若步长为正,需满足
a < b;若步长为负,需满足a > b,否则生成空序列。
第三题
题目
43、考生文件夹下存在一个文件PY103. py,请写代码替换横线,不修改其他代码,实现以下功能:
以123为随机数种子,随机生成10个在1 (含)到999 (含)之间的随机整数,每个随机数后跟随一个逗号进行分隔,屏幕输出这10个随机数。
提示:建议使用本机提供的Python集成开发环境IDLE编写、 调试及验证程序。
代码
import random
random.seed(123)
for _ in range(10):
print(random.randint(1,999),end=',')
解析
主要考查 随机数
seed()方法是改变随机数生成器的种子,可以在调用其他随机模块函数之前调用此函数。语法为:
import random #使用随机数功能的前提
random.seed([x])
seed()是不能直接访问的,需要导入random模块,然后通过random静态对象调用该方法。
参数x是改变随机生成器的种子seed。
randint(a,b)随机数中包括a和b区间的数
end=','表示打印完数字后不换行,而是用逗号分隔(默认end='\n'是换行)
如果题目要求用逗号分隔列表,无末尾逗号:先收集所有随机数到列表,再用join拼接(高频考点)
import random random.seed(123) #收集随机数列表(转为字符串,方便拼接) num_list=[] for _ in range(10): num=random.randint(1,999) num_list.append(str(num)) # 用逗号拼接列表元素,无末尾逗号 result=','.join(num_list) print(result)
第四题
题目
41、考生文件夹下存在一个文件PY101.py,请写代码替换横线,不修改其他代码,实现以下功能:
随机选择一一个手机品牌屏幕输出。
提示:建议使用本机提供的Python集成开发环境IDLE编写、调试及验证程序。
代码
import random
brandlist = ['华为','苹果','诺基亚','OPPO','小米']
random.seed(0)
name=brandlist[random.randint(0,4)]
print(name)
第五题
题目
42、考生 文件夹下存在一个文件PY102.py,请写代码替换横线,键盘输入一段文本,保存在一个字符串变量txt中,分别用Python内置函数及jieba库中已有函数计算字符串txt的中文字符个数及中文词语个数。注意:中文字符包含中文标点符号。
例如,键盘输入:
俄罗斯举办世界杯
屏幕输出:
中文字符数为8,中文词语数为3。
提示:建议使用本机提供的Python集成开发环境IDLE编写、 调试及验证程序。
代码
import jieba
s = input("请输入一个字符串")
n = len(s)
m = len(jieba.lcut(s))
print("中文字符数为{},中文词语数为{}。".format(n, m))
解析
主要考查 中文字符和中文词语进行统计
jieba库支持三种分词模式:
- 精确模式:将句子最精确的分开,适合文本分析
- 全模式:把句子中所有可以成词的词语都扫描出来,速度非常快,但是不能解决歧义
- 搜索引擎模式:在精确式基础上,对长词再次切分开,提高召回率,适合用于搜索引擎分词
- 其中jieba.lcut(s)是最常用的中文分词函数,用于精确模式,即将字符串分割成等量的中文词组,返回结果列表类型
区分jieba.lcut() 和 jieba.cut():
jieba.lcut():返回列表(直接可用len()统计),考试优先用;
jieba.cut():返回生成器(需转列表list(jieba.cut(s))才能统计)。
易错点:
中文字符包含中文标点符号
jieba 分词函数用错:
易错写法:
m = len(jieba.cut(s))(cut()返回生成器,len()会报错);正确写法:
m = len(jieba.lcut(s))或m = len(list(jieba.cut(s)))。
第六题
题目
43、考生文件夹下存在一个文件PY103.py,请写代码替换横线,不修改其他代码,实现以下功能:
某商店出售某品牌运动鞋,每双定价160,1双不打折,2双(含)到4双(含)打九折,5双(含)到9双(含)打八折,10双(含)以上打七折,键盘输入购买数量,屏幕输出总额(保留整数)。示例格式如下:
输入: 1
输出:总额为: 160
提示:建议使用本机提供的Python集成开发环境IDLE编写、调试及验证程序。
代码
n = eval(input("请输入数量:"))
a=160
if n==1:
cost=a
elif 2<=n&n<=4:
cost=a*0.9
elif 5<=n&n<=9:
cost=a*0.8
elif n>=10:
cost=a*0.7
cost=int(cost) #屏幕输出总额(保留整数)
print("总额为:",cost)
解析
主要考查程序的多分支结构
python的多分支结构使用if-elif-else保留字对多个相关条件进行判断,并根据不同的结果按顺序执行路径
cost=a
elif 2<=n&n<=4:
cost=a0.9
elif 5<=n&n<=9:
cost=a0.8
elif n>=10:
cost=a*0.7
cost=int(cost) #屏幕输出总额(保留整数)
print(“总额为:”,cost)
### 解析
主要考查程序的**多分支结构**
python的多分支结构使用if-elif-else保留字对多个相关条件进行判断,并根据不同的结果按顺序执行路径
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)