Python3基础教程实验指导与习题集(微课版)(第2版)答案_第1页
Python3基础教程实验指导与习题集(微课版)(第2版)答案_第2页
Python3基础教程实验指导与习题集(微课版)(第2版)答案_第3页
Python3基础教程实验指导与习题集(微课版)(第2版)答案_第4页
Python3基础教程实验指导与习题集(微课版)(第2版)答案_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

习题参考答案

单元1参考答案

1.选择题答案及解析

1.C

解析:设计Python的灵感来自ABC语言。

2.A

解析:Python语言的特点主要包括:免费、开源;面向对象;良好的跨平台特性;简单易学;

功能强大。

3.C

解析:Python是用ANSIC实现的。

4.C

解析:Python实现了各种数据结构的标准操作,如合并、分片、排序和映射等。

5.D

解析:Python的设计理念是“优雅”“明确”“简单”,提倡“用一种方法,最好只用一种方法来做一

件事”。高效不再是现代程序设计语言的主要设计理念。

6.D

Python3基础教程实览指导与习题集

(微课版)(第2版)

解析:Python已决定于2020年停止对Python2.7的支持,从而使开发人员有充裕的时间过渡

至ijPython3O

7.B

解析:Python2.7是Python2的最后一个版本。

8.C

解析:程序设计语言的发展通常遵循“向后兼容'原则,但Python3.0不再向后兼容,所以它是

目前在Python语言发展过程中最具特殊意义的一个版本。

9.B

解析:在Python2中,字符串中的字符默认为单字节,只支持ASCII字符。在Python3中,

字符串中的字符默认为双字节,支持Unicode字符。

10.D

解析:在Python3中,各种数据类型int、float,str等都是type的子类。数据类型名称作为参

数时,type。函数的执行结果是(class'type'〉,因此type(int)的执行结果是〈class'type'〉。

11.C

解析:在Python3中,选项A是整数,选项B和选项D是小数。Python3不再支持选项C中

的这种Python2中的长整数表示方法。

12.A

解析:在Python3中,不再支持选项A中的这种Python2中的二进制表示方法。选项B是二

进制常量,选项C是八进制常量,选项D是十六进制常量。

_108

习题参考答案

13.C

解析:在Python3中,字典对象的keys。、items。和values。方法返回视图,在Python2中

这些方法返回列表。

14.C

解析Python3中的字典不再支持Python2中的iterkeys。、iteritems()和itervalues()等方法。

15.A

解析:print。是输出函数,语句print('123','456')中的‘123'和'456'作为字符串输出。

16.C

解析:在Python3中,手除法运算返回浮点数,“//”除法运算的结果只保留整数部分。1/2的结

果为0.5,1//2的结果为0o

17.B

解析:Python解释器先将源代码转换为字节码,然后由Python虚拟机解释器执行。

18.D

解析:Python源代码文件的扩展名默认为.py。

19.C

解析:在IDLE交互环境中输入Python命令后,按[Enter]键执行命令。

20.C

解析:本题中,变量a的值为字符串“+123”,将a作为命令执行后,输出结果为』123'。

Python3基础教程实验指导与习题集

(微课版)(第2版)

2.操作题答案及解析

1.示例代码如下。

»>‘你好’

‘你好’

»>print「你好,)

你好

»>len('你好’)

2

>>>u,你好’

‘你好’

>>>print(u'你好’)

你好

>>>len(u'你好')

2

解析:以u作为前缀的是Unicode字符串,采用Unicode编码,它也是Python3的默认编码。

‘你好'和if你好,表示同一个字符串,其长度为2o

2-10.略。

_110

习题参考答案

单元2参考答案

1.选择题答案及解析

1.A

解析:Python使用空格(缩进)来定义代码块。

2.C

解析:Python语言的单行注释以符号*'开始,当前行中符号“毋及其后的内容为注释。单行注

释可以单独占一行,也可放在语句后。多行注释用3个英文的单引号“"”或3个英文的双引号”作

为开始和结束符号。

3.C

解析:以#'开头的内容为单行注释,只能写在一行中

4.C

解析:语句续行符号之后不能有任何其他符号,包括空格和注释。

5.D

解析:Python的关键字包括False、await、else、import、pass、None、break、except、in、

raise、True、class、finally、is、return,and、continue、for、lambda、try、as、def、from、nonlocak

while、assert、dekglobaknot、with、async、elitif、or、yieldo

6.C

解析:input。函数将从键盘输入的内容作为字符串返回,type。函数返回参数的数据类型。

Python3基础教程实览指导与习题集

(微课版)(第2版)

7.C

解析:input。函数将从键盘输入的内容作为字符串返回,输入“3”时,input。函数返回3,所以

a=3,2*a等价于2*3。乘法表达式中的一个操作数是整数、另一个操作数是序列时,执行序列的

复制操作,即将序列复制指定的次数,并连接成新的序列。因此2*3的结果为'33。

8.C

解析:输入数据的过程中,按了[Ctrl+Z]组合键且还输入了其他数据时,不会出错,[Ctrl+Z]

组合键用转义字符“\x1a”表示。如果只输入【Ctrl+Z】组合键,则会发生EOFError。eval(input())组

合使用可输入数字类型的数据。

9.B

解析:print。函数将字符串原样输出,字符串首尾的引号不会输出。

10.C

解析:当两个操作数为数字时,运算符执行加法运算。当两个操作数为字符串时,运算符

执行字符串连接。print。函数将字符串中的字符原样输出,不包括表示字符串的引号。eval()函数返

回字符串中的表达式。C选项等价于print(1+2),输出结果为3oD选项等价于print(12),输出结果

为12o

11.B

解析:在print。函数中,可使用sep参数指定输出数据之间的输出分隔符。

_112

习题参考答案

12.C

解析:print。函数输出多个数据时,默认使用空格分隔数据。它会将字符串原样输出,字符串

首尾的引号不会输出。

13.D

解析:在print。函数中,end参数用于指定输出结束符号,默认为换行符,所以默认情况下

print。函数完成输出后会换行。本题中,print«end=三)中的end参数将输出结束符号设置为符号

“二”,输出结果为“x=",不换行。

14.A

解析:选项A错误,不能以数字作为变量名的首字符。

15.B

解析:选项B错误,不能以数字作为变量名的首字符。

16.D

解析:在序列赋值语句中,当等号右侧为字符串时,Python会将字符串分解为单个字符,依次

赋给各个变量,变量个数与字符个数必须相等。

17.B

解析:在Python中,给变量赋值时,如果变量不存在,则创建该变量。给变量赋值的实质是

将变量绑定到对象,通过变量来引用对象。所以变量必须先赋值,后使用。

18.D

解析:将变量a赋给变量b后,如果通过赋值使b引用不同的对象,则b和a引用不同的对象,

Python3基础教程实览指导与习题集

(微课版)(第2版)

a的值不变。如果a引用一个可变对象,如列表或字典,将变量a赋给变量b后,通过变量b修改

了其引用的可变对象(例如修改了某列表的元素值),变量b和a引用的仍然是同一个列表,只是

其中的元素发生了改变。

19.D

解析:A选项中,a,b=1,2为变量a、b赋不同的值,2为1,b为2。B选项中,b=a=a+2

等价于b=a=1+2,给变量a、b赋相同的值3OC选项中,将a赋值为Falsejnt(a)等价于int(False),

结果为OoD选项中,直接使用变量a,因为没有创建变量a,所以出错。

20.B

解析:执行了x=[1,2,3]和y=x两条语句后,变量x和y引用同一个列表[1,2,3]。执行y[0]=5后,

列表的第1个元素修改为5,即列表变为[5,2,3],所以print(x)输出[5,2,3]。

2.操作题答案及解析

1.示例代码如下。

#改错题

x=-5

ifx>0:

print(xj是正数,)#(2)

else:print(xj不是正数')#(3)

解析:(1)Python的单行注释符号为“铲,不是“〃”。(2)该行为if语句的代码块,print。函数前

面应该缩进。(3)else应该和if对齐,构成完整的if...else语句。

2.示例代码如下。

Itt

输入两条直角边度,求斜边长度

math.sqrt()用于计算平方根

#(1)

_114

习题参考答案

frommathimportsqrt#导入函数

a=eval(input('请输入直角边1的长度:'))#(2)

b=eval(input('请输入直角边2的长度:’))#(3)

ifa<=0:

print('边长必须是正数’)

else:

ifb<=0:

print('边长必须是正数')

else:

print('斜边=",sqrt(a*a+b*b))#(4)

解析:(1)Python的多行注释以…或作为开始和结束符号。(2)和(3)在输入数字时,

通常使用eval()、int()、float。等函数进行转换。(4)"「是语句分隔符号,print。函数中用逗号分隔

数据。

3.示例代码如下。

a=eval(input('请输入第1个数:'))

b=eval(input('请输入第2个数:•))

print('交换前:a=',a,'b=\b)

a,b=b,a#添加的语句

print('交换后:a=',a,'b=\b)

解析:Python在执行赋值语句时,会先计算等号右侧的表达式。例如,a=3,b=4时,a,b=b,a

等价于a,b=4,3,按顺序依次为a、b赋值,即a赋值为4,b赋值为3。所以,a,b=b,a可交换变量

a和b的值。

4.示例代码如下。

print('优雅',end=',')

print('明确',end=',')

print('简单')

解析:参数"end=',”'将逗号设置为print。函数的输出结束符号,从而令3个print。函数的输出

结果在一行中。

5.示例代码如下。

Python3基础教程实览指导与习题集

(微课版)(第2版)

a=l

b=2

c=3

Drint(a,b,c,seD=',')

解析:参数"sep='「将逗号设置为print。函数的输出分隔符。

6.示例代码如下。

_116

习题参考答案

f=open('outtest2-6.txt','w')

print('Python',file=f)

print('Java\file=f)

print('C++',file=f)

f.close()

解析:print。函数中指定file参数时,数据会输出到指定文件中。

7.示例代码如下。

a=eval(input('请输入一个数据:'))

print(a,type(a))

解析:input。函数返回一个字符串,字符串内容为用户输入的数据。eval。函数可去掉字

符串的引号,获得字符串的内容,从而获得用户输入的数据。type。函数可返回数据的数据类

型信息。

8.示例代码如下。

a,b,c=eval(input('请输入3个数:'))

ifa<b:

a,b=b,a

ifa<c:

a,c=c,a

ifb<c:

b,c=c,b

print(a,b,c)

解析:添加的语句利用了序列赋值,输入的数据使用逗号分隔。例如,在输入“1,2,3”时,该语

句等价于a,b,c=eval('1,2,31),eval()函数去掉字符串的引号后,该语句等价于a,b,c=1,2,3,从而将

输入的3个数据依次赋给变量。

9.示例代码如下。

importmath

a=eval(input('请输入三角形的边长a:'))

b=eval(input('请输入三角形的边长b:'))

c=eval(input('请输入三角形的边长c:'))

p=(a+b+c)/2

S=math.sqrt(p*(p-a)*(p-b)*(p-c))

Python3基础教程实览指导与习题集

(微课版)(第2版)

print('三角形的面积=',S)

10.示例代码如下。

a,*b=eval(input('请输入多个数字:'))

print('和=',a+sum(b))

解析:在使用序列赋值时,如果变量前面有星号作为前缀,表示该变量是一个列表,可接收多

个值。例如:

a,31,2,3,4

执行以上代码后,a=1,b=[2,3,4]o

单元3参考答案

1.选择题答案及解析

1.A

解析:Python的基本数字类型包括int、float、complex.,另外,bool是int的子类型,decimal

模块提供了小数类型Decimal,fractions模块提供了分数类型Fractiono

2.D

解析:二进制数据以“0b”或“0B”开头,它们后面是二进制数字(0或1)□例如,0b101.0B11o

3.C

解析:复数由实部和虚部组成,complex(2.5)生成的复数为2.5+0j,其输出结果为(2.5+0j)。

4.C

解析:浮点数类型用于表示带有小数的数据,小数部分可以为0o浮点数与数学中实数的概念

一致。

_118

习题参考答案

5.D

解析:浮点数的指数形式需要使用e或E。例如,1.23e+10、1.23E-10。

6.D

解析:程序中的小数对象的精度默认由全局精度决定,上下文对象的prec属性用于设置全局精

度,改变prec属性意味着其言的代码中的小数对象使用不同的精度。在with模块中可以设置小数

对象的临时精度。

7.B

解析:分数对象的分子和分母会自动计算为最简。

8.B

解析:bool是int的子类型,参与数字计算时True为1,False为0。复数的real属性返回其

实部,imag属性返回其虚部。本题中的表达式等价于10+1+0.0,计算结果为11.0。

9.D

解析:“x%y”用于计算x除以y的余数,余数符号与y的符号一致。若存在一个操作数为浮点

数,则计算结果为浮点数,否则为整数。

10.A

解析:x<y>1是Python比较运算表达式的缩写,等价于x<yandy>1,其计算结果为Trueo

11.C

解析:round。函数基本语法格式为round(number[,ndigits])o指定ndigits时,若返回一个浮点

数,贝『四舍五人"到它指定的小数位数。ndigits大于0时,在小数部分舍入。ndigits小于0时,舍

Python3基础教程实览指导与习题集

(微课版)(第2版)

入到整数部分,小数部分为Oo未指定ndigits时,返回离number最近的整数。

12.C

解析:math.ceil(n)返回不少于n的最小整数。

13.A

解析:A选项错误,type。函数用于获取对象的类型。B选项正确,转义符用于在字符串中包含

单引号、双引号或其他的一些特殊符号。C选项正确,字符串'\0'中的'。表示一个空字符,所以其长

度为1oD选项正确,Python3中,str类型的字符串采用Unicode编码,可包含汉字。

14.A

解析:len(s)返回对象包含的元素个数。本题中,len(”Python\t编程。返回字符串中的字符个数

9o

15.D

解析:字符串比较大小时依次比较相同位置的字符,字符按字典顺序比较大小;相同位置的字

符均相同时,更长的字符串更大。

16.D

解析:字符串切片的基本语法格式为x[start:end:step],表示返回字符串x中从偏移量start开

始,到偏移量end之前的子字符串,依次跳过中间的step-1个字符。step、start和end参数均可

省略,start默认为0,end默认为字符串长度,step默认为1。本题中,s卜6:]返回字符串倒数第6

个字符到末尾字符的子字符串,即“Python”。

17.C

_120

习题参考答案

解析:与16题类似,本题中a⑼为“Pyth”,斗3:]为“ing",所以正确答案为Co

18.A

解析:Python3的字符采用双字节的Unicode编码,Python2的字符默认采用单字节的ASCII

编码。chr()函数返回Unicode值对应的字符,ord()函数返回字符的Unicode值。

19.D

解析:字符串的format。方法中,'{0:0<8}'中的“0<8”表示用字符0填充,字符串的宽度为8,并

且左对齐。

20.D

解析:'{0:3}'指定第一个参数的输出宽度最小为3,第一个参数'123456'的长度为6,所以6个

字符全部输出。

2.操作题答案及解析

1.示例代码如下。

a,b=eval(input('请输入两个数:,))

print(a,'+',b,,a+b)

print(a,'-''=',a-b)

print(a^'=',a*b)

print(a,'/''=',round(a/b,2))

解析:round(a/b,2)函数将除法运算的结果保留2位小数。

2.示例代码如下。

a,b=eval(input('请输入两个整数:'))

y=a%b

x=int(a/b)

print(aj除以',b,'的商:',x)

print(aj除以的余数:,,y)

Python3基础教程实验指导与习题集

(微课版)(第2版)

解析:a%b的结果为a除以b的余数,a/b的结果为浮点数,用int()将其转换为整数(取其整

数部分卜

3.示例代码如下。

a=eval(input('请输入一个不大于255的正整数:,))

print(,二进制:{:08b}'.fornat(a))

print('八进制:{:08o}'.fornat(a))

print('十六进制:{:08X},.format(a))

解析:{:08b}将参数转换为8位二进制字符串,用0填充。{:08。}将参数转换为8位八进制字符

串,用0填充。{:08X}将参数转换为8位十六进制字符串,用0填充。

4.示例代码如下。

a=eval(input('请输入一个不大于255的正整数:,))

b=bin(a)[2:].zfill(8)

print(,二进制:%s,%b)

print('八进制:%08o'%a)

print('十六进制:%08X'%a)

解析:使用%格式化字符串时,%080将参数转换为8位八进制字符串,%08X将参数转换为8

位十六进制字符串。%格式化字符串时不能直接将参数转换为二进制字符串,所以以上代码使用了

bin()函数来进行转换。zfill()方法通过填充0将字符串的宽度增加为8o

5.示例代码如下。

importmath

a,b,c=eval(input('请输入方程的系数a,b,c:'))

d-b*b-4*a*c

ifd>0:

xl=(-b+niath.sqrt(d))/(2*a)

x2=(-b-math.sqrt(d))/(2:*a)

print('方程的解xl=%.2f'%x:L)

print('方程的解x2=%.2f'%x2)

ifd==0:

print('方程的解xl=x2=%.2F%(-b/(2*a)))

ifd<0:

xl=-b/(2*a)

x2=math.sqrt(-d)/(2*a)

_122

习题参考答案

('方程的解,

printxl=%.2f+%.2fj%(xl,x2))

print('方程的解x2=%.2f-%.2fj'%(xl,x2))

解析:%.2f可将浮点数保留2位小数。math.sqrt。函数用于求平方根。

6.示例代码如下。

a=input「请输入一个字符串:')

c=max(a)

print('最大字符为:%c,其索引为:%d,%(c,a.index(c)))

解析:max(a)函数可返回字符串中的最大字符,a.index(c)返回字符串c在a中第一次出现时的

索引。

7.示例代码如下。

a=input('请输入多种水果名称:,)

b=a.replace(''\n*)

print(b)

解析:a.r6place「,'\n)将字符串中的空格替换为换行符,从而在输出时实现换行。

8.示例代码如下。

a=input('造输入一个词语:')

print('{:_A20}'.format(a))

解析:在format。方法的格式控制符中,“人”表示居中,{:「20}表示宽度为20、居中对齐、用下

划线填充。

9.示例代码如下。

a='123456789,

n=len(a)

m=2

print('%21c,%,l,)#输出第1行

whilem<=n:

print(',*(21-m),end=")#输出每行前面的空格

print(.format(a1:ml:-11))

m+=l

解析:数字金字塔的第1行比较特殊,只输出一个数字,所以单独处理。'"21-m)生成每行前

Python3基础教程实览指导与习题集

(微课版)(第2版)

面的空格,end=“表示不换行。a[:m]用于取得每行数字的前半部分,用于取得每行数字的

后半部分。

10.示例代码如下。

n=4

m=5

whilen>=l:

print(.formats'"m,'*'*(2*n-l)))

n-=l

m+=l

解析:***m生成每行前面的空格,生成要输出的星号。

单元4参考答案

1.选择题答案及解析

1.D

解析:集合中的元素是无序的、不允许重复的,序列对象中的元素可以重复。映射类型对象中

的关键字可以是不同类型的数据。

2.D

解析:set()函数用于创建集合对象,字符串作为参数时,该函数将字符串中的每个字符作为一

个集合元素,相同的字符只在集合中出现一次。

3.B

解析:本题中,a-b等价于{1,2,3}-{3,4,5},计算差集,结果为{1,2}。

4.B

解析:a.remove(2)用于从集合中删除值为2的元素,集合变为{1,3}。

_124

习题参考答案

5.B

解析:本题中,list(range(10))使用range对象创建列表,生成的列表为[0,1,2,3,4,5,6,7,8,

9]o5inIt用于判断列表It中是否包含5,结果为True。

6.C

解析:本题中,序列为[1J24”,[4,”567189],设其为a,则a⑵返回[4,“567”],[4,“567”『1]

返回“567“,“567”[1]返回"6"。所以正确答案为Co

7.D

解析:选项D错误,字符串中的字符是有序的。

8.D

解析:a=list('abc')语句序字符串创建列表,等价于a=['a',b,'c']。"#".join(a+[1,'21)用字符*'

将列表元素连接成一个字符串,等价于#.joindaTb'Jc',T,2])。

9.A

解析:a=[1,2],执行a.append⑶后,a=[1,2,3]o此时列表长度为3。a.insert(3,[4,5]^[4,5]

作为一个元素添加到列表末尾,执行后a=[1,2,3,[4,5]]o

10.A

解析:选项A错误,clear。方法用于删除列表的所有元素。

11.D

解析:list。函数可使用可迭代对象作为参数来创建列表。index(x,m,n)方法在[m:n]索引范围内

查找x,返回其第一次出现时的索引,m和n均可省略。811nt(x)方法返回序列中x出现的次数。

Python3基础教程实览指导与习题集

(微课版)(第2版)

12.C

解析:reverse。是列表的方法,只有在输入数据为列表时,本题的程序才会正常运行。本题中

输入数据为123,lt.reverse()执行出错,程序跳转到异常处理的except部分执行,输出“输入错

误"。

13.C

解析:序列长度指序列包含的元素个数。本题中,变量t引用的元组包括3个元素,即1、(2,3)

和(4,[5,6,7]),所以输出结果为3o

14.B

解析:本题中,x.index(2,3)等价于(1,2,3,1,2,3,1,2,3).index(2,3),从元组中索引为3的元

素开始到元组末尾,查找2第一次出现时的索引,结果为4o

15.B

解析:字典中的元素使用键值对中的键来索引映射的值。本题中,color「red”]返回“红色”。get()

方法返回键映射的值,如果键不存在,返回空值,可用default参数指定键不存在时的返回值。本题

中,color.get”lue?黄色')返回"蓝色

16.A

解析:字典的键通常采用字符串,也可以用数字、元组等不可变类型的数据。字典的值可以是

任意类型。选项A中使用了列表作为键,所以错误。

17.D

解析:字典中的键不能重复,值可以重复。

_126

习题参考答案

18.B

解析:字典按键进行迭代,所以正确答案为Bo

19.A

解析:本题中,mn是一个字典对象。代码运行时,可输入一个整数(1~12)来表小月份,然

后从字典中获得对应的月份名称,并将其输出。

20.D

解析:选项D中,cs[a]=cs.get(a,0)+1语句可为字典元素赋值,如果字典cs中不存在变量a

中的键,则在字典中添加该键,其值为所赋的值。cs.get(aQ)方法读取字典cs中变量a中的键所映

射的值,键不存在时,返回默认值0o所以,cs[a]=cs.get(a,O)+1语句可实现字符的计数。

2.操作题答案及解析

1.0eval(,{,+a+'}')②b.remove(c)③b.add(c)

2.①list(a)②list(set(b))

解析:list(set(b))先用列表b创建集合(可自动去掉重复元素),再将其转换为列表。

3.0b.insert(O,a)@b.sort(reverse=True)

解析:采用ajb=eval(input())赋值时,a的值为输入的第1个数,剩余的数作为列表赋给b,

所以需要用b.insert(O,a)将第1个数添加到列表开头。reverse=True表示列表按元素从大到小的顺

序排序。

4.①int(input('请输入一个整数:'))②aind③d.pop(a)

解析:字典的键是整数,所以应用int()函数转换输入的数据。“aind”在字典d的键包含变量a

Python3基础教程实验指导与习题集

(微课版)(第2版)

的值时返回True,否则返回Fasleod.pop(a)按变量a的值在字典中查找键,删除对应键值对,并

返回其映射的值。

5.示例代码及解析如下。

a=input('请输入一串字符:,)

b=list(set(a))#获得不重复字符的列表

b.sort()#对不重复字符排序

cs=[]

forcinb:

cs.append((c,a.count(c)))#将字符及其出现次数作为元组添加到列表中

n=n+l

fork,vincs:#迭代列表中的元组

print(k,':',v)

6.示例代码及解析如下。

a=input('请输入一组词语(用空格分隔):’)

ds=a.split('')#将字符串分解为列表

cs={}

forcinds:#迭代列表中的词语

cs[c]=cs.get(c,0)+l#get(c,0)从字典中取c映射的值(即C出现次数,没有时取0)再加1

forkincs:

print(k,':',cs[k])#输出词语及其出现次数

7.示例代码及解析如下。

a=input(,请输入一串英文字符:。

d=list(a)#将字符串转换为列表

n=0

forcind:#执行加密操作

d[n]=chr(ord(c)+3)#获得字符的ASCII值,加3,再转换为字符

n+=l

print('加密后:',end=")

forcind:

print(c,end='')

8.示例代码及解析如下。

#将姓名和成绩以二元组的方式存入列表中

s=[('Powell',9.74),('Green',9.79),('Bolt',9.69),('Burrell',9.85),('Montgomery',9.78),('Lewis',9.86)]

defgets(a):#返回元组的第2个元素,即成绩

returna[l]

s.sort(key=gets)#指定列表排序关键字,并对二元组中的成绩排序

_128

习题参考答案

n=l

print("%-4s%-10s成绩"%('名次','姓名‘))

fork,vins:

print("%-6s%-12s%s"%(n,k,v))#格式化输出名次、姓名和成绩

n+=l#计算名次

9.示例代码及解析如下。

d-f'O':'h',*1':'n*,'2':'b','3':'x','4':'m',#将密码本定义为字典

a=input("请输入一组整数(用空格分隔):“)

b=a.split('')#将输入的数据转换为列表

rs=[]

forcinb:#遍历列表

e="

forfinc:#转换每个数

e+=d[f]

rs.append(e)#将转换结果存入列表中

print('加密后:'.join(rs))#输出转换结果

10.示例代码及解析如下。

#用集合存储两组商品数据,用集合运算获得商品信息

a={('苹果',5.5),(香蕉',4.8),(山竹',12.5),(西瓜',5.6),(梨',4.5)}

b={('山竹’,12.5),('梨',4.5),(‘冬枣’,8.5)}

print('(1)同时属于表4-1利表4-2的商品’)

r=a&b#求交集,获得同时属于表4-1和表4-2的商品

fork,vinr:#用两个变量法代集合中的二元组

print(',,k/\t',v)

print('(2)属于表4-1但不属于表4-2的商品’)

r=a-b#求差集,获得属于表4-1但不属于表4-2的商品

fork,vinr:

printC,v)

print('(3)属于表4-1且不属于表4-2,或者属于表4-2且不属于表4-1的商品,)

r=a"b#求对称差,获得属于表A且不属于表B,或者属于表B且不属于表A的商品

fork,vinr:

print('

c=input("请输入商品名称:")

r=dict(a|b)#求并集,获得全部商品信息,用其创建字典,以便查询

ifcInr:并用In检查输入的商品名称是否在两个表中存在

print(cj价格为:

else:

print(,表A和表B中没有商品:’,c)

Python3基础教程实览指导与习题集

(微课版)(第2版)

单元5参考答案

1.选择题答案及解析

1.A

解析:x=list()创建了一个空列表,所以ifx等价于ifQ,空列表转换为逻辑值False,所以if语

句的条件不成立,不会执行y=1,v的值仍然为之前赋的Oo

2.B

解析:本题中,x的值为{1},“ifx:”等价于"if{1}:",非空集合转换为逻辑值True,所以if语句的

条件成立,执行y=1,输出结果为1o

3.D

解析:本题考查多分支if语句。多分支if语句依次判断各个条件表达式的计算结果是否为Trueo

本预中输入“12”,所以if语句中,x==*1;x==2和x==3的计算结果均为False,所以执行else部

分的语句,输出Other。

4.A

解析:三元表达式“aifbelsec”在b为True时返回a的值,否则返回c的值。

5.A

解析:三元表达式“aifbelsec”在b为True时返回a的值,否则返回c的值。

6.D

解析:循环forbina依次将a中的对象赋给boa=['123?456',789[,a[n][n]返回a中的第n-1

个字符串中的第n-1个字符。s+=a[n][n],s的初始值为0,不能和a[n][n]返回的字符做加法运算,

_130

习题参考答案

程序运行出错。要让程序正碓运行,可将“s=0”替换为“s二"”。

7.C

解析:a=range(10)生成的range对象包含的元素依次为0、1、2、3、4、5、6、7、8、9,a[::-2]

返回的range对象包含的兀素依次为9、7、5、3、1,所以reversed(a[::・2])返回的range对象包

含的元素依次为1、3、5、7、9o

8.B

解析:whilen%4!=0中,表达式在n除以4的余数不等于0时成立,n的初始值为1,在循环

中n的值每次增加1,所以n的值分别为1、2、3时,循环条件成立,执行循环体,n为4时,循

环条件不成立,循环结束。所以变量s中累加了1、2、3,输出结果为6。

9.C

解析:在for和while循环的循环体中,break语句用于跳出当前循环,即提前结束循环(包括

跳过else语句卜continue语句则用于跳过循环体剩余语句,开始下一次循环。

10.C

解析:本题中,for循环用于迭代range对象,range(8)的取值范围为[0,7]内的整数,for循环

输出其中的偶数。

11.B

解析:程序的功能是遍历列表,将其中包含字符b的字符串输出,所有字符串输出在一行。

12.C

解析:程序的功能是遍历列表,将其中的偶数输出,所有偶数输出在一行。

Python3基础教程实览指导与习题集

(微课版)(第2版)

13.C

解析:本题代码分析如下。

whilen<=10:扣的值可取0、1、2.......10

n=n+l#门的值可取1、2.......11

ifn%2==0:#在门为偶数时条件成立

continue#n为偶数,即2、4、6、8、10时,结束当前层次循环,开始卜次循环

s=s+n加的值可取1、3、5、7、9、11

所以代码输出结果为36o

14.C

解析:异常是程序在运行过程中发生的错误,如索引列表时使用的索引超出范围、访问的文件

不存在等。所以选项C错误。

15.A

解析:在Python异常处理结构中,可能发生异常的代码应放在try语句。

16.B

解析:Python的异常处理结构中,else和finally语句均可省略。异常处理结构可捕捉try语句

发生的异常,try语句之外的异常不能捕捉。

17.A

解析:在异常处理结构的except语句中指定异常类型名称,从而捕捉特定类型异常。

18.C

解析:while循环第1次循环中,x=1,y=1,y<=5成立,执行x=x*y=1*1=1,y=y+2=1+2=3o

while循环第2次循环中,x=1,y=3,y<=5成立,执行x=x*y=1*3=3,y=y+2=3+2=5owhile循环

第3次循环中,x=3,y=5,y<=5成立,执行x=x*y=3*5=15,y=y+2=5+2=7owhile循环第4次循

_132

习题参考答案

环中,x=15,y=7,y<=5不成立,不执行循环体,执行print(x),输出15。

19.D

解析:Python语言的基本控制结构包括if语句(用于实现分支结构),for循环(用于实现循环\

while循环(可实现无限循环入try语句(用于实现异常处埋卜Python没有goto语句。

20.B

解析:if…elif也可实现双分支结构。

2.操作题答案及解析

1.®x//2<=n②x+=2

2.®s=0②inrange。,101)

3.①inrange(1,n-1)②a,b=b,a+b

4.①s=1②x*=i

5.①xv=n②x+=1

6.示例代码如下。

#用列表表示矩阵

d=[[l,2,3,4,5],[10,9,8,7,6],[11,12,13,14,15]

,[20,19,18,17,16],[21,22,23,24,25]]

s=0

foraind:#遍历列表,计算所有元素之和

forbina:

s+=b

print('所有元素之和=',s)

sz=sc=0

foriinrange(5):

sz+=d[i][i]#计算主对角线元素之和

sc+=d[i][4-i]#计算次对角线元素之和

print('主对角线元素之和=',sz)

print('次对角线元素之和=',sz)

Python3基础教程实览指导与习题集

(微课版)(第2版)

7.示例代码如下。

a,b=eval(input('请输入两个整数a、b:'))

x,y=a,b

a=max(x,y)

b=min(x,y)

d=a%b

whiled!=0:#余数为。时,b为最大公约数

a=b

b=d

d=a%b

print('%s,%s的最大公约数%s'%(x,y,b))

print('%s,%s的最小公倍数%s'%(x,y,x*y〃b))

解析:用辗转相除法求最大公约数。

8.示例代码如下。

forninrange(100,1000):

a=n//160件获得百位上的数字

b=n%100//10#获得十位上的数字

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论