版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一章Python语言概述一选择题1.下列哪一项不属于python的优势()A.易于掌握 B.模块化 C.语言简洁 D.运行速度快2.下列哪一项开发工具不能使用python语言()A.IDLE B.VisualStudio C.DevC D.Pycharm3.Pycharm内运行代码的快捷键是()A.Alt+Shift+F10 B.F10 C.ctrl+F10 D.F114.下列哪一项不是python的注释方法()A.#注释 B.“’注释“’ C.//注释 D.”””注释”””5.下列哪一项在python中是合法的变量名()A.#abs B.stu_buaa C.1re D.%s17二判断题Python语言以对象为核心组织代码,支持多种编程范式,采用动态类型并且自带内存回收机制。()Python中变量需要明确声明,直接赋值就可以使用变量。()PyCharm具有一般IDE具备的功能,如调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制等。()Python在面向对象编程中没有提供显式的静态、成员、私有、公有等声明性标识符。()Python的代码缩进可以混用制表符和空格符。()三填空题1.官方提供了Python2.x和----------两个版本。2.VSCode(VisualStudioCode)是----------开发的简化且高效的代码编辑器。3.Python直接使用----------来表示语句的结束。4.合理使用注释能够对代码进行良好的说明,增强代码的----------。5.Python同样支持在多行中书写一条语句,此时需要使用----------添加到行末。四简答题1.简要说明Python这一编程语言的几大特点。2.举例说明如何应用Python的编码规范。3.简要说明PyCharm相比IDLE有什么优势。4.概述如何用Python在控制台输出helloworld。5.说明写注释有什么好处。答案 一选择题D2.C3.A4.C5.B二判断题√2.×3.√4.√5.×三填空题Python3.x2.Microsoft3.换行4.可读性5.反斜杠(\)四简答题1.可扩展,语法精简,跨平台,动态语言,面向对象,具有丰富的数据结构,健壮性,强大的社区支持2.变量的命名要规范,不要有意义不明的变量名;代码缩进要用制表符,防止代码混乱3.提供了一些很好的用于Django开发的功能,同时,其支持GoogleAppEngine和IronPython。4.print(“Hello,World”)并运行5.注释可用来标注该处代码的作用,合理使用注释能够对代码进行良好的说明,增强代码的可读性。helloWorld.py1 print("Hello,World")#displaytexttestIndent.py1 x=02 ifx<3:3
x=x+14
print(x)5 print('end')blankLine.py1 deffunA():2
print("funA")3
4 deffunB():5
print("funB")6
7 deffunC():8
print("funC")第二章python基本概念一选择题下列哪一项不属于python的基本数据类型()A.整型B.复数C.浮点型D.指针2.下列哪一项不是python中可取的变量名()A.aB.Li_HuaC.ifD.s1y23.python中的运算符in是以下哪种运算符()A.成员运算符B.位运算符C.逻辑运算符D.关系运算符4.python导入外部模块时使用以下哪种语句()A.includeB.importC.insertD.inform5.下列哪一项是python的基本输出函数名()A.printB.printfC.putsD.output二判断题Python的基本数据类型包括整型、浮点型、字符串、布尔值和空值等。()Python对变量的标识符大小写不敏感。()Python中的变量在使用前不需要进行声明数据类型。()对于python中的变量a,语句a++的含义与语句a+=1的含义一致。()Python中的input()函数输出类型任意。()三填空题1.在python中,当所创建的整数大小超过普通整数取值范围时将自动创建为长整数,可以通过对数字添加后缀来手动创建一个长整数。2.空值是Python中的一个特殊的值,用来表示。3.关系运算符又称比较运算符,其作用是比较两个操作数的大小并返回一个。4.python中的“+=”、“*=”等一类运算符,具体被称为。5.math模块还定义了数学常量π,使用来对其进行访问。四简述题1.Python有哪几种基本数据类型?分别介绍其作用。2.Python有几类运算符?分别介绍其作用。3.什么是增强型赋值运算符?4.简要介绍python中的random模块中的函数。5.简要介绍python中的几个数学运算函数。另实践题1.编写Python程序输出下列数学表达式的值。(1)QUOTExy+(5z+14)2,x=4,y=2,z=1(2)QUOTE。2.假如你想把一笔钱以固定年利率存入账户。当你将其存入账户若干年后,其中一共应有多少钱?计算公式为3.编写一个程序,提示用户输入三角形的三个顶点(x1,y1)、(x2,y2)、(x3,y3),然后输出三角形的面积。计算三角形面积的公式如下:其中,a、b、c分别代表三角形的三条边长。答案 一选择题D2.C3.A4.B5.A二判断题√2.×3.√4.×5.×三填空题L或l2.None3.布尔值4.增强型赋值运算符5.math.pi四简答题1.Python的基本数据类型包括整型、浮点型、字符串、布尔值和空值等。【整型】Python可以处理任意大小的整数,包括负整数。十进制整数的表示方式与数学上的写法相同,如10、-255、0、2016等。此外,Python还支持十六进制、八进制和二进制整数。十六进制整数需要用0x或0X作为前缀,用0~9和a~f(或A~F)作为基本的16个数字,如0xffff、0X4F5DA2等。八进制整数需要用0o作为前缀,用0~7作为基本的8个数字,如:0o11、0o376等。二进制整数需要用0b或0B作为前缀,用0和1作为基本数字,如0b1010、0B10110等。【浮点型】在Python中,浮点型用来表示实数,在绝大多数情况下用于表示小数。浮点数可以使用普通的数学写法,如1.234、-3.14159、12.0等。对于特别大或特别小的浮点数,可以使用科学计数法表示,如-1.23e11、3.2e-12等。其中,使用字母e或E来表示10的幂。因此,前面的两个例子可表示为-1.23×1011和3.2×10-12。【复数】除整数和浮点数外,Python也提供了复数作为其内置类型之一,如3+2j、7-2j等。其中,j代表虚数单位。【字符串】字符串是使用单引号或双引号括起来的任意文本,如'HelloWorld',"Python"等。注意,引号本身不是字符串的一部分,只说明了字符串的范围。例如,字符串'ab'只包含a和b两个字符。使用''或""可以表示空字符串。一个字符串使用哪种引号开头就必须以哪种引号结束。例如,字符串"I'm"包含了I、'、m三个字符,字符串的结束是双引号而非单引号。【布尔值】布尔值即真(True)或假(False)。在Python中,可以直接使用True或False表示布尔值。当把其他类型转换成布尔值时,值为0的数字(包括整型0,浮点型0.0等)、空字符串、空值(None)、空集合被认为是False,其他值均被认为是True。【空值】空值是Python中的一个特殊的值,用None来表示。2.Python中的运算符包括:算术运算符、关系运算符、逻辑运算符、位运算符、身份运算符和成员运算符等。算术运算符用于对操作数进行各种算术运算。关系运算符又称比较运算符,其作用是比较两个操作数的大小并返回一个布尔值。逻辑运算符用来对布尔值进行与、或、非等逻辑运算。身份运算符用于比较两个对象的内存位置是否相同。成员运算符用于查找对象是否在某个序列中,序列包括字符串、列表和元组。3.Python允许将某些双目运算符和赋值运算符结合使用来简化将某个变量的值修改后复制给自身的语法。这种双目运算符被称为增强型赋值运算符。4.random.random():在0.0至1.0的区间内随机返回一个浮点数。random.uniform(a,b):在a到b的区间内随机返回一个浮点数。random.randint(a,b):在a到b的区间内随机返回一个整数。5.abs(x):返回一个数的绝对值。max(arg1,arg2,*args):返回多个参数中的最大值。min(arg1,arg2,*args):返回多个参数中的最小值。pow(x,y):返回x的y次幂。round(number[,ndigits]):返回一个浮点数的近似值,保留小数点后ndigits位。另实践题1.importmathx,y,z=4,2,1op=x/y+(5*z+14)*(5*z+14)print(op)x=math.pi/4y=math.pi/6op=math.sin(x)*math.cos(y)print(op)2.importmathmoney=float(input())#输入本金rate=float(input())#输入年利率year=float(input())#输入年数output=money*pow(1+rate,year)print(output)#样例:#输入本金:4000#输入年利率:0.05#输入年数:2#输出:4410.03.importmath#数据输入print('请输入三个顶点坐标,使用空格隔开')print('请输入第一个顶点坐标:')data1=input()print('请输入第二个顶点坐标:')data2=input()print('请输入第三个顶点坐标:')data3=input()#数据类型转换与存储x1,y1=float(data1.split()[0]),float(data1.split()[1])x2,y2=float(data2.split()[0]),float(data2.split()[1])x3,y3=float(data3.split()[0]),float(data3.split()[1])#边长运算a=math.sqrt(pow(x1-x2,2)+pow(y1-y2,2))b=math.sqrt(pow(x1-x3,2)+pow(y1-y3,2))c=math.sqrt(pow(x2-x3,2)+pow(y2-y3,2))#面积运算(海伦公式)s=(a+b+c)/2S=math.sqrt(s*(s-a)*(s-b)*(s-c))#输出面积print(S)#样例:#数据输入:#00#40#03#输出面积:6.0以上题目具体代码见附件第三章Python控制结构一选择题1.Python提供了结构化程序设计的3种基本结构,这3种基本结构是()A.递归结构、选择结构、循环结构B.选择结构、过程结构、顺序结构C.过程结构、输入输出结构、转向结构D.选择结构、循环结构、顺序结构2.以下保留字不属于分支或循环语句的是()A.elseB.inC.forD.while3.python语言中用于表示代码块所属关系的语法是()A.缩进B.冒号C.花括号D.括号4.以下关于Python循环结构的描述中,错误的是()A.continue只结束本次循环B.遍历循环中的遍历结构可以是字符串、文件、组合数据类型和range()函数等C.break用来结束当前当次语句,但不跳出当前的循环体D.Python通过for、while等保留字构建循环结构5.以下关于Python分支的描述中,错误的是()A.缩进是Python分支语句的语法部分,缩进不正确会影响分支功能B.Python分支结构使用保留字if、elif和else来实现,每个if后面必须有elif或elseC.if语句会判断if后面的逻辑表达式,当表达式为真时,执行if后续的语句块D..if-else结构是可以嵌套的二判断题在Python中,关系运算符可以连续使用,例如1<3<5等价于1<3and3<5。()如果仅仅是用于控制循环次数,那么使用foriinrange(20)和foriinrange(20,40)的作用是等价的。()带有else子句的循环如果因为执行了break语句而退出的话,则会执行else子句中的代码。()对于带有else子句的循环语句,如果是因为循环条件表达式不成立而自然结束循环,则执行else子句中的代码。()在条件表达式中允许使用赋值运算符“=”,不会提示语法错误。()三填空题Python提供了if语句、if-else语句以及语句来支持选择结构。在循环语句中,__________语句的作用是提前结束本层循环。在循环语句中,_______语句的作用是提前进入下一次循环。______________语句是else语句和if语句的组合。使用嵌套的if语句时,需要更加注意代码的,因为这决定了代码是处在哪一级代码块中的,从而影响程序的逻辑是否被正确地实现。四简答题1.简述三种基本控制结构的作用。2.while循环和for循环有哪些区别?3.举例说明break语句和continue语句的作用。4.写出Python的选择语句包括哪几种常用的形式?5.if语句中的表达式可以是哪些形式?答案 一选择题D2.B3.A4.C5.B二判断题√2.√3.×4.√5.×三填空题If-elif-else2.break3.continue4.if-else5.缩进四简答题顺序结构是最简单的控制结构,即按照语句的书写顺序依次执行。本书前面的示例代码均是顺序结构。选择结构又称分支结构,它表示根据程序运行时的某些特定条件来选择其中一个分支执行。选择结构可以分为单选择结构、双选择结构和多选择结构。循环结构指程序在满足某条件时会反复执行某些操作。循环结构可以分为当型循环和直到型循环。循环结构作为程序设计中最能发挥计算机特长的基本控制结构,可以减少程序代码重复书写的工作量。while循环是通过一个条件来控制是否要继续反复执行循环体中的语句。它的语法格式如下:while条件表达式:循环体for循环是一个计次循环,一般应用在循环次数已知的情况下。通常适用于枚举或遍历序列,以及迭代对象中的元素。它的语法格式如下:for迭代变量in对象:循环体其中,迭代变量用于保存读取出的值;对象为要遍历或迭代的对象,该对象可以是任何有序的序列对象,如字符串、列表和元组等;循环体为一组被重复执行的语句。当break语句出现在一个循环体内时,(如满足条件)循环就会立即终止,且程序将继续执行紧接着循环的下一条语句。从图1中可以看出,在for循环中,当i的值是3时,会调用break语句结束当前循环,此时的输出为0-3,也就是说,当i等于3时,循环就被break语句结束了。continue语句的作用是跳过本次循环中剩余的语句而强制执行下一次循环。从图2中可以看出,在for循环中,当i的值是2时,调用continue语句结束本次循环,此时不会执行print()语句而回到for语句开头执行下一次循环。因此,此时的输出结果中没有2。Python中选择语句主要有3种形式,分别为if语句、if…else语句和if…elif…else多分支语句。算术、字符、关系、逻辑。选择题:以下几段汉诺塔代码,哪段是正确的(a)A.defhanoi(n,fromTower,auxTower,toTower):
ifn==1:#递归边界条件,一步移动
print("Movedisk",n,"from",fromTower,"to",toTower)
else:
hanoi(n-1,fromTower,toTower,auxTower)#第一步,递归调用
hanoi(n-1,auxTower,fromTower,toTower)#第三步,递归调用 defmain():
n=int(input("Pleaseinputnumberofdisks:"))
print("ThesolutionoftowerofHanoiis:")
hanoi(n,'A','B','C') main()B.defhanoi(n,fromTower,auxTower,toTower):
ifn==1:#递归边界条件,一步移动
print("Movedisk",n,"from",fromTower,"to",toTower)
else:
hanoi(n-1,fromTower,toTower,auxTower)#第一步,递归调用
hanoi(n-1,auxTower,fromTower,toTower)#第三步,递归调用 defmain():
n=int(input("Pleaseinputnumberofdisks:"))
print("ThesolutionoftowerofHanoiis:")
hanoi(n,'A','C','D') main()C.defhanoi(n,fromTower,auxTower,toTower):
ifn==1:#递归边界条件,一步移动
print("Movedisk",n,"from",fromTower,"to",toTower)
else:
hanoi(n-1,fromTower,toTower,auxTower)#第一步,递归调用
hanoi(n-1,auxTower,fromTower,toTower)#第三步,递归调用 defmain():
n=int(input("Pleaseinputnumberofdisks:"))
print("ThesolutionoftowerofHanoiis:")
main(n,'A','B','C') main()D.defhanoi(n,fromTower,auxTower,toTower):
ifn==1:#递归边界条件,一步移动
print("Movedisk",n,"from",fromTower,"to",toTower)
else:
main(n-1,fromTower,toTower,auxTower)#第一步,递归调用
main(n-1,auxTower,fromTower,toTower)#第三步,递归调用 defmain():
n=int(input("Pleaseinputnumberofdisks:"))
print("ThesolutionoftowerofHanoiis:")
hanoi(n,'A','B','C') main()以下代码输出的是什么(a)a.NameErrorb.2c.TypeErrord.AttributeError3.请问绘制一条(1,1)到(2,2)的直线段需要用到以下哪段代码()A.importturtle
defdrawLine(x1,y1,x2,y2):
turtle.penup() turtle.goto(x1,y1) turtle.pendown()
turtle.goto(x2,y2)B.importturtledefdrawLine(x1,y1,x2,y2):
turtle.penup() turtle.goto(x1,y1) turtle.pendown()
turtle.circle(x2,y2)C.importturtle
defdrawLine(x1,y1,x2,y2):
turtle.penup() turtle.goto(x1,y1) turtle.pendown()
turtle.dot(x2,y2)D.importturtle
defdrawLine(x1,y1,x2,y2):
turtle.penup() turtle.goto(x1,y1) turtle.pendown()
turtle.line(x2,y2)请问这段代码输出是什么:()deffunc1():print("Thisisouterfunc")deffunc2():print("Thisisinnerfunc")func2()func1()A.ThisisouterfuncThisisinnerfuncB.ThisisouterfuncC.ThisisouterfuncThisisinnerfuncThisisouterfuncThisisinnerfuncD.ThisisouterfuncThisisinnerfuncThisisouterfunc若输入为2,1,则以下函数的返回值为?1
defsort2(a,b):#函数按升序返回a、b两个值2
ifa>b:3
returnb,a4
else:5
returna,bA:1,2B:2,1C:1,1D:2,2若输入为1,2,3,5,7,则以下函数的返回值为:defsum(*p):res=0foriinp:res+=ireturnresA:6B:15C:18D:0判断题:1.lambda函数是否被用于循环()2.生成器返回值依然需要用return实现()3.汉诺塔可以使用for循环实现()4.Python支持函数返回多个值()5.函数内部变量的作用域可以延伸到函数体外()填空题:1.定义函数需要函数头,函数名,形参以及()2.基本的参数值传递有两种方式分别是:()3.函数调用时没有传入没写参数值时,()会被传递给实参。4.同时赋值和函数返回多个值的语法都是使用了()的特性5.lambda函数与()函数功能相同。简答题:封装函数有什么好处?全局变量和局部变量有什么区别?请简述。请简述global语句的作用python中可变的对象包括,不可变的对象包括?Python中采用什么机制传递参数?答案:选择题:1A2A3A4B5C判断题:TRUETRUETRUETRUEFALSE填空题:1.函数体2.值传递和引用传递3.默认参数4.元组5.If简答题:1.函数的实现细节被封装在函数内,并对调用者隐藏,这被称为信息隐藏或封装。如果要修改或优化函数的实现,只要函数原型(函数名,参数个数及作用,返回值个数及作用等)不改变,用户程序对函数的调用就不会受影响。将功能封装为函数能够将一个大问题分解为更小的、更易于解决的多个小问题。每个小问题都可以用函数实现。这种方法可以使程序易于编写、重用、调试、测试、修改和维护。2.在函数体内部定义的变量叫做局部变量,在函数体外部定义的变量叫做全局变量。局部变量只能在定义的那个函数体的内部进行使用,而全局变量在所有函数内部都可以使用。.局部变量的生命周期为该变量创建到该函数体结束。全局变量可以贯穿整个程序。3.在Python中,global
关键字允许你修改当前范围之外的变量。它用于创建全局变量并在本地上下文中更改变量。不使用global和nonlocal语句在函数内部对全局变量的访问限于读取以及自运算(如“+=”、“*=”等运算),而不可能使用赋值运算符进行直接赋值(会被解释为创建同名的局部变量)。4.不可变对象包括数字(整型、浮点型、布尔型等)、字符串、元组[1]元组、列表和字典类型将在本书第5章中进行详细讲解。1][1]元组、列表和字典类型将在本书第5章中进行详细讲解。5.Python参数传递采用的是“传对象引用”的方式。这种方式相当于传值和传引用的一种结合。简单来说,这种方式在函数内部对形参所指向的对象的修改可以影响到函数外部,但形参变量本身不能修改指向其他对象。简述题1.在程序设计过程中,有很多操作的功能是非常相似甚至完全相同的。定义一个函数,可以创建可重用代码。函数不仅可以实现代码的复用,还可以保证代码的一致性,使程序易于编写、重用、调试、测试、修改和维护。位置参数要求参数按照函数定义时的顺序进行传递:例如,定义函数divide如下:defdivide(a,b):returna/b关键字参数调用函数通过类似“name=value”的格式传递每个参数:例如,上面的divide函数同样可以通过divide(a=6,b=2)的方法来调用。3.将直接或间接调用自身的函数称为递归函数,将使用递归函数来解决问题的编程技巧称为递归。递归是一种广泛应用的程序设计技术。递归能够将一个大型的、复杂的问题层层转换为一个与原问题相似的小规模问题来求解,给出一个自然、直观、简单的解决方案。二、实践题:1..defcelsiusToFahrenheit(celsius):Fahrenheit=celsius*1.8+32returnFahrenheitdeffahrenheitToCelsius(fahrenheit):Celsius=(fahrenheit-32)/1.8returnCelsius2.defscoretoGPA(N):#N为课程门数GPA=0;GROCE=0foriinrange(N):x,b=map(float,input().split())GROCE=GROCE+bifx>=60:#
如果大于
60
分,用相应的公式计算。如果小于
0
,就成绩为
0GPA=GPA+(4-3*((100-x)*(100-x))/1600)*belse:GPA=GPAprint("%.2f"%(GPA/GROCE))3.defsumDigits(n):string=str(n)ans=0foriinstring:ans+=int(i)returnansn=int(input())print(sumDigits(n))4.classSolution:defpermutation(self,s):iflen(s)<=1:return[s]str_list=[]foriinrange(len(s)):forjinself.permutation(s[0:i]+s[i+1:]):str_list.append(s[i]+j)returnstr_lista=''b=[]b=input()foreleinb:a+=str(ele)s=Solution()c=s.permutation(a)foreleinc:print(ele,sep='',end='')习题选择题如何在Python中创建一个空集合?A.set{}B.set()C.{}D.[]2.如何使用切片操作来获取列表my_list的从第2个元素到倒数第3个元素(包括本身)的所有元素?A.my_list[1:-3]B.my_list[2:-2]C.my_list[1:-2]D.my_list[2,-3]3.关于以下程序输出结果的描述,正确的选项是:l=[1,2,3,4,5,6,7]
print(l.pop(0),len(l))
A.16170706在Python中,下列哪个选项是正确的元组拆包(tupleunpacking)语法?a,b=(1,2)ab=(1,2)(a,b)=1,2a,b->(1,2)在Python中,下列哪种方法可以实现对字典的合并(不会改变原字典)?A.dict1+dict2B.dict1.extend(dict2)C.{**dict1,**dict2}D.dict1.update(dict2)对错题Python3中的字典和集合都是有序存储的。在Python中使用列表推导式时,可以使用if语句进行条件过滤,但不能使用elif或else语句列表切片得到的列表中的数据是原有数据的拷贝,而不是原有列表的元素。列表在存取元素时要比元组慢。在Python中,要检查一个元素是否在字典中,与检查一个元素是否在集合中的时间复杂度相同。填空题可以使用一行代码:获取my_list=[1,2,3,4,5,6]中所有3的倍数的元素组成的列表。使用_______方法可以向字典中添加一个新的键值对。在执行x,y,z=input().split()时,发生了序列的过程。使用生成一个以4为开始,10为结束的,每次递增2的等差数列._______内置函数可以将一个列表转换为集合。简答题简要说明列表、元组、集合与字典这几种数据结构的相同点和不同点。列表查找有几种方法?每种方法的主要特点是什么?什么是元组封装和序列拆封?这两种特性如何在编程中应用?试举例说明。集合和字典的底层数据结构是怎么实现的?请简要叙述列表、元组、集合、字典这四种不同数据结构适合什么样的应用场景。答案:选择题BCAAC对错题FTFTT填空题[iforiinmy_listifi%3==0]update拆包/拆封range(4,10,2)set()简答题相同点:都可以存储一系列数据。支持使用in关键字进行成员检查。支持使用len()函数获取元素数量。不同点:列表(List):有序的可变数据结构,使用方括号`[]`表示。列表中的元素可以是不同的数据类型,支持添加、删除、修改操作。列表支持索引和切片。元组(Tuple):有序的不可变数据结构,使用圆括号`()`表示。元组中的元素可以是不同的数据类型,但是不支持添加、删除、修改操作。元组支持索引和切片。集合(Set):无序的可变数据结构,使用花括号`{}`表示。集合中的元素必须是唯一的,不支持重复。集合中的元素必须是不可变数据类型(如数字、字符串、元组等)。集合支持添加、删除操作,但不支持修改操作。集合不支持索引和切片。字典(Dictionary):无序的可变数据结构,(Python3中变得有序)使用花括号`{}`表示。字典是键值对(key-valuepair)的集合。字典中的键必须是唯一的,不支持重复,且必须是不可变数据类型。字典支持添加、删除、修改操作。字典不支持索引和切片,而是通过键访问相应的值。(言之有理即可)1.in关键字:简单易用,检查元素是否在列表中。2.index()`方法:查找元素并返回其索引,如果元素不存在则抛出ValueError。3.列表推导式:筛选满足特定条件的元素。4.enumerate()函数:返回元素及其索引,适用于需要保留索引的场景。元组封装(Tuplepacking):将多个值组合成一个元组的过程称为元组封装。在Python中,你可以将多个值用逗号分隔,无需使用圆括号,Python会自动将它们组合成一个元组。例如:packed_tuple=1,2,3print(packed_tuple)#输出:(1,2,3)序列拆封(Sequenceunpacking):将序列(如元组、列表等)中的元素分别赋值给多个变量的过程称为序列拆封。要进行序列拆封,需要确保变量的数量与序列中的元素数量相同。例如:my_tuple=(4,5,6)a,b,c=my_tupleprint(a,b,c)#输出:456在编程中,元组封装和序列拆封可以用于多种场景,提高代码的可读性和简洁性。最常用的场景变量交换:a,b=b,a等在Python中,集合和字典的底层数据结构是基于哈希表实现的。哈希表是一种高效的数据结构,能够在平均情况下实现O(1)的查找、插入和删除操作。1.列表(List):适用于需要有序的、可修改的数据结构。-当需要频繁地添加、删除和修改元素时。-适用于实现栈、队列等数据结构。-当需要对数据进行索引和切片操作时。2.元组(Tuple):-适用于需要有序的、不可修改的数据结构。-当数据集合在整个程序运行过程中保持不变时。-当需要使用数据集合作为字典的键或集合的元素时(因为这些场景需要不可变数据类型)。-当需要对数据进行索引和切片操作,但不需要修改数据时。3.集合(Set):-适用于需要无序的、不重复的数据结构。-当需要进行成员检查、集合运算(如交集、并集、差集等)时。-当需要去除列表或其他序列中的重复元素时。4.字典(Dictionary):-适用于需要无序的、基于键值对存储数据的数据结构。-当需要通过键快速查找、添加或删除数据时。-当需要将数据与其他数据(如描述、属性等)相关联时。-当需要实现哈希表、缓存等数据结构时。****编写程序,接收用户输入的一行由空格分隔的若干个整数,计算这些数的平均数,并且统计有多少个数大于平均数,多少个数小于平均数。seq=list(map(int,input().split("")))avg=sum(seq)/len(seq)biggerNum=len([iforiinseqifi>avg])smallerNum=len([iforiinseqifi<avg])print(avg,biggerNum,smallerNum)2.编写程序,输入两行由空格分隔的若干个整数并分别存储到两个列表中。对这两个列表分别进行升序排列,输出排序后的两个列表。最后将两个列表合并为一个有序列表,输出合并后的列表。例如,假设用户第一行输入312,第二行输出423。先输出排序后的两个列表,即123和234,再输出合并后的有序列表122334。a=sorted([int(x)forxininput().split()])b=sorted([int(x)forxininput().split()])print(a)print(b)print(sorted(a+b))编写程序,提示用户输入一个整数的二维列表,程序指出行内元素和最大的一行,以及列内元素和最大的一列。m=[
[int(x)forxininput(f"输入第{i+1}行(由空格分隔):").split()]
foriinrange(int(input("输入行数:")))]rowSums=[sum(row)forrowinm]colSums=[sum(col)forcolinzip(*m)]maxRow=rowSums.index(max(rowSums))+1maxCol=colSums.index(max(colSums))+1print(f"行内元素和最大的行是:{maxRow}\n列内元素和最大的列是:{maxCol}")4.改编代码清单5-12,统计一段文本中每个字母(忽略字母的大小写)的出现频数,并按照频数降序输出。defparse_text(text):
#将段落字符串分为字母的列表
text="".join([ch.lower()forchintextifch.isalpha()])
returnlist(text)defmain():
text=input("Pleaseinputatexthere:")
letters=parse_text(text)
letter_count={}
forletterinletters:
#遍历每个字母
ifletterinletter_count:
#字母在字典中
letter_count[letter]+=1
else:
#字母不在字典中
letter_count[letter]=1
items=[(count,letter)for(letter,count)inletter_count.items()]
items.sort(reverse=True)
#将字典转换为列表以便于按频数排序
foriteminitems:
print(item[1],item[0])main()第6章使用模块一选择题下列哪一项是Python导入模块的语句()A.inputB.includeC.defD.import2.下列哪一项命令可以运行Python提供的包管理工具()A.pypiB.pythonC.copyD.pip3.下列导入模块以及调用模块内对象的语句对应关系不正确的是()A.导入:importfibonacci调用:fibonacci.recursiveFibonacci(7)B.导入:importfibonacciasfibo调用:fibo.recursiveFibonacci(7)C.导入:fromfibonacciimportrecursiveFibonacci调用:recursiveFibonacci(7)D.导入:importfibonacci调用:recursiveFibonacci(7)4.下列哪一项命令可以查看已安装的第三方包的包信息()A.piplistB.pipshow<PackageName>C.pipinstall<PackageName>D.pipinstall--upgrade<PackageName>5.video包的结构如下图所示,下列哪个语句可以加载子模块mp4()A.importformats.mp4B.importvideo.formatsasmp4C.fromvideo.formatsimportmp4D.fromvideoimportmp4二判断题import语句必须放在文件的开始位置()如果当前模块是主模块,则此时模块的内置属性__name__的值为"__main__"()使用“from模块名import*”的方式导入模块下的全部对象简单省事,推荐使用()使用“frompackageimportitem”语法时,item可以是一个子模块或子包,也可以是包中定义的一些名称(如函数、类或变量)。()为了让Python将目录当作包,目录下必须含有一个名为“__main__.py”的文件。()三填空题1.模块有一些内置属性,用于存储模块的某些信息,其中----------属性用来取得模块的名称。2.Python标准库内置的包含常见字符串操作的模块是----------。3.video包的结构如下图所示,加载子模块avi的语句可以是----------。4.使用pip管理第三方包,可以使用命令----------升级名称为<PackageName>的包。5.根据注释补全下列代码。代码清单importModule.py1 importfibonacciasfib #以fib为别名导入fibonacci模块2 ----------------------------------- #导入math模块的factorial函数3 print(factorial(fib.fibonacci(5)))四简答题1.什么是模块?使用模块有哪些好处?2.导入模块有几种方式?它们之间有什么区别?3.什么是包?包是如何组织模块的?4.如何在Windows下升级pip?5.video包的结构如下图所示,请用3种方式调用子模块avi中一个名为avireader的函数,该函数只有一个字符串格式的参数test.avi。答案一选择题D2.D3.D4.B5.C二判断题×2.√3.×4.√5.×三填空题__name__2.string3.importvideo.formats.avi或fromvideo.formatsimportavi4.pipinstall--upgrade<PackageName>5.frommathimportfactorial四简答题1.模块是包含Python定义和声明的文件。模块中的定义可以被导入到其他模块中从而被其他模块所使用,这就使得我们可以在多个程序中使用已经编写好的函数而无需将函数复制到每个程序中。2.①import模块名直接导入了模块名,可以通过“模块名.对象名”来访问模块内的对象②import模块名as模块的别名使用这种方法可以使用“模块的别名.对象名”来访问模块内的对象③from模块名import对象名[as别名]使用这种格式仅导入明确指定的对象,可以减少访问速度,同时不需要使用模块名进行调用。3.包是一种通过“点分模块名称”管理Python模块命名空间的方式。可以将这些模块按照某种方式组织在一个目录下,构成一个包结构。4.升级pip需要在Windows的命令行下输入如下命令:python-mpipinstall-Upip5.①importvideo.formats.avivideo.formats.avi.avireader("test.avi")②fromvideo.formatsimportaviavi.avireader("test.avi")③fromvideo.formats.aviimportavireaderavireader("test.avi")1.编写一个listOperation模块,在模块中封装列表的查找和排序等函数。#listOperation.pydeflist_search(list,item):
foriinrange(len(list)):
iflist[i]==item:
returni
return-1deflist_sort(list):
n=len(list)
foriinrange(n-1):
forjinrange(0,n-i-1):
iflist[j]>list[j+1]:
list[j],list[j+1]=list[j+1],list[j]
returnlist2.使用pip安装任意一个第三方包,引入该包并测试包中的函数。#pipinstallnumpyimportnumpyasnpx=np.array([0,30,45,60,90])print('sin(x)')print(np.sin(x*np.pi/180))print('cos(x)')print(np.cos(x*np.pi/180))print('tan(x)')print(np.tan(x*np.pi/180))第7章字符串与正则表达式一选择题下列哪个格式符代表有符号的八进制数()A.%xB.%cC.%oD.%e2.下列哪个函数可以返回在字符串中找到的第一个子串的位置()A.str.rfindB.str.findC.str.countD.str.ljust3.最早通用的编码系统为()A.UnicodeB.GB2312C.UTF-8D.ASCII4.以下数量限定词表示匹配前面的子表达式一次或多次的是()A.*B.+C.?D.!5.以下字符串作为pile()函数的参数传入时,最终可以匹配’\’的是()A.\B.\\C.\\\\D.以上均不对二判断题str.isalnum()的功能是如果字符串中的所有字符都是字母且串非空,则该函数将返回True,否则返回False。()在Python3.x中,所有字符串均以Unicode方式存储,因此可以直接创建中文字符串。()UTF-8编码每个字符被编码为4字节()使用”\w+\s\w+”可以匹配”HelloWorld”()使用已经编译好的正则表达式对象进行匹配会比字符串匹配快()三填空题1.定义mystr="HelloWorld",则mystr[0:5]的值为字符串"______"。2.定义str2='*'*5,则str2的值为字符串"______"。3.调用"-".join(["How","Are","You"])将返回字符串"______"。4.调用pile(pattern)将返回一个”______”5.调用re.match(pattern,string)如果匹配不成功,应该返回“______”四简答题1.字符串支持哪些基本操作?试举例说明。2.字符串支持的%操作符有何意义?3.试简述字符编码与字符的关系。4.正则表达式的主要用途5.可选参数flags有什么答案一选择题C2.B3.D4.B5.C二判断题×2.√3.×4.√5.√三填空题Hello2.*****3.How-Are-You4.正则表达式对象5.None四简答题1.①下标访问:字符串可以使用下标来访问该位置的单个字符。例如,定义mystr="python",则mystr[0]的值为字符串"p"。但是使用下标只能进行读取操作,而无法进行写入操作。②切片操作:使用切片操作可以按位置提取出字符串的某个子串。例如,定义mystr="HelloWorld",则mystr[0:5]的值为字符串"Hello"。③字符串拼接与复制:使用+和*可以实现字符串的拼接和复制。例如,定义str1="Hello"+''+"World",str2='*'*5,则str1的值为字符串"HelloWorld",str2的值为字符串"*****"。另外,使用增强型赋值运算符+=和*=也是可以的。④in/notin运算符:使用in/notin运算符可以判断一个字符串是否为另一个字符串的子串。例如,表达式'He'in'Hello'将返回True。⑤比较运算符:比较运算符可以用来对字符串进行比较。字符串的比较规则是字典序,即从两个字符串的第一个字符开始,依次比较每个对应位置字符的ASCII码值,直到出现不一样的两个字符或者两个字符串所有字符都比较完毕为止。例如,表达式'Jane'>'Jake'将返回True,表达式'hello'=='Hello'将返回False。⑥for循环遍历字符串:字符串也是可迭代对象,因此可以使用for循环来顺序遍历字符串中的每个字符。例如,执行下面的语句将依次打印字符串的所有字符:forchinmystr:print(ch,end='')上面代码执行的结果与直接执行语句print(mystr,end='')相同。2.字符串有一个独特的内置操作:%操作符(也被称为字符串格式化操作符)。使用这一操作符可以创建格式化的字符串,其语法格式类似于“format%values”,其中,format是带有格式符的模板字符串,values是若干个值,这一操作会将format串中的格式符替换为values中的值。3.字符编码是一种将字符映射为二进制数字的方式,使得计算机能够存储和处理文本数据。每个字符都对应着一个唯一的编码值。要将字符按照一定规则对应为一位二进制数以存储在计算机中,这个过程称为编码;将存储在计算机中的二进制数转换成所对应的的字符以显示出来,这个过程称为解码。4.正则表达式是一种字符串匹配的模式,可以用来检查一个字符串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。正则表达式(regularexpression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。5.在Python中,re包中的flags参数是可选的,用于控制正则表达式的匹配方式。flags参数可以是一个或多个标志,它们可以通过按位或运算符组合在一起。re包中的flags参数有以下几种作用:re.IGNORECASE:忽略大小写匹配。re.MULTILINE:多行匹配,改变’^‘和’$'的行为。re.DOTALL:使’.'匹配包括换行符在内的所有字符。re.UNICODE:使’\w’,‘\W’,‘\b’,‘\B’,‘\d’,‘\D’,‘\s’和‘\S’取决于Unicode字符属性。re.LOCALE:使’\w’,‘\W’,‘\b’,‘\B’取决于当前区域设定。1.早期手机的键盘如图7-7所示。要输入英文字母,需要按下键盘上所对应的数字键。例如,字母J对应5键,S对应7键,而空格对应0键。现编写程序,用户输入一个只包含大写字母与空格的字符串,程序输出对应的键盘上数字的字符串。例如,用户输入字符串“HELLOWORLD”,则程序应当输出“43556096753”。keyboard={
'A':'2','B':'2','C':'2',
'D':'3','E':'3','F':'3',
'G':'4','H':'4','I':'4',
'J':'5','K':'5','L':'5',
'M':'6','N':'6','O':'6',
'P':'7','Q':'7','R':'7','S':'7',
'T':'8','U':'8','V':'8',
'W':'9','X':'9','Y':'9','Z':'9',
'':'0'}s=input()result=''forcins:
result+=keyboard[c]print(result)2.编写程序,用户输入一个以十六进制数表示的数字,程序输出对应的十进制数。例如,用户输入“12CF”,则程序应输出“4815”。hex=input()dec=int(hex,16)print(dec)3.编写一个函数来返回两个字符串的最长公共前缀。例如,“dislike”和“discourage”的最长公共前缀是“dis”。函数头应定义为deflcp(s1,s2):deflcp(string1,string2):res=list()foriinrange(len(string1)):ch=string1[i]ifstring2[i]==ch:res.append(ch)else:return"".join(res)4.一些网站对用户输入的密码有一定要求。编写函数来检测用户输入的字符串是否为合法的密码。假设密码规则如下:①至少包含8个字符。②密码只能包含英文字母、数字和下划线。③在大写字母、小写字母、数字这三类字符中,密码至少包含两类。程序提示用户输入一段字符串作为密码,如果密码合法就输出“Validpassword”,否则输出“Invalidpassword”。importrestring=input()po=pile("[a-zA-z0-9_]{8,}")wa1=pile("[a-z_]{8,}")wa2=pile("[A-Z_]{8,}")wa3=pile("[0-9_]{8,}")ifre.match(po,string):ifre.match(wa1,string)orre.match(wa2,string)orre.match(wa3,string):print("Invalidpassword")else:print("Validpassword")else:print("Invalidpassword")第八章面向对象编程一选择题Python中的数据成员和函数成员默认都是()的A.publicB.privateC.protectD.无法被访问2.Python将以()开始的成员(但不能由双下划线结束)定义为私有成员A.数字B.单下划线C.字母D.双下划线3.加法操作对应()A.__add__(self,other)B.__sub__(self,other)C.__mul__(self,other)D.__and__(self,other)4.通过(),可以吸收现有类的数据和行为来创建新类,并添加新的性能来增强此类。A.继承B.重载C.类D.对象5.派生类定义一个与基类同名的函数;当对象访问该函数时,派生类的函数会()A.覆盖基类的函数B.调用基类的函数C.调用基类和派生类的函数D.基类和派生类的函数均不调用6.在派生类定义的函数中,如果想调用基类的同名函数,则需要在函数名前添加()作为限定A.双下划线B.基类名和点操作符C.括号D.下划线7关于Python多态以下选项正确的是()A.大多数面向编程语言都不支持多态特性B.Python本事不是多态语言C.Python支持多态D.Python不支持多态8关于面向对象编程下列说法正确的是()A.面向对象编程的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成的B.面向对象方法解决问题的思路就是主张从客观世界固有的事物出发来构造系统,提倡用人类在现实生活中常用的思维方法来认识、理解和描述客观事物C.面向对象方法是一种运用一系列面向对象的指导软件构造的概念和原则(如类、对象、抽象、封装、继承、多态、消息等)来构造软件系统的开发方法D.ABC9关于类和对象下列说法正确的是()对象是存在于某个时空的具体实体,而类则是拥有共同的结构、行为和语义的一组对象的抽象类可以作为对象的一种描述机制,用来形成程序中更大的模块类和对象的关系就好像数据类型和变量的关系。各个对象可以同属于一个类,但拥有彼此独立的属性。对象是类的实例,可以创建类的多个对象ABC10关于类成员下列说法正确的是()Python中的数据成员和函数成员默认都是公开(public)的,即成员在类外可以被访问利用地图做长尾关键词避免数据成员被直接修改的方法是将其设置为私有(private)成员Python中将以双下划线开始的成员定义为私有成员ABC二判断题1.Python允许函数重载。 ()self指向的是当前创建的对象,Python解释器会自动进行传入。 ()self参数表示函数的调用者被隐式地传递到函数中,在函数体内可以使用self参数来代表调用对象访问其成员。 ()在将数据成员设置为私有后,为了在类外可以操作成员的值需要提供get函数来获取值和set函数来设置值。 ()迭代是Python中一个很强大的功能,是访问集合元素的一种方式,利用迭代器可以进行优雅的遍历。 ()__iter__()方法返回一个迭代器对象。 ()一个类(Circle类)的成员也可以是另一个类(Point类)的对象。()派生类不能够根据自己的特殊性质定义新的成员。()派生类虽然继承了基类的数据成员,但由于它们都是私有成员,因此在派生类中不可访问,只能通过基类定义的公开函数成员进行访问。 ()在定义了派生类后,派生类所构造的对象既可以访问继承自基类的成员,又可以访问派生类自己定义的成员。 ()三填空题1.避免数据成员被直接修改的方法是将其设置为成员。2.Python将以开始的成员(但不能由双下划线结束)定义为私有成员。3.解释器会抛出-来表示该成员不能在类外部访问。4.如果想要获取一个自定义的类的迭代器,需要在类中实现和方法。5.当创建一个新类时,并不需要创建全新的数据成员和函数,可以指明这个类继承某个现有的类。这时,现有的类被称为-,继承实现的新类被称为。6.在Python中,私有函数(可以/不可以)被覆盖。7.在派生类定义的函数中,如果想调用基类的同名函数,则需要在函数名前添加作为限定。8.除了数据成员可以设置为私有成员之外,一些不希望在类外调用的函数也可以设置为。9.通过,可以吸收现有类的数据和行为来创建新类,并添加新的性能来增强此类。10.在定义了派生类后,派生类所构造的对象既可以访问的成员,又可以访问的成员。四简答题编写一个Fraction类来管理分数类型并提供一些运算和操作。简述Python中的继承。简述Python的isinstance函数。先设计一个Point类来表示平面中的点。Point类包含两个数据成员,用来表示平面坐标。再设计Circle类来表示圆。Circle类使用一个Point类的数据成员来表示圆心位置,使用另一个数据成员表示半径大小。定义一个学生信息类。答案 一选择题A2.D3.A4.A5.A6.B7.D8.D9.D10.D二判断题×2.√3.√4.√5.√6.√7.√8.×9.√10.√三填空题1.private2.双下划线3.AttributeError4.__iter__()__next__()5.基类派生类6.不可以7.基类名和点操作符8.私有9.继承10.基类派生类四简答题1.代码如下1 classFraction:2
#构造函数3
def__init__(self,a=0,b=1):4
ifb==0:5
raiseZeroDivisionError("Denominatorcan'tbezero.")6
divisor=gcd(abs(a),abs(b))7
self.__numerator=(-1ifb<0else1)*a//divisor8
self.__denominator=abs(b)//divisor910
#重载加法运算符11
def__add__(self,other):12
m=self.__denominator*other.__denominator13
n1=self.__numerator*other.__denominator14
n2=other.__numerator*self.__denominator15
returnFra
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 湖南省长沙市望城区2026届九年级中考一模数学试卷(含答案)
- 2025年吉安市高级实验中学选调教师笔试真题
- 南阳南召县招聘巡防队员招聘考试真题2025
- 书法机构营销活动方案(3篇)
- 团支部青年思想访谈情况的报告(3篇)
- 电子产品买卖双方质量承诺合同二篇
- 2026年山西政府采购评审专家真题解析含答案
- 2026年新疆高考政治考试真题(含答案)
- 2026年山西高考(数学)真题试卷附答案
- 2026年北京中考数学(真题)试卷附答案
- 污水处理厂财务管理制度
- 麻醉学硕士26届考研复试高频面试题包含详细解答
- 地下管线及其他地上地下设施的保护加固措施施工方案
- 四川成都市兴蓉集团有限公司招聘笔试题库2026
- 黄泥坝档案管理制度
- 2026 年民政局制式离婚协议书正式范本
- 2026年及未来5年市场数据中国初级塑料及合成树脂行业市场深度分析及行业发展趋势报告
- 暑假法制安全教育课件
- 医学人文关怀情景模拟与沟通技能整合
- 2025年零碳排放工厂建设项目可行性研究报告及总结分析
- 2025年乌鲁木齐法院书记员招聘考试真题及答案
评论
0/150
提交评论