python二级考试操作题docx.docx

上传人:b****6 文档编号:7377408 上传时间:2023-01-23 格式:DOCX 页数:21 大小:23.33KB
下载 相关 举报
python二级考试操作题docx.docx_第1页
第1页 / 共21页
python二级考试操作题docx.docx_第2页
第2页 / 共21页
python二级考试操作题docx.docx_第3页
第3页 / 共21页
python二级考试操作题docx.docx_第4页
第4页 / 共21页
python二级考试操作题docx.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

python二级考试操作题docx.docx

《python二级考试操作题docx.docx》由会员分享,可在线阅读,更多相关《python二级考试操作题docx.docx(21页珍藏版)》请在冰豆网上搜索。

python二级考试操作题docx.docx

python二级考试操作题docx

 

描述

 

参照代码模板完善代码,实现下述功能。

输入一个字符串,其中的字

 

符由(英文)逗号隔开,编程将所有字符连成一个字符串,输出显示

 

在屏幕上。

 

输入输出示例

 

输入输出

 

1,2,3,4,5

12345

示例1

 

习题讲解

答案:

ls=input("请输入一个字符串,由逗号隔开每个字符:

").split(',')

(1)

print(''.join(ls))

(2)

 

要点:

1.题目要求输入的字符用逗号隔开,所以,需要用到split(',')来从字符串里提取所输入的字符

2.经过split()函数的字符串,返回的是列表

 

3.字符串有个操作函数是(ls),可以把列表里的各个元素,用str的内容连接起来。

本题利用了空字符串‘’,来调用这个函数,因此,达到了所想要的效果:

将带有逗号的字符串变换成了没有逗号的字符串。

 

4.有一个不可忽视的地方是join()函数的括号里的参数是列表,如果忘了这一点,会犯错

 

5.这个功能利用好了,可以拓展,解决其他的问题。

 

描述

 

参照代码模板完善代码,实现下述功能。

 

有一个列表studs如下:

 

studs=[{

'sid':

'103'

'Chinese':

90,'Math'

:

95,'English'

:

92},{

'sid'

:

'101'

'Chinese'

:

80,'Math'

:

85,'English'

:

82},{

'sid'

:

'102'

'Chinese'

:

70,'Math':

75,'English'

:

72}]

 

将列表studs的数据内容提取出来,放到一个字典scores里,在

 

屏幕上按学号从小到大的顺序显示输出scores的内容。

内容示例如

 

下:

 

101:

[85,82,80]

 

102:

[75,72,70]

 

103:

[95,92,90]

 

输入输出示例

 

输入

输出

示例

1

101:

[85,82,80]

102:

[75,72,70]

103:

[95,92,90]

习题讲解

答案:

studs=

[{

'sid'

:

'103','Chinese':

90,'Math'

:

95,'English'

:

92},{

'sid'

:

'101'

'Chinese'

:

80,'Math'

:

85,'English'

:

82},{

'sid'

:

'102'

'Chinese'

:

70,'Math':

75,'English':

72}]

scores

=

{}

for

stud

instuds

:

sv

=

()

v

=[]

for

it

in

sv:

if

it

[0]

=='sid'

:

k

=it

[1]

else:

(it[1])

scores

[k]

=v

 

#print(scores)

 

so=list())

 

(key=lambdax:

x[0],reverse=False)

 

forlinso:

 

print('{}:

{}'.format(l[0],l[1]))

 

studs=[{'sid':

'103','Chinese':

90,'Math':

95,'English':

92},{'sid':

'101','Chinese':

80,'Math':

85,'English':

82},{'sid':

'102','Chinese':

70,'Math':

75,'English':

72}]

 

lit=[]

 

foriinstuds:

 

lst=[]

 

a=('sid')

 

('Chinese'))

 

('Math'))

 

('English'))

 

(reverse=True)

 

lat=[]

 

(a+":

")

 

(str(lst))

 

(lat)

 

()

 

foriinlit:

 

print("".join(i))

 

要点:

 

1.字典作为元素,定义在列表里,用列表的遍历就可以从中提取出来

2.提取出来的元素直接就是字典,因此可以用items()直接获取,形成键值对对象集合sv;

3.对键值对对象集合sv遍历,就可以以元组it的方式访问其中的每一对键值对,sv=(),是第一个空的答案;

4.题目要求提取学生的学号,所以需要比较键it[0]是否是'sid',是则将学号

it[1]提取出来作为新的字典scores的键k;不是则将成绩提取出来作为新字典

scores的值v;

5.由于课程是多门,因此新字典scores的值v需要以列表的方式,保存各门课

程的成绩,所以在不是的情况下,新字典

 

scores的值v是利用append(it[1])

的方式,追加到列表的后面;

 

6.对v做append操作,必须要事先定义v是一个空列表;因此需要在对每一条

旧字典stud的键值对信息做处理的foritinsv:

语句之前,用v=[]初始化

v为一个空列表;

7.经过对一条字典stud的处理,就形成一对k和v,所以接下来是给新字典

scores添加一条键值对,scores[k]=v,是第二个空的答案

8.经过对全部的studs列表里的各条字典处理完之后,新的scores字典就全部生成。

 

9.题目要求按学号从小到大的顺序输出学号和成绩,所以需要对字典的键值对

内容items()提取到列表so里,此处是第三个空的答案:

so=list())

10.用Lambda函数进行排序。

这个不在考试范围里,所以代码模板直接给出语

句;

 

11.对排好序的列表输出每组列表,这个直接给出语句,不再赘述。

 

描述

 

参照代码模板完善代码,实现下述功能。

 

从键盘输入一个用于填充的图符,一个字符串,一个要显示的字符串的总长度;编程将输入的字符串,居中输出显示在屏幕上,用填充图符补齐到输入的总长度。

如果总长度处输入的不是正整数,则提示请输入一个正整数,并重新提示输入,直至输入正整数。

 

输入:

 

请输入填充符号:

@

 

请输入要显示的字符串:

qq

 

请输入字符串总长度:

r

 

请输入一个正整数

 

请输入字符串总长度:

 

请输入一个正整数

 

请输入字符串总长度:

4

 

输出:

 

@qq@

 

输入输出示例

 

输入

 

输出

 

示例

 

1

 

@

 

@qq@

qq

 

4

 

习题讲解

答案:

 

#在____填写一行代#在⋯填写多行代#不要修改已出代

 

a=input()#入填充符号

 

c=input()#要示的字符串

 

flag=1

whileflag:

try:

 

b=eval(input())#请输入字符串总长度

except:

flag=1

print("请输入一个正整数")

else:

iftype(b)==intandb>0:

flag=0

else:

flag=1

print("请输入一个正整数")

print('{0:

{1}^{2}}'.format(c,a,b))

 

描述

 

参照代码模板完善代码,实现下述功能,不得修改其它代码。

使用

 

turtle库的()函数和()函数绘制螺旋状的正方形,正方形边长

 

从1像素开始,第一条边从0度方向开始,效果如下图所示。

 

---------------------------------------------------------------

 

自动评阅说明

 

使用字符串形式输出____①____,____②____,____③____中应填代码即可以自

动评阅得分

 

例如,如果代码为:

 

#代码模板|#你的代码importturtle|import

turtle

 

d=0|d=0foriinrange(__1__):

|foriinrange

(1):

 

(__2__)

|

(100)

d

=__3__

|

d

=(i+100)*100

(d)

|

(d)

 

则在提交代码页面输入:

 

print('1','100','(i+100)*100')

 

提交后即可以查看得分

 

注:

如果有运算符,请在运算符两侧加上空格

 

习题讲解

答案:

 

importturtle

 

d=0

 

k=1

 

forjinrange(10):

 

foriinrange(4):

 

(k)

 

d+=91(d)

k

+=2

 

()

 

要点:

 

1.降低了难度,让填写的都是最简单的

 

描述

 

参照代码模板完善代码,实现下述功能,可以修改其它代码。

附件文件中有一道Python选择题,第1行的第1个数据为题号,后续的4行是4个选项。

示例内容如下:

 

3.以下关于字典类型的描述,错误的是:

 

A.字典类型中的数据可以进行分片和合并操作

 

B.字典类型是一种无序的对象集合,通过键来存取

 

C.字典类型可以在原来的变量上增加或缩短

 

D.字典类型可以包含列表和其他数据类型,支持嵌套的字典

 

读取其中的内容,提取题干和四个选项的内容,利用jieba分词并统计出现频率最高的3个词,其中要删除以下的常用字和符号

 

“的,:

可以是和中以下B”,作为该题目的主题标签,显示输出在屏幕上。

 

输入输出示例

 

输入输出

 

示例

 

1

 

从文件

 

中读取所有内容

 

第3题的主题是:

类型:

5

 

集合:

2

 

组合:

2

习题讲解

答案:

 

import

jieba

fi

=open("",'r'

con

=

''

num=

0

for

l

infi

:

l

=('\n'

'').

strip().split('.')

 

#print(l)try:

ft=eval(l

 

except:

 

pass

 

else:

 

num=ft

 

con+=l[1]

 

[0])

print('第{}题的主题是:

'.format(num))

 

conls=(con)

 

dict

=

{}

forword

in

conls

:

dict

[word]=

(word,0)+1

dictls

=

list

())

(key

=

lambdax:

x[1],reverse=True)

 

k=0

 

foritindictls:

 

ifit[0]in'的,:

可以是和中以下B':

 

continue

 

else:

 

ifk==3:

 

break

 

else:

 

print('{}:

{}'

 

k+=1

 

.format(it[0],it[1]))

()

 

要点:

1.

导入jieba库,使用lcut分词,返回列表conls

2.

打开文件,读文件,关闭文件

3.

按行从文件里读,每一行是一个字符串,用strip

和split

处理成列表,因

为要识别题号,还要提取题目和选项的内容,所以要按照'.'分隔来提取,分别返回题号和选项号作为列表l的第0个字段,后面的内容是列表l的第一个字段;

 

4.为了识别题号,要利用eval,并逆向利用try-except结构捕捉第一个字段是整数的字段,把题号提取出来放到num里面,把其他的内容都用字符串加法,拼成一个大字符串con

5.给出第一句显示:

print('第{}题的主题是:

'.format(num))

6.接下来处理con,提取整个题干的主题词:

 

7.用jieba分词,然后用字典dict来保存没个词出现的次数。

一种惯用法是

forwordinconls:

dict[word]=(word,0)+1

8.统计出来的词以及词频,需要排序找到最大三个词频,此时需要把字典的键

值对items()提取出来形成列表dictls,并利用列表排序和lambda函数。

得到排好序的dictls

 

9.显示的时候,遍历字典的每个键,要避开那些没有意义的词,题目里给出了

剔除列表,拿过来判断一下,如果是没用的词,就直接跳过,循环下一个,用continue;

10.如果是有意义的词,题目要求显示三个最高词频的词,因为中间有跳过的

词,不能直接只循环排序靠前的3个词。

要对显示了的词做计数,计够三个,就中断循环,所以要用break;

11.这里用了嵌套的分支结构,在第一个分支里是有意义的词,在第二个分支

里是计数不到三个,才做显示输出的语句,显示完了,要把计数器k加一。

 

12.程序最后记着关闭文件。

 

描述

 

老王的血压有些高,医生让家属给老王测血压。

老王的女儿记录了一

 

段时间的血压测量值,在文件中,内容示例如下:

 

2018/7/26:

00,140,82,136,90,69

 

2018/7/215:

28,154,88,155,85,63

 

2018/7/36:

30,131,82,139,74,61

 

2018/7/316:

49,145,84,139,85,73

 

2018/7/45:

03,152,87,131,85,63

 

文件内各部分含义如下:

 

测量时间,左臂高压,左臂低压,右臂高压,右臂低压,心率

 

参照代码模板完善代码,实现下述功能,可以修改给定代码。

 

(1)使用字典和列表类型进行数据分析,获取老王的

 

左臂和右臂的血压平均值

 

左臂和右臂的高压最高值、低压最高值

 

左臂和右臂的高/低压差平均值

 

心率的平均值

 

给出左臂和右臂血压情况的对比表,输出到屏幕上,请注意每行三列对齐。

示例如下:

 

(2)上述显示的五个项目,如果左臂有大于50%的项目高于右臂,则输出“结论:

左臂血压偏高”;如果等于50%的项目高于右臂,

 

则输出“结论:

左臂血压与右臂血压相当”;如果小于50%的项目

 

高于右臂,则输出“结论:

右臂血压偏高”。

示例如下:

 

结论:

左臂血压偏高,心率的平均值为66

 

(注意:

此处为格式示例,实际数据与此不同)

 

输入输出示例

 

输入输出

 

示例1

 

习题讲解

答案:

 

读取文件内容

 

结论:

左臂血压偏高,心率的平均

fi

=

open("",'r'

jl

=

[[],[],[],[],[]]

#1:

zb_h,zb_l,yb_h,yb_l

zyc

=

[]

yyc

=

[]

xl

=

[]

 

forl

in

fi:

lls

=('\n'

'').strip().

split(',')

fori

in

range(1,5):

jl

[i].

append(eval

(lls[i]))

(eval

(lls

[1])

-eval(lls

[2]))

(eval

(lls

[3])

-eval(lls

[4]))

(eval

(lls

[5]))

()

 

cnt

=

len(xl)

res

=

[]

(list

((

"高压最大值",max(jl

[1]),

max(jl

[3]))))

(list

((

"低压最大值",max(jl

[2]),

max(jl

[4]))))

(list

((

"压差平均值",sum(zyc)ormat("对比项",

"左臂",

"右臂"))

for

r

inrange(len(res)-1):

print

('{:

<10}{:

<10}{:

<10}'

.format

(res[r][0],res[r][1],res[r][2]))

if

res

[r][1]>res[r][

2]:

 

zbg

+=1

 

else:

 

ybg

+=1

 

ifzbg>ybg:

 

print

('结论:

左臂血压偏高

',end=''

)elif

zbg

==ybg:

print

('结论:

左臂血压与右臂血压相当

',end=''

)else:

print

('结论:

右臂血压偏高

',end=''

)print

(',

心率的平均值为

{}'.format(res[5][1]))

 

输出结果:

对比项

左臂

右臂

高压最大值

163

155

低压最大值

93

90

压差平均值

61

57

高压平均值

146

140

低压平均值

85

82

结论:

左臂血压偏高

心率的平均值为66

 

要点:

1.这道题的关键问题是解决对行数据按照列的方式来处理

2.参考答案给出的是一般思路,把文件里读出来的数据分别按列的方式,拷贝到一维列表中去,对一维列表进行各种max,min,sum,len操作

4.数据处理的逻辑并不复杂,这里不赘述。

5.其次要解决的问题,是当列数有些多的时候,程序看起来很冗余,需要做一些优化合并;

6.答案里给出的方案是前四个计算公式类似的,放到一个二维列表里,加个循环结构,就可以把四条语句缩成一条。

7.第三个问题,显示输出要求像表格一样输出,又要比较高效率,就引入了一个二维列表,把要输出的行

头和内容,变成列表,再加到二维列表中去

8.最后的显示就变得很容易,一个循环就搞定了。

9.最后的问题,是要对输出的二维表格数据作统计、比对、下结论。

比较好的方法是输出的时候,顺便做计数;

10.显示输出结论的时候,遇到一个小问题,要在做比对后的不同的结论后面,追加一条相同的心率的平

均值,还不能换行;解决的方法就是用end='',然后在最后加一句print心率的结果。

 

11.当然可以在每条结论的后面,都重复的写一句心率的结果,虽然最后的结果是一样的,但代码有冗余。

如果把咱们写程序,比喻成女娲造人,冗余的程序就像胖子,而高效简洁的程序就像美女,咱们还是要追

求造出美女,而不是胖子

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 育儿知识

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1