小黑课堂基础操作题第一、二套

第一题

题目

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库支持三种分词模式:

  1. 精确模式:将句子最精确的分开,适合文本分析
  2. 全模式:把句子中所有可以成词的词语都扫描出来,速度非常快,但是不能解决歧义
  3. 搜索引擎模式:在精确式基础上,对长词再次切分开,提高召回率,适合用于搜索引擎分词
  4. 其中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=a
0.8
elif n>=10:
cost=a*0.7
cost=int(cost) #屏幕输出总额(保留整数)
print(“总额为:”,cost)




### 解析

主要考查程序的**多分支结构**

python的多分支结构使用if-elif-else保留字对多个相关条件进行判断,并根据不同的结果按顺序执行路径
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐