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

下载本文档

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

文档简介

Python3基础教程实验指导与习题集(微课版)(第2版)Python3基础教程实验指导与习题集(微课版)(第2版)STYLEREF"标题1s"习题参考答案STYLEREF"标题1s"习题参考答案STYLEREF"标题1"PAGE144PAGE143习题参考答案单元1参考答案1.选择题答案及解析1.C解析:设计Python的灵感来自ABC语言。2.A解析:Python语言的特点主要包括:免费、开源;面向对象;良好的跨平台特性;简单易学;功能强大。3.C解析:Python是用ANSIC实现的。4.C解析:Python实现了各种数据结构的标准操作,如合并、分片、排序和映射等。5.D解析:Python的设计理念是“优雅”“明确”“简单”,提倡“用一种方法,最好只用一种方法来做一件事”。高效不再是现代程序设计语言的主要设计理念。6.D解析:Python已决定于2020年停止对Python2.7的支持,从而使开发人员有充裕的时间过渡到Python3。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是十六进制常量。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的结果为0。17.B解析:Python解释器先将源代码转换为字节码,然后由Python虚拟机解释器执行。18.D解析:Python源代码文件的扩展名默认为.py。19.C解析:在IDLE交互环境中输入Python命令后,按【Enter】键执行命令。20.C解析:本题中,变量a的值为字符串"+123",将a作为命令执行后,输出结果为'+123'。2.操作题答案及解析1.示例代码如下。>>>

'你好''你好'>>>

print('你好')你好>>>

len('你好')2>>>

u'你好''你好'>>>

print(u'你好')你好>>>

len(u'你好')2解析:以u作为前缀的是Unicode字符串,采用Unicode编码,它也是Python3的默认编码。'你好'和u'你好'表示同一个字符串,其长度为2。2~10.略。单元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、nonlocal、while、assert、del、global、not、with、async、elif、if、or、yield。6.C解析:input()函数将从键盘输入的内容作为字符串返回,type()函数返回参数的数据类型。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),输出结果为3。D选项等价于print(12),输出结果为12。11.B解析:在print()函数中,可使用sep参数指定输出数据之间的输出分隔符。12.C解析:print()函数输出多个数据时,默认使用空格分隔数据。它会将字符串原样输出,字符串首尾的引号不会输出。13.D解析:在print()函数中,end参数用于指定输出结束符号,默认为换行符,所以默认情况下print()函数完成输出后会换行。本题中,print('x',end='=')中的end参数将输出结束符号设置为符号“=”,输出结果为“x=”,不换行。14.A解析:选项A错误,不能以数字作为变量名的首字符。15.B解析:选项B错误,不能以数字作为变量名的首字符。16.D解析:在序列赋值语句中,当等号右侧为字符串时,Python会将字符串分解为单个字符,依次赋给各个变量,变量个数与字符个数必须相等。17.B解析:在Python中,给变量赋值时,如果变量不存在,则创建该变量。给变量赋值的实质是将变量绑定到对象,通过变量来引用对象。所以变量必须先赋值,后使用。18.D解析:将变量a赋给变量b后,如果通过赋值使b引用不同的对象,则b和a引用不同的对象,a的值不变。如果a引用一个可变对象,如列表或字典,将变量a赋给变量b后,通过变量b修改了其引用的可变对象(例如修改了某列表的元素值),变量b和a引用的仍然是同一个列表,只是其中的元素发生了改变。19.D解析:A选项中,a,b=1,2为变量a、b赋不同的值,a为1,b为2。B选项中,b=a=a+2等价于b=a=1+2,给变量a、b赋相同的值3。C选项中,将a赋值为False,int(a)等价于int(False),结果为0。D选项中,直接使用变量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=-5if

x>0:

print(x,'是正数') #(2)else:print(x,'不是正数') #(3)解析:(1)Python的单行注释符号为“#”,不是“//”。(2)该行为if语句的代码块,print()函数前面应该缩进。(3)else应该和if对齐,构成完整的if…else语句。2.示例代码如下。'''输入两条直角边度,求斜边长度math.sqrt()用于计算平方根''' #(1)

from

math

import

sqrt

#导入函数a=eval(input('请输入直角边1的长度:')) #(2)b=eval(input('请输入直角边2的长度:')) #(3)if

a<=0:

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

if

b<=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.示例代码如下。a=1b=2c=3print(a,b,c,sep=',')解析:参数“sep=','”将逗号设置为print()函数的输出分隔符。6.示例代码如下。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个数:'))if

a<b:

a,b=b,aif

a<c:

a,c=c,aif

b<c:

b,c=c,bprint(a,b,c)解析:添加的语句利用了序列赋值,输入的数据使用逗号分隔。例如,在输入“1,2,3”时,该语句等价于a,b,c=eval('1,2,3'),eval()函数去掉字符串的引号后,该语句等价于a,b,c=1,2,3,从而将输入的3个数据依次赋给变量。9.示例代码如下。import

matha=eval(input('请输入三角形的边长a:'))b=eval(input('请输入三角形的边长b:'))c=eval(input('请输入三角形的边长c:'))p=(a+b+c)/2S=math.sqrt(p*(p-a)*(p-b)*(p-c))print('三角形的面积=',S)10.示例代码如下。a,*b=eval(input('请输入多个数字:'))print('和=',a+sum(b))解析:在使用序列赋值时,如果变量前面有星号作为前缀,表示该变量是一个列表,可接收多个值。例如:a,*b=1,2,3,4执行以上代码后,a=1,b=[2,3,4]。单元3参考答案1.选择题答案及解析1.A解析:Python的基本数字类型包括int、float、complex。另外,bool是int的子类型,decimal模块提供了小数类型Decimal,fractions模块提供了分数类型Fraction。2.D解析:二进制数据以“0b”或“0B”开头,它们后面是二进制数字(0或1)。例如,0b101、0B11。3.C解析:复数由实部和虚部组成,complex(2.5)生成的复数为2.5+0j,其输出结果为(2.5+0j)。4.C解析:浮点数类型用于表示带有小数的数据,小数部分可以为0。浮点数与数学中实数的概念一致。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,其计算结果为True。11.C解析:round()函数基本语法格式为round(number[,ndigits])。指定ndigits时,若返回一个浮点数,则“四舍五入”到它指定的小数位数。ndigits大于0时,在小数部分舍入。ndigits小于0时,舍入到整数部分,小数部分为0。未指定ndigits时,返回离number最近的整数。12.C解析:math.ceil(n)返回不小于n的最小整数。13.A解析:A选项错误,type()函数用于获取对象的类型。B选项正确,转义符用于在字符串中包含单引号、双引号或其他的一些特殊符号。C选项正确,字符串'\0'中的\0表示一个空字符,所以其长度为1。D选项正确,Python3中,str类型的字符串采用Unicode编码,可包含汉字。14.A解析:len(s)返回对象包含的元素个数。本题中,len("Python\t编程")返回字符串中的字符个数9。15.D解析:字符串比较大小时依次比较相同位置的字符,字符按字典顺序比较大小;相同位置的字符均相同时,更长的字符串更大。16.D解开始,到偏移量end之前的子字符串,依次跳过中间的step-1个字符。step、start和end参数均可省略,start默认为0,end默认为字符串长度,step默认为1。本题中,s[–6:]返回字符串倒数第6个字符到末尾字符的子字符串,即“Python”。17.C解析:与16题类似,本题中a[:4]为“Pyth”,a[-3:]为”ing”,所以正确答案为C。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,'-',b,'=',a-b)print(a,'*',b,'=',a*b)print(a,'/',b,'=',round(a/b,2))解析:round(a/b,2)函数将除法运算的结果保留2位小数。2.示例代码如下。a,b=eval(input('请输入两个整数:'))y=a%bx=int(a/b)print(a,'除以',b,'的商:',x)print(a,'除以',b,'的余数:',y)解析:a%b的结果为a除以b的余数,a/b的结果为浮点数,用int()将其转换为整数(取其整数部分)。3.示例代码如下。a=eval(input('请输入一个不大于255的正整数:'))print('

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

八进制:{:08o}'.format(a))print('十六进制:{:08X}'.format(a))解析:{:08b}将参数转换为8位二进制字符串,用0填充。{:08o}将参数转换为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)解析:使用%格式化字符串时,%08o将参数转换为8位八进制字符串,%08X将参数转换为8位十六进制字符串。%格式化字符串时不能直接将参数转换为二进制字符串,所以以上代码使用了bin()函数来进行转换。zfill()方法通过填充0将字符串的宽度增加为8。5.示例代码如下。import

matha,b,c=eval(input('请输入方程的系数a,b,c:'))d=b*b-4*a*cif

d>0:

x1=(-b+math.sqrt(d))/(2*a)

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

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

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

d==0:

print('方程的解x1=x2=%.2f'%(-b/(2*a)))if

d<0:

x1=-b/(2*a)

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

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

print('方程的解x2=%.2f-%.2fj'%(x1,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.replace('','\n')将字符串中的空格替换为换行符,从而在输出时实现换行。8.示例代码如下。a=input('请输入一个词语:')print('{:_^20}'.format(a))解析:在format()方法的格式控制符中,“^”表示居中,{:_^20}表示宽度为20、居中对齐、用下划线填充。9.示例代码如下。a='123456789'n=len(a)m=2print('%21c'%'1') #输出第1行while

m<=n:

print('

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

print('{}{}'.format(a[:m],a[m-2::-1]))

m+=1解析:数字金字塔的第1行比较特殊,只输出一个数字,所以单独处理。''*(21-m)生成每行前面的空格,end=''表示不换行。a[:m]用于取得每行数字的前半部分,a[m-2::-1]用于取得每行数字的后半部分。10.示例代码如下。n=4m=5while

n>=1:

print('{}{}'.format('

'*m,'*'*(2*n-1)))

n-=1

m+=1解析:''*m生成每行前面的空格,'*'*(2*n-1)生成要输出的星号。单元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}。5.B解析:本题中,list(range(10))使用range对象创建列表,生成的列表为[0,1,2,3,4,5,6,7,8,9]。5inlt用于判断列表lt中是否包含5,结果为True。6.C解析:本题中,序列为[1,"24",[4,"567"],89],设其为a,则a[2]返回[4,"567"],[4,"567"][-1]返回"567","567"[1]返回"6"。所以正确答案为C。7.D解析:选项D错误,字符串中的字符是有序的。8.D解析:a=list('abc')语句用字符串创建列表,等价于a=['a','b','c']。"#".join(a+['1','2'])用字符“#”将列表元素连接成一个字符串,等价于"#".join(['a','b','c','1','2'])。9.A解析:a=[1,2],执行a.append(3)后,a=[1,2,3]。此时列表长度为3。a.insert(3,[4,5])将[4,5]作为一个元素添加到列表末尾,执行后a=[1,2,3,[4,5]]。10.A解析:选项A错误,clear()方法用于删除列表的所有元素。11.D解析:list()函数可使用可迭代对象作为参数来创建列表。index(x,m,n)方法在[m:n]索引范围内查找x,返回其第一次出现时的索引,m和n均可省略。count(x)方法返回序列中x出现的次数。12.C解析:reverse()是列表的方法,只有在输入数据为列表时,本题的程序才会正常运行。本题中输入数据为1,2,3,lt.reverse()执行出错,程序跳转到异常处理的except部分执行,输出“输入错误”。13.C解析:序列长度指序列包含的元素个数。本题中,变量t引用的元组包括3个元素,即1、(2,3)和(4,[5,6,7]),所以输出结果为3。14.B解析:本题中,x.index(2,3)等价于(1,2,3,1,2,3,1,2,3).index(2,3),从元组中索引为3的元素开始到元组末尾,查找2第一次出现时的索引,结果为4。15.B解析:字典中的元素使用键值对中的键来索引映射的值。本题中,color["red"]返回“红色”。get()方法返回键映射的值,如果键不存在,返回空值,可用default参数指定键不存在时的返回值。本题中,color.get('blue','黄色')返回“蓝色”。16.A解析:字典的键通常采用字符串,也可以用数字、元组等不可变类型的数据。字典的值可以是任意类型。选项A中使用了列表作为键,所以错误。17.D解析:字典中的键不能重复,值可以重复。18.B解析:字典按键进行迭代,所以正确答案为B。19.A解析:本题中,mn是一个字典对象。代码运行时,可输入一个整数(1~12)来表示月份,然后从字典中获得对应的月份名称,并将其输出。20.D解析:选项D中,cs[a]=cs.get(a,0)+1语句可为字典元素赋值,如果字典cs中不存在变量a中的键,则在字典中添加该键,其值为所赋的值。cs.get(a,0)方法读取字典cs中变量a中的键所映射的值,键不存在时,返回默认值0。所以,cs[a]=cs.get(a,0)+1语句可实现字符的计数。2.操作题答案及解析1.①eval('{'+a+'}') ②b.remove(c) ③b.add(c)2.①list(a) ②list(set(b))解析:list(set(b))先用列表b创建集合(可自动去掉重复元素),再将其转换为列表。3.①b.insert(0,a) ②b.sort(reverse=True)解析:采用a,*b=eval(input())赋值时,a的值为输入的第1个数,剩余的数作为列表赋给b,所以需要用b.insert(0,a)将第1个数添加到列表开头。reverse=True表示列表按元素从大到小的顺序排序。4.①int(input('请输入一个整数:')) ②aind ③d.pop(a)解析:字典的键是整数,所以应用int()函数转换输入的数据。“aind”在字典d的键包含变量a的值时返回True,否则返回Fasle。d.pop(a)按变量a的值在字典中查找键,删除对应键值对,并返回其映射的值。5.示例代码及解析如下。a=input('请输入一串字符:')b=list(set(a)) #获得不重复字符的列表b.sort() #对不重复字符排序cs=[]n=0for

c

in

b:

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

n=n+1for

k,v

in

cs: #迭代列表中的元组

print(k,':',v) 6.示例代码及解析如下。a=input('请输入一组词语(用空格分隔):')ds=a.split('

')

#将字符串分解为列表cs={}for

c

in

ds:

#迭代列表中的词语

cs[c]=cs.get(c,0)+1

#get(c,0)从字典中取c映射的值(即C出现次数,没有时取0)再加1for

k

in

cs:

print(k,':',cs[k])

#输出词语及其出现次数7.示例代码及解析如下。a=input('请输入一串英文字符:')d=list(a)

#将字符串转换为列表n=0for

c

in

d:

#执行加密操作

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

n+=1print('加密后:',end='')for

c

in

d:

print(c,end='')8.示例代码及解析如下。#将姓名和成绩以二元组的方式存入列表中s=def

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

return

a[1]s.sort(key=gets) #指定列表排序关键字,并对二元组中的成绩排序n=1print("%-4s%-10s成绩"

%

('名次','姓名')) for

k,v

in

s:

print("%-6s%-12s%s"

%(n,k,v)) #格式化输出名次、姓名和成绩

n+=1 #计算名次9.示例代码及解析如下。d={'0':'h','1':'n','2':'b','3':'x','4':'m', #将密码本定义为字典

'5':'a','6':'q','7':'f','8':'e','9':'y'}a=input("请输入一组整数(用空格分隔):")b=a.split('

')

#将输入的数据转换为列表rs=[]for

c

in

b:

#遍历列表

e=''

for

f

in

c: #转换每个数

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的商品for

k,v

in

r: #用两个变量迭代集合中的二元组

print('

',k,'\t',v)print('(2)属于表4-1但不属于表4-2的商品')r=a-b #求差集,获得属于表4-1但不属于表4-2的商品for

k,v

in

r:

print('

',k,'\t',v)print('(3)属于表4-1且不属于表4-2,或者属于表4-2且不属于表4-1的商品')r=a^b #求对称差,获得属于表A且不属于表B,或者属于表B且不属于表A的商品for

k,v

in

r:

print('

',k,'\t',v)c=input("请输入商品名称:")r=dict(a|b) #求并集,获得全部商品信息,用其创建字典,以便查询if

c

in

r: #用in检查输入的商品名称是否在两个表中存在

print(c,'价格为:',r[c])else:

print('表A和表B中没有商品:',c)单元5参考答案1.选择题答案及解析1.A解析:x=list()创建了一个空列表,所以ifx等价于if[],空列表转换为逻辑值False,所以if语句的条件不成立,不会执行y=1,y的值仍然为之前赋的0。2.B解析:本题中,x的值为{1},“ifx:”等价于“if{1}:”,非空集合转换为逻辑值True,所以if语句的条件成立,执行y=1,输出结果为1。3.D解析:本题考查多分支if语句。多分支if语句依次判断各个条件表达式的计算结果是否为True。本题中输入“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中的对象赋给b。a=['123','456','789'],a[n][n]返回a中的第n-1个字符串中的第n-1个字符。s+=a[n][n],s的初始值为0,不能和a[n][n]返回的字符做加法运算,程序运行出错。要让程序正确运行,可将“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、9。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解析:程序的功能是遍历列表,将其中的偶数输出,所有偶数输出在一行。13.C解析:本题代码分析如下。while

n<=10:

#n的值可取0、1、2……10

n=n+1

#n的值可取1、2……11

if

n%2==0:

#在n为偶数时条件成立

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

s=s+n

#n的值可取1、3、5、7、9、11所以代码输出结果为36。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=3。while循环第2次循环中,x=1,y=3,y<=5成立,执行x=x*y=1*3=3,y=y+2=3+2=5。while循环第3次循环中,x=3,y=5,y<=5成立,执行x=x*y=3*5=15,y=y+2=5+2=7。while循环第4次循环中,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+=22.①s=0 ②inrange(1,101)3.①inrange(1,n-1) ②a,b=b,a+b4.①s=1 ②x*=i5.①x<=n ②x+=16.示例代码如下。#用列表表示矩阵d=[[1,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=0for

a

in

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

for

b

in

a:

s+=bprint('所有元素之和

=',s)sz=sc=0for

i

in

range(5):

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

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

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

=',sz)7.示例代码如下。a,b=eval(input('请输入两个整数a、b:'))x,y=a,ba=max(x,y)b=min(x,y)d=a%bwhile

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

a=b

b=d

d=a%bprint('

%s

,

%s

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

%s

,

%s

的最小公倍数:%s'%(x,y,x*y//b))解析:用辗转相除法求最大公约数。8.示例代码如下。for

n

in

range(100,1000):

a=n//100 #获得百位上的数字

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

c=n%10 #获得个位上的数字

if

a*a*a+b*b*b+c*c*c==n:

print(n)9.示例代码如下。for

m

in

range(2000):

n=1

for

a

in

range(2,m): #计算m的因子之和

if

m%a==0:

n+=a

#计算n的因子之和

n2=1

for

a

in

range(2,n):

if

n%a==0:

n2+=a

if

n2==m

and

m!=n:

print((m,n))

#输出亲密数10.示例代码如下。n=int(input('请输入正整数n:'))#用列表表示n×n矩阵的下半部分,将各元素初始化为1d=[]for

a

in

range(n):

x=[1]

for

b

in

range(a):

x.append(1)

d.append(x)for

i

in

range(2,n):

for

j

in

range(1,i):

d[i][j]=d[i-1][j]+d[i-1][j-1] #计算非1元素for

a

in

d:

for

b

in

a:

print('%-6d'%b,end='')

#输出元素,每个元素宽度为6

print()单元6参考答案1.选择题答案及解析1.C解析:每次调用函数时,提供的实参的数据类型可以不同。不同类型的实参,可能会导致函数返回不同的结果。2.B解析:Python语言中用来定义函数的关键字是def。3.D解析:一个函数中可以有多个return语句,但返回值只能有一个。4.A解析:函数调用只能出现在函数定义之后。5.D解析:f((1,2))中,(1,2)只能视为一个实参,传递给a,参数b没有实参,所以会出错。6.C解析:在Python中,变量类似于C++中的指针,存储的是对象的引用。使用变量作为函数的实参时,会将变量对对象的引用传递给形参。当实参引用的是可变对象,如列表、字典等时,若在函数中修改形参,通过共享引用,实参也可获得修改后的对象。所以选项C中的说法错误。7.D解析:在定义函数时,可以为参数设置默认值。调用函数时如果未提供实参,则形参取默认值。调用有多个带默认值的参数的函数时,省略的参数不能用空格代替。本题中,要省略参数b,同时为参数c传递实参,正确的调用方法是fun(3,c=4)。8.D解析:函数的带星号参数可接收任意个数的实参,这些实参构成一个元组。9.A解析:本题中,形参y是函数f()的局部变量。x引用整数对象3,在调用函数f(x)时,会将整数对象3的引用传递给形参y。在函数内部,y*=2等价于y=3*2,通过赋值形参引用整数对象6。在函数f(x)的执行过程中,不影响x对整数对象3的引用。所以,本题中程序末尾的print(x)等价于print(3),输出3。10.D解析:调用函数时,不传递值的可选参数不能用空格或None代替。不传递值的可选参数如果在参数列表末尾,可以直接省略(使用默认值),否则其他可选参数必须使用形参名赋值格式传递实参。例如,函数定义为deff(a,b=1,c=2,d=3):pass,其中的b、c、d为可选参数。下列函数调用方法均正确:f(5) #a为5,不为b、c、d传递值f(5,6) #a为5,b为6,不为c、d传递值f(5,d=6) #a为5,d为6,不为b、c传递值f(5,,6)是错误的函数调用,试图直接省略中间的可选参数。11.A解析:使用可变对象(列表和字典等)作为实参调用函数时,形参变量和实参变量引用同一个可变对象。在函数中通过形参变量修改了可变对象的元素时,函数外的实参变量引用的是修改后的可变对象。12.C解析:f(a=1,2)中,a=1称为关键字参数,2是位置参数。关键字参数将实参传递给指定名称的形参,位置参数按实参位置传递给对应位置的形参。关键字参数必须放在位置参数之后。13.D解析:deff(a,*b)表示形参b可接收任意多个实参,此时b不能作为关键字参数。14.D解析:lambda语句用一个表达式来创建一个匿名函数,它称为lambda函数。通常将lambda函数赋给变量,通过变量来调用它。lambda语句中只能包含表达式,不能使用各种可执行语句。15.D解析:本题中,函数f(n)的作用是返回斐波那契数列的第n项,调用函数时实参必须为不小于1的正整数。16.B解析:本题考查函数列表。x=d[1](4,5)中,d[1]调用函数列表中的第2个lambda函数,计算4-5,结果为-1。17.B解析:选项A错误,局部变量是在函数内部创建的变量,在函数外部创建的全局变量也可在函数内部使用。选项C错误,变量的创建位置决定变量的使用范围,其使用范围与数据类型无关,正确的说法为:局部变量只能在函数内部创建和使用,函数退出后局部变量被释放。选项D错误,global关键字声明的变量为全局变量,变量既可在函数内,也可在函数外创建。18.D解析:nonlocal关键字声明的变量是外层函数的局部变量。19.C解析:本题中,x经global声明后,可以在函数内部赋值。所以在调用函数func()后,全局变量x的值变为200,输出200。20.B解析:模块只有在第一次导入时,才会执行。2.操作题答案及解析1.①returns ②a.append(b)2.①ainrange(2,n+1) ②fact(n)3.①x:(max(x),min(x)) ②mm(a)4.①faver(a) ②returns/len(a)5.示例代码及解析如下。def

f(a):

#参数a是存储原矩阵的列表对象

r=len(a)

#获得原矩阵的行数

c=len(a[0])

#获得原矩阵的列数

b=[]

#用列表保存转置矩阵

for

n

in

range(c):

#初始化转置矩阵

b.append([0]*r)

for

i

in

range(r): #完成矩阵转置

for

j

in

range(c):

b[j][i]=a[i][j]

return

ba=input('请输入原矩阵:')a=a.split('

')

#按空格分解输入数据为列表,先分解出每行的数据for

n

in

range(len(a)): #分解每行中的每列的数据

a[n]=a[n].split(',')print('原矩阵:')for

r

in

a:

#遍历行

for

c

in

r:

#遍历行中的元素

print('%-4s'%c,end='')

#每个数据占4列,左对齐,不换行

print()

#每行输出之后换行b=f(a)print('转置矩阵:')for

r

in

b:

for

c

in

r:

print('%-4s'%c,end='')

print()6.示例代码及解析如下。def

f(a):

m=len(a)//2 #获得中间位置

for

n

in

range(m):

if

len(a)%2==0:

a[n],a[m+n]=a[m+n],a[n]

#对换

else:

a[n],a[m+n+1]=a[m+n+1],a[n]

#对换

return

a(*b,)=eval(input('请输入多个数据:')) #将输入的多个数据作为列表赋给变量bb=f(b) #调用函数完成对换print('对换后:')for

r

in

b:

print(r,'',end='')7.示例代码及解析如下。def

f(a,b):

c=[[0,0],[0,0]]

#创建用于保存乘法运算结果的列表

for

i

in

range(2): #遍历结果列表,计算各个元素值

for

j

in

range(2):

c[i][j]=a[i][0]*b[0][j]+a[i][1]*b[1][j]

return

cx=input('请输入矩阵A:') #输入数据为字符串a=x.split('

')a[0]=list(eval(a[0]))

#将字符串表示的第1行数据转换为列表a[1]=list(eval(a[1]))

#将字符串表示的第2行数据转换为列表x=input('请输入矩阵B:')b=x.split('

')b[0]=list(eval(b[0]))b[1]=list(eval(b[1]))x=f(a,b)print('矩阵A:') #输出矩阵for

r

in

a:

for

c

in

r:

print('%-4s'%c,end='')

print()print('矩阵B:')for

r

in

b:

for

c

in

r:

print('%-4s'%c,end='')

print()print('A×B=')for

r

in

x:

for

c

in

r:

print('%-4s'%c,end='')

print()8.示例代码及解析如下。def

f(n):

for

i

in

range(2,n//2):

if

n%i==0:

return

False

#n被i整除,不是素数,返回False

return

True

#n是素数,返回Truen=0print('[10,100]范围内的素数:')for

x

in

range(10,100):

if

f(x):

print(x,'',end='')

n+=1

if

n%10==0:

print()9.示例代码及解析如下。def

f(a,b):

c=a.replace(b,'')

#删除字符串中包含的字符串b

return

repr(c)n=0x=input('请输入字符串减法表达式:')c=x.split('-')

#分解字符串减法表达式print(x,'=',f(eval(c[0]),eval(c[1]))) #使用eval()函数获得字符串减法表达式中的字符串10.示例代码及解析如下。def

f(x):

s=0

for

n

in

x:

#求和

s+=n

return

s/len(x)

#返回平均值c=input('请输入n个数:')(*x,)=eval(c)

#将字符串中的多个数作为列表赋给xc=c.replace(',','+')

#准备输出的加法表达式print(c+'的平均值

=',f(x))单元7参考答案1.选择题答案及解析1.D解析:文件的打开方式决定了文件的处理方式,所以文本文件可以按二进制格式打开并进行处理。借助第三方库,Python几乎可以处理所有类型的文件。2.C解析:存储字符的文本文件可以用二进制格式读取数据,读取的是字节串。3.B解析:以文本格式打开的文件按照字符进行读取。4.B解析:+必须与r、w、a组合使用。5.C解析:b表示按二进制格式读写文件数据,只表示读数据的格式,与是否创建文件无关。b与r、w、a、x可组合使用。6.D解析:w为只写模式,用于创建新文件。a为只写、追加模式。x为只写模式,用于创建新文件。r为只读模式。7.D解析:打开模式a表示以追加方式打开文件,如果文件不存在,则会创建新文件。8.C解析:没有readall()方法。9.A解析:readlines()方法将文件的全部内容读入一个列表中,每行作为一个列表元素。10.A解析:本题中,f.read()方法读出的内容为“Python,Java,C++\nJavaScript,HTML”,调用split(",")方法将其按逗号分解为列表。11.B解析:执行了fo.writelines(ls)语句后,文件指针指向文件末尾,再执行fo.seek(0)语句,文件指针指向文件开头,从而让后面的代码能够读取写入的数据。12.D解析:如果按文本格式打开文件,read(n)语句从文件指针当前位置开始读取n个字符,直到文件结束;如果按二进制格式打开文件,read(n)语句从文件指针当前位置开始读取n个字节,直到文件结束。省略参数或参数为负值时,read()方法读取从文件指针当前位置开始到文件结束的全部内容。13.D解析:seek()方法用于移动文件指针,不能用于写数据。14.C解析:os.chdir()方法用于改变当前工作目录。os.mkdir()方法用于创建目录。os.listdir()方法用于返回指定目录包含的子目录和文件名称。15.D解析:CSV因为是纯文本格式,只能用于存储纯文本的二维表格数据。16.A解析:CSV文件的分隔符可以是逗号、空格、制表符、其他字符或字符串。17.C解析:程序将列表[[1,2,3],[4,5,6],[7,8,9]]中的数据按CSV格式写入文件中。18.B解析:writer()方法用于创建常规写对象,其参数为打开的文件对象。DictWriter()方法用于创建字典写对象,其参数为打开的文件对象和字段名列表。writeheader()是字典写对象的方法,用于向文件中写入字段名。常规写对象调用writerow()方法需提供列表作为参数,字典写对象调用writerow()方法需提供字典作为参数。19.D解析:选项D错误,字典是无序的,不适合用于表示一维或二维数据。20.D解析:选项A错误,二维表格中的数据才是二维数据。选项B错误,高维数据中数据之间不一定存在关联关系。选项C错误,CSV格式的一行数据是一维数据,包含多行的CSV格式数据为二维数据。2.操作题答案及解析1.①'w' ②f.write(c+'\n')或者print(c,file=f)2.①'w+' ②f.seek(0)3.①a=list(a) ②f.write(a)4.①(*a,)=eval(a) ②a.sort()5.示例代码及解析如下。f=open('d:/test7-5.txt')for

b

in

f:

#按行迭代文件

b=b.strip()

#去掉行尾的换行符

for

c

in

b:

if

c<'0':

#c是运算符时,处理输出

n=b.index(c)

#获得运算符的位置

print('%2s'%b[:n],c,'%-2s'%b[n+1:],'=',eval(b)) #设置宽度以便对齐

breakf.close()6.示例代码及解析如下。f=open('d:/test7-6.txt',encoding=’utf-8’)d=[]t=next(f)

#读出标题行for

b

in

f:

#按行迭代文件

b=b.split(',')

#将数据按逗号分解为列表

b[2]=int(b[2])

#将成绩字符串转换为整数

b[3]=int(b[3])

b[4]=int(b[4])

b.append(sum(b[2:]))

#计算总成绩

d.append(b)def

fk(a):

return

a[5]

#返回子列表的总成绩用于排序d.sort(key=fk,reverse=True)n=1#输出时注意对齐xm='{1:{0}<4}'.format(chr(12288),'姓名')print('

%-4s%-5s%s

%-4s

%-4s

%-4s

%s'

%('名次','学号',xm,'语文','数学','外语','总成绩'))for

a

in

d:

print('{0:^6d}'.format(n),'%-6s'%

a[0],

'{1:{0}<4}'.format(chr(12288),a[1]),

'%-7s%-7s%-7s%s'

%tuple(a[2:]))

n+=1

#计算名次f.close()7.示例代码及解析如下。f=open('d:/test7-7.txt')d=[]for

b

in

f:

#按行迭代文件

(*a,)=eval(b)

#将每行中的数据以列表方式赋给变量a

d.append(a)

#添加到列表中f.close()r,c=d[0][0],d[0][1]

#获得稀疏矩阵行列数x=[]

#初始化稀疏矩阵for

n

in

range(r):

x.append([0]*c)del

d[0]for

r

in

d: #将非0元素填入稀疏矩阵

x[r[0]-1][r[1]-1]=r[2]

#输出稀疏矩阵for

r

in

x:

for

c

in

r:

print('%-4s'%c,end='')

print()8.示例代码及解析如下。f=open('test7-6.txt',encoding='utf-8')d=[]t=next(f)

#读出标题行for

b

in

f:

#按行迭代文件

b=b.split(',')

#将数据按逗号分解为列表

b[2]=int(b[2])

#将成绩字符串转换为整数

b[3]=int(b[3])

b[4]=int(b[4])

b.append(round(sum(b[2:])/3,1))

#计算平均成绩

del

b[2:-1]

#删除各门课程成绩

d.append(b)#将列表存入文件“test7-8.txt”中import

pickle

#使用pickle模块从文件中读写对象f=open('test7-8.txt','wb')

#使用二进制文件存储对象pickle.dump(d,f)

#将列表对象写入文件中f.close()print('数据已存入文件:test7-8.txt')f=open('test7-8.txt','rb')

#以二进制格式打开文件,读数据ds=pickle.load(f)

#读出列表对象f.close()def

fk(a):

return

a[2]

#返回子列表的平均成绩用于排序d.sort(key=fk,reverse=True)n=1#输出时注意对齐xm='{1:{0}<4}'.format(chr(12288),'姓名')print('

%-4s%-5s%s

%s'

%('名次','学号',xm,'平均成绩'))for

a

in

d:

print('{0:^6d}'.format(n),'%-6s'%

a[0],

'{1:{0}<4}'.format(chr(12288),a[1]),a[2])

n+=1

#计算名次9.示例代码及解析如下。f=open('d:/test7-9.txt')

d=f.read()(*data,)=eval(d)

#读出数据,存入列表中f.close()print('排序前:',end='')for

a

in

data:

print(a,end='

')n=len(data)for

i

in

range(n-1):

#使用冒泡排序完成排序

for

j

in

range(n-i-1):

if

data[j]>data[j+1]:

t=data[j]

data[j]=data[j+1]

data[j+1]=tprint('\n排序后:',end='')for

a

in

data:

print(a,end='

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

csvf=open('test7-10-1.csv')cr=csv.DictReader(f)d={}

#用字典对象来统计总数量和总金额for

r

in

cr:

zs=zj=0

if

r['编号']

in

d:

zs=d[r['编号']]['总数量']

#获得现有数据

zj=d[r['编号']]['总金额']

zs+=int(r['数量'])

zj+=int(r['数量'])*float(r['单价'])

d[r['编号']]={'商品名称':r['商品名称'],'总数量':zs,'总金额':zj}

#存入字典中f.close()ds=list(d.items())

#将字典转换为列表def

fk(a):

return

a[0]

#返回列表的第0项,即编号字段,用于排序ds.sort(key=fk)

#排序f=open('test7-10-2.csv','w')cw=csv.DictWriter(f,fieldnames=['编号','商品名称','总数量','总金额'])cw.writeheader() #写入字段名for

r

in

ds:

r[1]['编号']=r[0]

#将编号加入字典中

cw.writerow(r[1])

#将字典写入CSV文件中f.close()print('数据以写入文件test7-10-2.csv')单元8参考答案1.选择题答案及解析1.A解析:turtle库是Python用于绘制图形的标准库。2.D解析:seth()方法用于设置画笔朝向。colormode()方法用于设置颜色模式。bk()方法用于使画笔后退指定距离。3.B解析:颜色值表示为RGB三元组或者颜色字符串,B选项错误。4.A解析:使用turtle.circle()方法画圆时,圆心在画笔左侧。因为圆是360°,所以结束画圆时,画笔返回开始的位置,且朝向不变。本题中,turtle.circle(i)语句从同一个位置开始,绘制不同半径的相切的圆。5.D解析:fd(60)语句让画笔沿当前朝向前进60个像素。left(90)语句让画笔向左旋转90。6.C解析:turtle.forward()方法使画笔沿当前朝向前进;turtle.goto()方法将画笔移动到指定位置,朝向不变。turtle.circle()方法用于画圆、圆弧或正多边形。turtle.right()方法和turtle.rt()方法使画笔向右旋转。7.B解析:turtle.ontimer(fun,t=0)在t指定的时间(以ms为单位)后,执行fun指定的函数。8.D解析:r9.C解析:没有指定随机数种子时,Python使用当前系统时间作为随机数种子。10.D解析:random库的random()方法返回[0.0,1.0]范围内的一个随机浮点数。round(x,2)语句将x保留2位小数。11.B解析:random.sample(seq,n)函数从序列seq中随机选择n个不重复元素,组成一个列表并返回。12.B解析:time库是Python的标准库,只能在使用import语句导入后才能使用。time.time()函数返回自1970年1月1日00:00:00(UTC)以来时间的秒数(浮点数格式)。13.C解析:时间格式化字符串中,%y表示2位的年份,%m表示2位的月份,%d表示2位的日期,%H表示2位的小时数,%M表示2位的分钟数,%S表示2位的秒数。14.C解析:time.strftime()方法在未指定时间时使用当前日期和时间。15.A解析:Checkbutton组件用于创建复选框,复选框有选中和未选中两种状态,通常将其绑定到BooleanVar变量。16.C解析:showinfo()方法用于显示普通信息对话框;showwarning()方法用于显示警告信息对话框;showerror()方法用于显示错误提示信息对话框;askquestion()方法用于显示问题对话框。17.B解析:askcolor()函数返回值为一个二元组,其格式为((RGB三元组),"#十六进制颜色值"),如((255.99609375,0.0,0.0),'#ff0000')。18.D解析:turtle是用于绘图的标准库。19.C解析:time.perf_counter_ns()方法用于返回性能计数器的整数纳秒值。20.C解析:Tkinter是用于设计图形用户界面的库。2.操作题答案及解析1.①fromturtleimport* ②end_fill()2.①fd(200) ②goto(100,0)或者fd(100)3.①begin_poly() ②register_shape('mp',p)4.①fromrandomimport* ②sample(cf,1)[0]5.示例代码及解析如下。from

turtle

import

*pensize(2) #设置画笔宽度(线条宽度)fd(180) #绘制长边,其长度为矩形的长度减去两个圆角的半径circle(10,90) #绘制90°圆弧fd(80) #绘制短边,其长度为矩形的宽度减去两个圆角的半径circle(10,90)fd(180)circle(10,90)fd(80)circle(10,90)6.示例代码及解析如下。from

random

import

randintdef

f(n):

#判断n是否为素数,若它是素数则返回True,否则返回False

for

a

in

range(2,n//2):

if

n%a==0:

return

False

return

Truec=0while

c<10:

x=randint(10,1000)

while

x%2!=0:

#获得一个随机偶数

x=randint(10,1000)

c+=1

#对偶数计数

#分解偶数

ok=False

for

n

in

range(2,x//2+1):

if

f(n)

and

f(x-n): #n和x-n均为素数时,输出结果

print('%3d'%x,'=','%3d'%n,'+',x-n)

ok=True

break

if

not

ok:

print(x,'不能表示为两个素数的和。')

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

random

import

*def

f(n):

#判断n是否为素数,保证被除数能被整除

for

a

in

range(2,n//2):

if

n%a==0:

return

False

return

Truedef

divs(n):

#返回n的因子列表,不包含1和n,以便取除数

d=[]

for

x

in

range(2,n):

if

n%x==0:

d.append(x)

return

dn=0cf='+-*/'w

温馨提示

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

评论

0/150

提交评论