《Python基础教程-习题(含答案).docx》由会员分享,可在线阅读,更多相关《Python基础教程-习题(含答案).docx(23页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Python基础教程习题(含答案)第一章一、判断题1、Python是一种跨平台、开源、免费的高级动态编程语言。(对)2、Python3.x完全兼容Python2.x。(错)3、在Windows平台上编写的Python程序无法在Unix平台运行。(错)4、不可以在同一台计算机上安装多个Python版本。(错)5、pip命令也支持扩展名为.whl的文件直接安装Python扩展库。(对)二、填空题1、Python安装扩展库常用的是工具。(pip)2、在IDLE交互模式中浏览上一条语句的快捷键是。(Alt+P)3、Python程序文件扩展名主要有和两种,其中后者常用于GUI程序。(py、pyw)4、P
2、ython源代码程序编译后的文件扩展名为。(pyc)5、使用pip工具升级科学计算扩展库Numpy的完整命令是。(pipinstall-upgradeNumpy)6、使用pip工具安装科学计算扩展库Numpy的完整命令是。(pipinstallNumpy)7、使用pip工具查看当前已安装的Python扩展库的完整命令是。(piplist)8、现有一python文件为“Stu.py”,ico文件为“Stu.ico”,两者均在同一目录下,现要将Stu.py打包发布在此目录下,所发布的文件图标采用Stu.ico,需要使用的命令是。(pyinstallerIStu.icoFStu.py)第二章一、判断
3、题1、已知x=3,那么赋值语句x=abcedfg是无法正常执行的。(错)2、Python变量使用前必须先声明,并且一旦声明就不能再当前作用域内改变其类型。(错)3、Python采用的是基于值得自动内存管理方式。(对)4、Python不允许使用关键字作为变量名,允许使用内置函数名作为变量名,但这会改变函数名的含义。(对)5、在Python中可以使用if作为变量名。(错)6、在Python3.x中可以使用中文作为变量名。(对)7、Python变量名必须以字母或下划线开头,并且区分字母大小写。(对)8、加法运算符可以用来连接字符串并生成新字符串。(对)9、3+4j不是合法的Python表达式。(错)
4、10、0o12f是合法的八进制数字。(错)11、不管输入什么,Python3.x中input()函数的返回值总是字符串。(对)12、在Python中0xad是合法的十六进制数字表示形式。(对)13、Python使用缩进来体现代码之间的逻辑关系。(对)14、Python代码的注释只有一种方式,那就是使用#符号。(错)15、放在一对三引号之间的任何内容将被认为是注释。(错)16、为了让代码更加紧凑,编写Python程序时应尽量避免加入空格和空行。(错)17、Python变量名区分大小写,所以student和Student不是同一个变量。(对)18、在Python3.x中,使用内置函数input()
5、接收用户输入时,不论用户输入的什么格式,一律按字符串进行返回。(对)二、填空题1、布尔类型的值包括和。(True、False)2、Python的浮点数占字节。(8)3、000011002的结果是。(00000011或3)4、若a=20,那么bin(a)的值为。(0b10100)5、a=60;b=13;c=13,abandbborbb:a,b=b,a用户输入的数按小到大排序结果是:elifa=b:用户输入的两个数相同,输入的数字是:else:用户输入的数按小到大排序结果是:#本题不考虑用户需要的不是数字情况,在读者学完异常处理后,建议回头改写此题,实现异常处理。第三章一、判断题1、在Python
6、语言中,循环语句while的判断条件为“1”是永真条件。(对)2、if.else语句的嵌套完全可以代替if.elif语句。(对)3、break语句用在循环语句中,可以跳出二重循环结构。(错)4、通过break语句跳出循环结构后,循环控制变量的值一定大于其设定的终点值。(错)5、在循环语句中,如果没有子句else,也能同样完成程序的功能。(对)6、在条件表达式中不允许使用赋值运算符“=”,会提示语法错误。(对)7、Pass语句的出现是为了保持程序结构的完整性。(对)8、Python中没有switch-case语句。(对)9、每一个if条件表达式后都要使用冒号。(对)10、While循环不可以和f
7、or循环嵌套使用。(错)11、如果仅仅是用于控制循环次数,那么使用foriinrange(20)和foriinrange(20,40)的作用是等价的。(对)12、在循环中continue语句的作用是跳出当前循环。(错)13、在编写多层循环时,为了提高运行效率,应尽量减少内循环中不必要的计算。(对)14、带有else子句的循环如果因为执行了break语句而退出的话,则会执行else子句中的代码。(错)15、对于带有else子句的循环语句,如果是因为循环条件表达式不成立而自然结束循环,则执行else子句中的代码。(对)二、填空题1、在循环体中,可以使用语句跳出循环体。(break)2、语句是if语
8、句和else语句的组合。(elif)3、在循环体中,可以使用语句跳过本次循环后面的代码,直接进入下一次循环。(continue)4、Python中的表示空语句。(pass)5、调试运行时,遇到死循环可以使用退出循环。(ctrl+c)6、Python3.x语句foriinrange(3):print(i,end=,)的输出结果为。(0,1,2,)7、对于带有else子句的for循环和while循环,当循环因循环条件不成立而自然结束时(会?不会?)执行else中的代码。(会)8、在循环语句中,语句的作用是提前结束本层循环。(break)9、在循环语句中,语句的作用是提前进入下一次循环。(conti
9、nue)10、表达式5if56else(6if32else5)的值为。(6)三、程序练习1输入两个数x和y,如果x或y小于等于0,提示请输入正整数,求这两个数的最大公约数和最小公倍数。【分析】设x为被除数,y为除数,a为余数,采用欧几里得辗转相除算法来求最大公约数。x除以y得到余数a,如果a不等于0,把y赋值给x,把a赋值给y,继续x除以y得到余数a,直接a等于0为止,这时的y就是最大公约数。最小公倍数的计算方法是两数的乘积除以两数最大公约数的结果。【操作实践】请输入一个数:请输入一个数:t=x*yifxy:x,y=y,xwhilex%y!=0:a=x%yx=yy=a最大公约数:最小公倍数:2
10、输入一个数,判断是否为质数。【分析】质数是除了1和它本身以外任何数都不能整除他的数,那求质数时,可以用这个数依次除比所输入的数的平方根小的数,如果不能除尽,那就是质数,否则不是质数。【操作实践】请输入一个数:i=2whileiint(x*(1/2):ifx%i=0:不是质数breaki+=1else:是质数3输入一个年份year,判断是否为闰年。【分析】闰年能被4整除同时不能被100整除的数,但如果能被400整除,也是闰年。【操作实践】输入年份:#可用int()函数if(year%4=0andyear%100!=0)or(year%400=0):是闰年else:不是闰年第四章一、判断题1、Py
11、thon支持使用字典的“键”作为下标来访问字典中的值。(对)2、列表可以作为字典的“键”。(错)3、元组可以作为字典的“键”。(对)4、Python字典中的“键”不允许重复。(对)5、Python字典中的“值”不允许重复。(错)6、Python列表中所有元素必须为相同类型的数据。(错)7、Python列表、元组、字符串都属于有序序列。(对)8、已知A和B是两个集合,并且表达式AB的值一定为True。(错)9、列表对象的append()方法属于原地操作,用于在列表尾部追加一个元素。(对)10、使用Python列表的方法insert()为列表插入元素时会改变列表中插入位置之后元素的索引。(对)11
12、、使用del命令或者列表对象的remove()方法删除列表中元素时会影响列表中部分元素的索引。(对)12、已知列表x=1,2,3,那么执行语句x=3之后,变量x的地址不变。(错)13、使用列表对象的remove()方法可以删除列表中首次出现的指定元素,如果列中不存在要删除的指定元素则抛出异常。(对)14、元组是不可变的,不支持列表对象的inset()、remove()等方法,也不支持del命令删除其中的元素,但可以使用del命令删除整个元组对象。(对)15、当以指定“键”为下标给字典对象赋值时,若该“键”存在则表示修改该“键”对应的“值”,若不存在则表示为字典对象添加一个新的“键-值对”。(对
13、)16、假设x是含有5个元素的列表,那么切片操作x10:是无法执行的,会抛出异常。(错)17、只能对列表进行切片操作,不能对元组和字符串进行切片操作。(错)18、只能通过切片访问列表中的元素,不能使用切片修改列表中的元素。(错)19、表达式1,3,21,2,3的值为True。(错)20、列表对象的extend()方法属于原地操作,调用前后列表对象的地址不变。(对)二、填空题1、表达式1,2,3*3的执行结果为。(1,2,3,1,2,3,1,2,3)2、表达式3in1,2,3,4的值为。(False)3、列表对象的sort()方法用来对列表元素进行原地排序,该函数返回值为。(None)4、假设列
14、表对象aList的值为3,4,5,6,7,9,11,13,15,17,那么切片aList3:7得到的值是。(6,7,9,11)5、使用列表推导式生成包含10个数字5的列表,语句可以写为。(5foriinrange(10)6、假设有列表a=name,age,sex和b=小明,18,男,请使用一个语句将这两个列表的内容转换为字典,并且以列表a中的元素为“键”,以列表b中的元素为“值”,这个语句可以写为。(c=dict(zip(a,b)7、任意长度的Python列表、元组和字符串中最后一个元素的下标为。(-1)8、Python语句list(range(1,10,3)执行结果为。(1,4,7)9、表达
15、式list(range(5)的值为。(0,1,2,3,4)10、已知a=1,2,3和b=1,2,4,那么id(a1)=id(b1的)执行结果为。(True)11、切片操作list(range(6):2执行结果为。(0,2,4)12、使用切片操作在列表对象x的开始处增加一个元素3的代码为。(x0:0=3)13、字典中多个元素之间使用分隔开,每个元素的“键”与“值”之间使用分隔开。(逗号、冒号)14、字典对象的方法可以获取指定“键”对应的“值”,并且可以在指定“键”不存在的时候返回指定值,如果不指定则返回None。(get()15、字典对象的方法返回字典中的“键-值对”列表。(items()16、
16、字典对象的方法返回字典的“键”列表。(keys()17、字典对象的方法返回字典的“值”列表。(values()18、已知x=1:2,那么执行语句x2=3之后,x的值为。(1:2,2:3)19、表达式set(1,1,2,3)的值为。(1,2,3)20、使用列表推导式得到100以内所有能被13整除的数的代码可以写作。(iforiinrange(100)ifi%13=0)三、程序练习1数据简单加密问题。从前有一个称为”rot13”的简单加密方法,原理是:对于一个报文中出现的任何字母用其后(字母顺序)的第9个字母代替,循环实现。就是字母表的前9个字母用对应的后9个字母表示。举例说明:字母A用J代替,B
17、用K代替,.,M用L,.,Z用I;小写字母同样类似。问题是:用字符串给出一串报文,要求输出这串报文的密文。首先建立一个字典,包含大小写52个字母作为键的字典,键对应的值也是字母,就是要代替的字母。第二步是根据字符串中的字母,在字典中查找键并返回对应的值。值记录在一个列表中。第三步,根据列表将列表中的元素整合字符串,这个串就是密文。【参考代码】请输入一段英文:#原文l1=list(m1)l2=list(m2)dict1=dict(zip(m1,m2)字典1情况:#字典1情况list1=foriintxt:ifiindict1:data=dict1.get(i)else:data=ilist1.a
18、ppend(data)列表1情况:#列表1情况list2=foriinlist1:list20=list20+i列表2情况:原文是:加密结果:#列表2情况#原文#最终加密结果2计算身份证的校验码。计算身份证的校验码,根据身份证的前17位,输入数字,并将字符转换为数字,根据给定的权值表及相应的身份证检验码,进行校验码的计算。【分析】身份证的校验码计算过程如下:第一步:将身份证号码的第1位数字与7相乘;将身份证号码的第2位数字与9相乘;将身份证号码的第3位数字与10相乘;将身份证号码的第4位数字与5相乘;将身份证号码的第5位数字与8相乘;将身份证号码的第6位数字与4相乘;将身份证号码的第7位数字与
19、2相乘;将身份证号码的第8位数字与1相乘;将身份证号码的第9位数字与6相乘;将身份证号码的第10位数字与3相乘;将身份证号码的第11位数字与7相乘;将身份证号码的第12位数字与9相乘;将身份证号码的第13位数字与10相乘;将身份证号码的第14位数字与5相乘;将身份证号码的第15位数字与8相乘;将身份证号码的第16位数字与4相乘;将身份证号码的第17位数字与2相乘。第二步:将第一步身份证号码117位相乘的结果求和,全部加起来。第三步:用第二步计算出来的结果除以11,这样就会出现余数为0,余数为1,余数为2,余数为3,余数为4,余数为5,余数为6,余数为7,余数为8,余数为9,余数为10共11种可
20、能性。第四步:如果余数为0,那对应的最后一位身份证的号码为1;如果余数为1,那对应的最后一位身份证的号码为0;如果余数为2,那对应的最后一位身份证的号码为X;如果余数为3,那对应的最后一位身份证的号码为9;如果余数为4,那对应的最后一位身份证的号码为8;如果余数为5,那对应的最后一位身份证的号码为7;如果余数为6,那对应的最后一位身份证的号码为6;如果余数为7,那对应的最后一位身份证的号码为5;如果余数为8,那对应的最后一位身份证的号码为4;如果余数为9,那对应的最后一位身份证的号码为3;如果余数为10,那对应的最后一位身份证的号码为2。【参考代码】str=input(输入您的身份证前17位:
21、)list1=list(str)foriinrange(17):list1i=eval(list1i)#将字符转换为数字列表查看转换的数据列表:wt=7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2#定义权值表sum=0foriinrange(17):sum=sum+list1i*wti身份证号码117位相乘的结果和是:s=sum%11和除以11的余数为:#在下面的字典中,s的值作为键,对应的值是身份证的校验码dict1=0:1,1:0,2:X,3:9,4:8,5:7,6:6,7:5,8:4,9:3,10:2ifsindict1:余数对应的身份证校验码为:3设计一个字典d
22、ict1,name键为用户名,pwd键为密码。设计一个注册登录检查程序,将用户名和密码注册到字典中,然后进行登录,用户名和密码都正确时输出“欢迎(用户名)登录”信息,用户名或密码不正确则提示“用户或密码错误,请重新登录!”。list1=dict1=请注册用户名:请添加密码:list1.append(dict1)print(list1)保存的字典数据是:请登录:请输入登录的用户名请输入登录的密码:f=Falseforiinlist1:f=True欢迎%s登录iff=False:用户或密码错误,请重新登录!第五章一、判断题1、函数是代码复用的一种方式。(对)2、定义函数时,即使该函数不需要接收任何
23、参数,也必须保留一对空的圆括号来表示这是一个函数。(对)3、一个函数如果带有默认值参数,那么必须所有参数都设置默认值。(错)4、定义Python函数时,如果函数中没有return语句,则默认返回空值None。(对)5、如果在函数中有语句return3,那么该函数一定会返回整数3。(错)6、在调用函数时,可以通过关键参数的形式进行传值,从而避免必须记住函数形参顺序的麻烦。(对)7、不同作用域中的同名变量之间互相不影响,也就是说,在不同的作用域内可以定义同名的变量。(对)8、全局变量会增加不同函数之间的隐式耦合度,从而降低代码可读性,因此应尽量避免过多使用全局变量。(对)9、在函数内部,既可以使用
24、global来声明使用外部全局变量,也可以使用global直接定义全局变量。(对)10、在函数内部没有办法定义全局变量。(错)11、在函数内部直接修改形参的值并不影响外部实参的值。(对)12、调用带有默认值参数的函数时,不能为默认值参数传递任何值,必须使用函数定义时设置的默认值。(错)13、在同一个作用域内,局部变量会隐藏同名的全局变量。(对)14、形参可以看作是函数内部的局部变量,函数运行结束之后形参就不可访问了。(对)15、在函数内部没有任何声明的情况下直接为某个变量赋值,这个变量一定是函数内部的局部变量。(对)16、定义函数时,带有默认值的参数必须出现在参数列表的最右端,任何一个带有默认
25、值的参数右边不允许出现没有默认值的参数。(对)17、无法使用lambda表达式定义有名字的函数。(错)18、调用函数时传递的实参个数必须与函数形参个数相等才行。(错)19、lambda表达式中可以使用任意复杂的表达式,但是必须只编写一个表达式。(对)20、g=lambdax:3不是一个合法的赋值表达式。(错)二、填空题1、Python中定义函数的关键字是。(def)2、在函数内部可以通过关键字来定义全局变量。(global)3、如果函数中没有return语句或者return语句不带任何返回值,那么该函数的返回值为。(None)4、表达式sum(range(1,10,2)的值为。(25)5、表达
26、式list(filter(lambdax:x%2=0,range(10)的值为。(0,2,4,6,8)6、已知g=lambdax,y=3,z=5:x*y*z,则语句print(g(1)的输出结果为。(15)7、表达式sorted(abc,acd,ade,key=lambdax:(x0,x2)的值为。(abc,acd,ade)8、已知函数定义defdemo(x,y,op):returneval(str(x)+op+str(y),那么表达式demo(3,5,+)的值为。(8)9、已知函数定义defdemo(x,y,op):returneval(str(x)+op+str(y),那么表达式demo(
27、3,5,*)的值为。(15)10、已知函数定义deffunc(*p):returnsum(p),那么表达式func(1,2,3)的值为。(6)11、已知函数定义deffunc(*p):returnsum(p),那么表达式func(1,2,3,4)的值为。(10)12、已知函数定义deffunc(*p):returnsum(p.values(),那么表达式func(x=1,y=2,z=3)的值为。(6)13、已知函数定义deffunc(*p):return.join(sorted(p),那么表达式func(x=1,y=2,z=3)的值为。(xyz)14、已知f=lambdax:5,那么表达式f(
28、3)的值为。(5)15、已知g=lambdax,y=3,z=5:x+y+z,那么表达式g(2)的值为。(10)三、程序练习1编写函数,判断用户输入的两个数的最小公倍数。最小公倍数的分析,见第三章课后习题1deffunc(m,n):t=m*nifm0:包括的学生有fortempinself.containsItem:returnmsg#包含学生defstuNum(self,item):#如果学生小组空余名额大于学生人数needNum=item.getUsedNum()ifself.Num=needNum:self.containsItem.append(item)self.Num-=needNu
29、m参加成功else:错误:学生竞赛小组空余名额:%d,但是要参加的学生人数为#定义报名学生类classStu:def_init_(self,Num,name=张三):self.name=nameself.Num=Numdef_str_(self):msg=学生报名人数:+str(self.Num)returnmsg#获取学生的人数defgetUsedNum(self):returnself.Num#获取学生的人数defgetName(self):returnself.name# 创建一个新小组对象newclasses=classes(3)#学习小组3个名额print(newclasses)#
30、创建学生报名数对象newStu=Stu(1)print(newStu)# 报名到小组里newclasses.stuNum(newStu)print(newclasses)# 创建第二组学生对象newStu2=Stu(2,李力,王明)print(newStu2)# 把报名到小组里newclasses.stuNum(newStu2)print(newclasses)# 创建第三组学生对象newStu2=Stu(1,刘红)print(newStu2)#把报名到小组里newclasses.stuNum(newStu2)print(newclasses)第八章一、判断题1、顺序读写文件与随机读写文件是两
31、种读写文件的方式,它们的区别依靠设置读写指针位置的方法seek()实现,与open()函数中的打开方式无关。(错)2、open()函数用于建立文件对象,建立文件与内存缓冲区的联系。可以用于文本文件和二进制文件,打开方式是指只读、读写、添加、修改等。(对)3、如果open()函数的打开方式是r+b,说明是打开一个可随机读写的二进制文件。(对)4、open()函数的打开方式r+b中的加号(+)没有实际意义。(错)5、文件对象的方法close()用于关闭文件,在实际操作中,不这样做,程序运行也正常,这说明有无文件关闭操作都可行。(错)6、read()函数可以读出文件中的数据,读出的字节数量由用户指定
32、。指定多少合适呢?最合适的选择是:尽可能一次性读完文件所有内容(有必要时),不能一次性读完时,每读出的数量以内存缓冲区大小为准。(对)7、Python关于文件的读写缺少一个指示文件尾的方法eof(),要判断是否读到文件尾部用读出内容为空表示。(对)二、填空题1、Python内置函数用来打开或创建文件并返回文件对象。(open()2、使用上下文管理关键字可以自动管理文件对象,不论何种原因结束该关键字中的语句块,都能保证文件被正确关闭。(with)3、Python标准库os中用来列出指定文件夹中的文件和子文件夹列表的方式是。(listdir()4、Python标准库os.path中用来判断指定文件
33、是否存在的方法是。(exists()5、Python标准库os.path中用来判断指定路径是否为文件的方法是(isfile()6、Python标准库os.path中用来判断指定路径是否为文件夹的方法是(isdir()7、Python标准库os.path中用来分割指定路径中的文件扩展名的方法是。(splitext()8、Python扩展库支持Excel2007或更高版本文件的读写操作。(openpyxl)9、已知当前文件夹中有纯英文文本文件readme.txt,请填空完成功能把readme.txt文件中的所有内容复制到dst.txt中,withopen(readme.txt)assrc,open
34、(dst.txt,)asdst:dst.write(src.read()。(w)10、csv模块中,使用csv.reader函数,读取csv文件,转存的结果类型是。(列表)三、程序练习备份8.6节中的stu_info.txt数据文档,要求用户输入备份文件名进行备份操作。请输入要拷贝的文件名字old_File=open(oldFileName,r)# 如果打开文件ifold_File:# 提取文件的后缀fileFlagNum=old_Name.rfind(.)iffileFlagNum0:fileFlag=old_NamefileFlagNum:# 备份文件的文件名new_Name=old_Na
35、me:fileFlagNum+备份+fileFlag# 创建新文件new_File=open(new_Name,w)# 把旧文件中的数据,一行一行的进行复制到新文件中forlineContentinold_File.readlines():new_File.write(lineContent)#关闭文件old_File.close()new_File.close()第九章一、判断题1、所有程序错误都可以用异常控制、解决。(错)2、try.except语句与try.finally语句的区别在于:前者在有异常时执行except下的语句,而后者无论有无异常,都执行finally子句下面的语句。(对)3、try.except.else语句、try.except语句的结构类似于if.else语句、if.语句的结构。(对)4、带有多个except子句的try语句或try.else语句中,每个except子句可以处理多种异常。(错)5、带有多个except子句的try语句或try.else语句中,每个except子句下面语句块的最后一个语句必须是break语句。(错)6、捕获所有异常Exception没有必要。(错)7、raise语句用于程序员编写的应用程序中,由应用程序自己引发异常,这是没有必要的语句。(错)8、如果程序语
限制150内