admin 管理员组

文章数量: 887021


2024年2月26日发(作者:中国新闻社)

《Python程序设计教程》习题答案说明:以下习题答案是机械工业出版社出版的《Python程序设计教程》(作者:程细柱和程心怡)一书中各章节习题的答案,希望对读者有用。第1章Python的开发平台(进入Python城堡)一、判断题1.(╳)5.(√)2.(√)6.(╳)3.(╳)7.(√)4.(√)二、单选题1.B8.B15.B、D2.C9.C16.D3.D10.B4.B11.B5.D12.B6.C13.C7.C14.A三、填空题1.3.引用计数>>>和垃圾收集器2.交互(“命令”)和脚本文件5..py四、简答题1.答:具体过程如下:1)用户选择“开始”菜单的“所有程序”,选择打开Python的IDLE窗口;2)在IDLE窗口选择“File/NewFile”菜单打开程序编辑窗口;3)在编辑窗口中输入程序源代码;4)输入完源代码后,选择编辑窗口的“File/Save”菜单保存Python程序文件;5)选择编辑窗口的“Run/Module”菜单或者按快捷键F5执行该程序。2.答:Python语言具有简单易学、规范代码、能交互运行、免费开源、面向对象、可移植性好、可嵌入性强、丰富的标准库、高层的解释型语言等优点;它常常应用于人工智能、大数据、科学计算、云计算、云服务、网络爬虫、Web开发、桌面软件、游戏开发等领域。第2章Python的基础知识(初遇城堡语言)一、判断题1.(√)7.(╳)2.(╳)8.(╳)3.(√)9.(╳)4.(╳)5.(√)6.(╳)二、单选题1.D8.A15.B2.B9.B16.D3.D10.D17.C4.A11.D18.A5.A12.B19.A6.D13.D20.C7.C14.B21.D

三、填空题和False2.83.74.浮点型(float)、布尔型(bool)和复数类型(complex)5.关系运算、逻辑运算、位运算四、名词解释1.是指在运行期间才去做数据类型检查的语言。2.在运行时可以改变其代码结构(如引进或删除函数与对象等)的语言。3.一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型了。4.是指Python语言中的各种成分(如变量、常量等)的名称。5.是指其值可变的标识符。第3章流程控制语句(语句黑洞迷宫)一、判断题1.(╳)7.(√)2.(√)8.(╳)3.(√)9.(√)4.(╳)10.(╳)5.(√)11.(╳)6.(√)二、单选题1.3.C10.C17.A24.A31.A38.B4.B11.B18.B25.D32.D5.C12.D19.A26.C33.A6.C13.A20.A27.B34.A7.B14.B21.D28.C35.B三、填空题、四、程序分析题1.2.9,11,3.答:计算并输出数学中的九九乘法表。答:利用冒泡排序法给列表[3,9,7,15,5,13,11,1]从小到大排序,输出[1,3,5,7,13,15]答:当用户输入一个正整数n,计算从1到n(包含1和n)的和。

4.答:求1~100之间的所有偶数之和。五、程序设计题1.解:参考代码如下:x=int(input())ifx>=90:print("优秀")elifx>=80:print("良好")elifx>=70:print("中等")elifx>=60:print("及格")else:print("不及格")2.解:参考代码如下:year=int(input('请输入年份:'))ifyear%100==0:ifyear%400==0:print(f'{year}是闰年')else:print(f'{year}不是闰年')else:ifyear%4==0:print(f'{year}是闰年')else:print(f'{year}不是闰年')3.解:参考代码如下:s,i=0,1whilei<=100:s+=ii+=2print(s)或者采用以下代码:s=0foriinrange(1,101,2):s+=iprint(s)4.解:参考代码如下:s,p=0,1foriinrange(1,11):

p*=is+=pprint("运算结果是:{}".format(s))5.解:参考代码如下:n=int(input("请输入整数n(n≤100):"))forainrange(2,n+1):forbinrange(2,a):forcinrange(b,a):fordinrange(c,a):ifa**3==b**3+c**3+d**3:print("(%d,%d,%d,%d)"%(a,b,c,d))6.解:参考代码如下:importrandomcount=win=fail=0whileTrue:computer=t(1,3)player=int(input("请输入数字,1剪刀,2石头,3布,0手动退出:"))ifplayer==0:print("游戏结束")print(f"总共玩:{count}把,玩家赢:{win}把,电脑赢:{fail}把")breakelifplayernotin(1,2,3):print("请输入1-3之间的数字")print()continueelse:count+=1print("电脑出拳为:%d"%computer)ifplayer==computer-2orplayer==computer+1:print("玩家胜利!")win+=1elifplayer==computer:print("平局!")else:print("电脑胜利")fail+=17.解:参考代码如下:num1=int(input('请输入第1个数:'))num2=int(input('请输入第2个数:'))minNum=min(num1,num2)foriinrange(1,minNum+1):

ifnum1%i==0andnum2%i==0:gys=i#保存公约数gbs=(num1*num2)//gys#保存最小公倍数print(f'{num1}和{num2}的最大公约数为{gys}')print(f'{num1}和{num2}的最小公倍数为{gbs}')8.解:参考代码如下:importrandomd1=t(1,100)i=1whilei<=5:d2=int(input('请输入您所猜的数字:'))if(d2>d1):print('太大了')elif(d2

二、单选题1.DC2.AD三、填空题1.5.8.12.开notinsort()get()2.6.9.圆括号'gfedcba'items()3.7.10.-14.(1,2,3)[1,2,3,1,2,3,1,2,3]冒号11.逗号四、简答题1.答:1)列表和元组的相同点是:二者都是序列类型,是有序的容器。2)它们之间的不同点有:(1)定义的方式不同,列表用中括号[]定义,元组用小括号()定义;(2)列表是可变的,而元组是不可变的,若给元组的元素赋新值就会报错;(3)列表中有append()、insert()等函数,元组中没有。3)可以用tuple(列表)方法将列表强制转换为元组,同样可以用list(元组)方法将元组强制转换为列表。2.答:可以用以下代码实现:>>>old_list=[1,2,2,3,3,4]>>>new_list=list(set(old_list))3.答:可以用以下代码实现:>>>age=[1908,1912]>>>name=['蜥蜴','乌龟']>>>d=dict(zip(age,name))>>>d{1908:'蜥蜴',1912:'乌龟'}4.答:数组与链表是数据存储方式的概念,数组在连续的空间中存储数据,而链表可以在非连续的空间中存储数据;队列和堆栈是描述数据存取方式的概念,队列是先进先出,而堆栈是后进先出;队列和堆栈可以用数组来实现,也可以用链表实现。5.答:不可变类型有数字、字符串、元组、不可变集合;可变类型(列表、字典、可变集合。其中,不可变类型不允许变量的值发生变化,如果改变了变量的值,相当于是新建了一个对象,可以用id()方法可以查询两个对象的地址是否相同;可变数据类型允许变量的值发生变化,如果对变量进行append、+=等这种操作后,只是改变了变量的值,而不会新

建一个对象,变量引用的对象的地址也不会变化。6.答:filter()函数有两个参数,第一个为函数,第二个为序列,filter将序列中的每个元素作为参数传递给函数进行筛选,最后过滤掉函数值为False的元素,返回函数值为True(即符合条件)的元素组成的新列表。7.答:迭代器是访问集合元素的一种方式,多用于在for循环中。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。五、程序分析题1.答:该代码的功能是将句子中单词位置反转后形成新的句子,然后输出,其运行结果是:bamalovesbaobei2.答:输入12321时的运行结果是:它是一个回文数3.答:其运行结果是:海洋动物有:海豚,鲸鱼,海马,海狮,鲨鱼。4.答:以上程序的功能是统计字符串s中的单词出现的次数,其输出结果是:I:2,python:2,castle:2,like:1,travel:1,in:1,5.答:以上程序的功能是统计字符串中各个字母出现的次数,其输出结果是:'t':2,'h':2,'a':2,'n':1,'k':1,'':1,'f':1,'e':1,'r':1,6.答:以上程序的输出结果是:[('张三',['羽毛球','篮球']),('李四',['爬山']),('王二',['羽毛球','游泳'])]六、程序设计题1.解:参考代码如下:str1=input("请输入一串字母:")cipher=''key=3forchinstr1:a():cipher+=chelse:base="A"r()else"a"cipher+=chr((ord(ch)-ord(base)+key)%26+ord(base))print(cipher)2.解:参考代码如下:importre#导入正则表达式模块s=input("请按“RMB数字”或“USD数字”格式输入货币数:").upper()num=int(''.join(l('d+',s)))rate=6.88#当前美元汇率if'RMB'ins:print('换成美元','%.2f'%(num/rate),sep='')elif'USD'ins:

print('换成人民币','%.2f'%(num*rate),sep='')else:print('您的输入格式不正确!')3.解:参考代码如下:s="abc12ef67nn98efg3kk345m"forcins:a():#将s中的字母替换为空格s=e(c,"")li=()#用空格分隔字符串sprint(F'字符串s中的数字有:{li}')4.解:参考代码如下:s=input('Inputastring:')letter=0#字母个数digit=0#数字个数space=0#空格个数other=0#其他字符个数forcins:a():letter+=t():digit+=e():space+=1else:other+=1print(f"字母:{letter},数字:{digit},空格:{space},其他字符:{other}")5.解:参考代码如下:str="workHARDandimproveDAILY。"print(())#将小写字母全部转换成大写字母print(())#将大写字母全部转换成小写字母print(se())#将大小写字母相互转换print(lize())#将第一个字母转化为大写字母print(())#每个单词的第一个字母转化为大写第5章代码复用与函数(改造机器人)一、判断题1.(╳)2.(√)3.(√)4.(╳)5.(╳)7.(√)8.(╳)9.(√)10.(╳)11.(╳)13.(√)14.(╳)15.(√)16.(√)17.(╳)6.(√)12.(√)18.(╳)

19.(√)25.(√)20.(√)26.(╳)21.(╳)27.(√)22.(╳)28.(╳)23.(√)24.(╳)二、单选题1.2.C9.C16.B3.C10.A17.C4.A11.C18.D5.C12.A19.B6.C13.C20.C7.D14.A三、填空题1.5.9.局部自身或本身或自己122.嵌套6.结束条件或终止条件10.153.全局7.1611.逗号8.不定长四、简答题1.答:按以下规则定义函数:1)函数代码块以def关键词开头,后接函数标识符名称和圆括号();2)参数定义在圆括号的中间;3)函数的第一行语句可以选择性地使用文档字符串来说明函数的功能和特点;4)函数内容以冒号起始,并且缩进;5)可以return[表达式]结束函数,和返回结果,不带表达式的return相当于返回None。2.答:省略def声明的函数就是匿名函数,也称为lambda表达式,它可以接受任意多个参数(包括可选参数)并且返回单个表达式,它只能处理一些简单的运算。其优点是精简代码,省去了定义函数。3.答:pass语句什么也不做,是空语句占位符,其作用是保持程序结构的完整性。4.答:它们称为万能参数,解决了函数参数不固定的问题。其中,*arg会把位置参数转化为tuple,**kwarg会把关键字参数转化为dict。5.答:在调用一个函数的过程中,直接或间接地调用了函数本身这个就叫递归。6.答:当一个函数中存在yield关键字时,它就变成了一个生成器,每次迭代求值一次,节省内存。五、程序填空题1.答:fibo(n-1)+fibo(n-2)六、程序分析题1.答:MyData是可迭代类,其运行结果是:135七、程序设计题1.解:参考代码如下:defisPrime(num):importmathn=int((num))foriinrange(2,n+1):ifnum%i==0:

returnFalsereturnTrue#定义列表保存质数list1=[]fornuminrange(2,100):ifisPrime(num):(num)print(list1)2.解:参考代码如下:defremoveDuplicates():x=eval(input())y=[]foriinrange(0,len(x)):ifx[i]notiny:(x[i])returny#以下是主程序代码d=removeDuplicates()print(d)3.解:参考代码如下:defgetSolution():frommathimportsqrta,b,c=eval(input())if(b*b-4*a*c)<0:print("无实数解")else:x1=(-b+sqrt(b*b-4*a*c))/(2*a)x2=(-b-sqrt(b*b-4*a*c))/(2*a)print("x1=%0.2f,x2=%0.2f"%(x1,x2))return#以下是主程序代码getSolution()第6章Python类与对象(标本馆中的类)一、名称解释1.用来描述相同属性和方法的一类事物,它定义了该组对象的共有特征。2.类的实例,管理一系列函数的实体。3.类对象所拥有的属性,实例对象也共有。4.一个对象所拥有的属性。5.用@classmethod修饰,第一个参数一般是cls的类对象所拥有的方法。可以通过类对象和实例对象就行调用来使用。

6.用@staticmethod修饰的方法,不需要cls等参数。7.当子类继承父类的时候,父类的方法不能满足子类的要求时,子类会对其父类的方法重写,实现扩展功能,重写实质就是覆盖父类方法。二、单选题1.三、简答题1.答:面向对象编程,是一种解决软件复用的设计的一种编程方法,它通过封装的思想,把功能函数交给一个对象去管理,用到的时候就可以直接创建对象,通过对象来调用实例方法。2.答:面向对象的三大特征是封装性、继承性和多态性。其中,封装是把属性和方法定义在类中,通过类例实化出对象,用对象来调用属性和方法,其意义是保护数据的完整性,外界只能访问方法不能去修改里面的属性;继承是子类复用父类的方法和属性;多态是指同一个方法,不同对象调用会实现的不同功能的表现形式。四、程序分析题1.答:以上程序用类的封装技术定义一个兰花类,包含名称(__name)、门(__phylum)、种(__species)、产地(__home)和特征(__feature)等私有属性,和介绍其特性的私有方法,以及显示、获取与设置兰花属性的公有方法。2.答:以上程序设计了动物(Animal)类,其运行结果如下:游客好,该动物名叫华南虎大奔。它已经13岁。五、程序设计题1.解:参考代码如下:classElves:#定义构造函数def__init__(self,name="help",sex="阳",height=1.3,weight=35):====weight#定义成员函数defintroduction(self):print(f"大家好,我的姓名叫{}")print(f"我是{}精灵")print(f"我的身高是{}米")

print(f"我的体重是{}公斤")return2.解:参考代码如下:classElves:#定义构造函数def__init__(self,name="未知名",sex="阴",age=15):===age#重载格式转换方法def__str__(self):info=f"大家好,我名叫{},我是{}精灵,我今年{}岁。"returninfo#重载关系运算符def__gt__(self,other):ifisinstance(other,Elves):return(>)else:raiseException("比较对象必须是Elves类型")#重载关系运算符==def__eq__(self,other):ifisinstance(other,Elves):return(==)else:raiseException("比较对象必须是Elves类型")第7章Python的异常处理(森林中的异常)一、单选题1.D8.D15.D2.B9.D16.C3.D10.D17.A4.A11.A18.C5.D12.D6.B13.D7.C14.C二、填空题1.5.用户自定义异常BaseException3.7.异常对象yraise

11.运行y12.后面三、程序分析题1.答:1)当输入12ab时的运行结果是:异常信息:invalidliteralforint()withbase10:'12ab'finally执行完毕2)当输入56时的运行结果是:number:56没有异常finally执行完毕2.答:该程序设计了一个打开文件的上下文管理器myOpen类,其__enter__方法实现文件的打开功能,而__exit__方法实现文件的关闭功能和显示异常信息的功能。主程序中的with语句利用myOpen打开文件,并将字符串“Python城堡”写入该文件中。如果写入成功,则显示“正常结束!”,否则显示异常信息。四、程序设计题1.解:参考源代码如下:#定义异常类classCustomException(Exception):def__init__(self,msg):=msgdef__str__(self):#以下代码是对自定义异常的功能测试specialty=("人工智能","大数据","计算机软件","生物制药")sex=("男","女")person={}try:myName=input("请输入姓名:")mySex=input("请输入性别:")ifmySexnotinsex:raiseCustomException("性别必须是'男'或'女'。")mySpecialty=input("请输入专业:")ifmySpecialtynotinspecialty:raiseCustomException("输入的专业不满足要求。")person["name"]=myNameperson["sex"]=mySexperson["specialty"]=mySpecialtyexceptCustomExceptionase:print(F"错误提示:{e}")else:print(F"您输入的信息是:{person}")

2.解:参考源代码如下:s='Python'whileTrue:try:ch=input("请输入'Python'的索引,输入'q'则退出:")ifch=='q':breakn=int(ch)print(F"字符串{s}的第{n}个字符是:{s[n]}")exceptExceptionase:print(F"异常信息是:{e}")3.解:参考源代码如下:courseScore={}course=["语文","数学","英语","物理","生物","化学"]whileTrue:try:name=input("请输入课程名称,输入'q'则结束:")ifname=='q':breakassertnameincourse,"输入的课程名称不正确"result=input("请输入该课成绩:")score=int(result)assertscore>=0andscore<=100,"输入的成绩不正确"courseScore[name]=scoreexceptExceptionase:print(F"产生异常:{e}")print(F"相关课程的成绩:{courseScore}")第8章sqlite3数据库编程(基因库探秘)一、判断题1.(╳)7.(╳)2.(√)8.(╳)3.(√)9.(√)4.(╳)10.(╳)5.(╳)11.(√)6.(√)12.(√)二、填空题1.非空约束5.乐观锁tency(一致性)3.主键4.外键三、简答题1.答:包含以下几种类型:1)NULL:标识一个空值;2)INTERGER:整数类型;3)REAL:浮点型;4)TEXT:字符串类型;5)BLOB:二进制类型。2.答:主要包含以下过程:

1)导入数据模块。如:importsqlite32)建立数据库连接对象。如:conn=t("F:/")3)创建游标对象。如:cur=()4)执行SQL语句。如:e("select*frommyTable")5)获取游标中的查询结果。如:lst1=ll()6)提交或回滚事务。如:()7)关闭游标与数据库连接。如:()四、程序分析题1.答:以上函数的功能是通过函数参数保存的文件路径,建立数据库连接对象,并且创建表格,函数返回连接对象。2.答:以上函数的功能是根据用户输入的“精灵工号”查找精灵表中对应的记录。3.答:以上函数的功能是利用游标对象查找精灵表中的所有精灵记录。4.答:以上函数的功能是利用游标对象添加一条记录到精灵表中。5.答:以上函数的功能是利用游标对象修改一条记录。6.答:以上函数的功能是利用游标对象删除对应工号的记录。五、程序设计题1.解:参考代码如下:importsqlite3myDbStr="F:/"conn=t(myDbStr)cur=()e("select*frommyTable")lst1=ll()()()print(f"表格内容:{lst1}")第9章Python的文件管理(寻找黑客文件)一、判断题1.(√)7.(√)13.(╳)2.(╳)8.(╳)3.(√)9.(√)4.(√)10.(√)5.(╳)11.(╳)6.(╳)12.(√)二、单选题1.三、简答题

1.答:三个方法的区别如下:1)read([size])方法从文件当前位置起读取size个字节,若无参数size,则表示读取至文件结束为止,它范围为字符串对象;2)readline()方法每次读出一行内容,所以,读取时占用内存小,比较适合大文件,该方法返回一个字符串对象;3)readlines()方法读取整个文件所有行,保存在一个列表(list)变量中,每行作为一个元素,但读取大文件会比较占内存。2.答:参数mode是文件的访问模式,有以下取值范围:r:以只读方式打开,并将文件指针指向文件头,文件不存在会报错,它是默认方式。w:以只写方式打开,并将文件指针指向文件头,如果文件不存在则创建,文件存在则将其内容清空。a:以追加方式打开,并将文件指针指向文件尾部,如果文件不存在则创建。r+:在r的基础上增加了可写功能。w+:在w的基础上增加了可读功能。a+:在a的基础上增加了可读功能。b:读写二进制文件(默认是文本文件),需要与前面几种模式搭配使用,如rb、wb、ab、rb+、wb+和ab+等。3.答:1)w+在打开文件时会先将文件内容清空;2)r+打开文件时不会将文件内容清空,但“当前文件指针”位于文件开始处,输入内容会覆盖文件开始位置的内容;3)a+打开文件时也不将文件内容清空,但“当前文件指针”位于文件末尾处,所以输入的内容会写到文件末尾。4.答:1)以读/写模式打开文件,如f=open('诗词.txt','r',encoding='utf-8');2)读或写取文件内容,如print(());3)关闭文件,如()。四、程序分析题1.答:其功能是将列表ls中的诗写入CSV文件中,该文件是逗号分隔的纯文本文件,它可以被Excel软件读写。2.答:其功能是将列表内容以二进制方式存盘,然后以文本的方式读出,其结果如下:1)将列表内容以二进制方式存盘。2)以文本方式读取数据文件,内容如下:《新韵·江水传情》文/红尘笠翁儿离粤北求学早,父念亲人久望江。点点思情传海水,深深祝愿汇珠江。2019/11/6五、程序设计题1.解:参考源代码如下:sourcefile=open("f:/春梦.txt","r")targetfile=open("f:/春梦","w")lineNo=""

try:for(num,value)inenumerate(sourcefile):ifnum<9:lineNo="0"+str(num)else:lineNo=str(num)line=lineNo+":"+(line)print("给文本文件内容添加行号结束")exceptExceptionase:print(F"产生异常:{e}")finally:()()2.解:参考源代码如下:importpickledct={"诗名":"丝雨飞歌","作者":"红尘笠翁"}lst=["无边丝雨溅香楼,","满目鲜花泪水流。","思恋声声云雾送,","情歌句句占心头。"]print("1)用序列化方式将字典和列表存盘。")withopen("f:/","wb")asf1:(dct,f1)#对象序列化(lst,f1)#对象序列化withopen("f:/","rb")asf2:print("2)用反序列化方式读取文件内容如下:")print((f2))#对象反序列化print((f2))#对象反序列化第10章Python多线程机制(软件谷的黑客线程)一、判断题1.(╳)7.(╳)13.(╳)2.(√)8.(√)14.(√)3.(√)9.(╳)4.(√)10.(√)5.(╳)11.(╳)6.(√)12.(√)二、单选题1.A2.C3.A4.D5.D三、简答题1.答:运行机制:(1)进程是一个具有独立功能的程序,系统资源和调度的一个基本单位。(2)线程是一个进程的一个实体,CPU调度的分配的单位,占有资源少,未处理的数据会在缓存区保存。优缺点:(1)多进程稳定性好,单个进程出现问题不会影响其他进程的运行;缺点就是

消耗资源太大,创建时代价大,系统调度会出现问题。(2)多线程共享内存资源,运行效率要高效一些;缺点是,任何一个线程出现问题,会造成整个进程出现崩溃。2.答:是多个线程同时访问同一互排斥资源时,必须等待其它线程的资源访问结束,其缺点是浪费时间,工作效率低。3.答:进程是系统资源分配和调度的一个独立单位,每个进程都有自己的内存空间,占用内存资源比较多,上下文切换开销大,比较稳定和安全。线程CPU处理器调度的基本单位,进程中的一个执行单位可调度的实体,占用系统资源很少,同一个进程中的多个线程可以共享全局变量,通信主要是共享进程内存,资源开销很小,不够稳定,易丢失数据。4.答:GIL是Python的全局解释器锁。为了数据安全,每个CPU在同一时间只能执行一个线程,即允许一个线程拥有Python解释器,并且上锁,当该线程运行完毕或者无法继续运行(如遇到I/O)时,开锁让出CPU,所以在单核CPU下的多线程其实都是并发运行的,而不是并行的。5.答:在多线程的情况下,线程之间在共享全局变量时,会有争取和修改全局变量,为了保证数据的正确性,同一个时刻只有一个线程在存取。四、程序分析题1.答:以上程序利用递归锁RLock编程解决吃饭时,当一人只抢到了碗,另外一人只抢到了勺而相互等待对方让出资源的死锁问题,其的运行结果如下:客户1拿到碗客户1拿到勺客户1吃完饭客户2拿到勺客户2拿到碗客户2吃完饭2.答:以上程序用条件变量Condition模拟生产者与消费者的同步,其运行结果如下:生产者生产商品1...生产者生产商品2...消费者消费商品1...消费者消费商品2...生产者生产商品3...生产者生产商品4...消费者消费商品3...消费者消费商品4.........3.答:以上程序是用互斥锁Lock实现两个用户线程从网上银行的共享账户中取款的互斥操作,其运行结果如下:Thread-1取出100元,账户余款500元

Thread-2取出100元,账户余款400元Thread-2取出100元,账户余款300元Thread-2取出100元,账户余款200元Thread-1取出100元,账户余款100元Thread-1取出100元,账户余款0元五、程序设计题1.解:参考代码如下:importthreadingasthimporttime,random#存款方法defsaveMoney(num):threadName=t_thread().getName()e()#上锁进入临界区temp=money#访问现有资金temp=temp+num#计算存款余额print(f"{threadName}存入{num}元,账户余款{temp}元n")(t(1,2))#睡眠1-2秒,模拟存款花费的时间money=temp#更新账户数据e()#开锁离开临界区#线程执行体函数defrun():foriinrange(3):saveMoney(100)#每次存款100元#主程序if__name__=='__main__':money=0#账户余款初值myLock=()#创建互斥锁st1=(target=run)#创建线程()#启动线程1st2=(target=run)#创建线程()#启动线程2第11章tkinterGUI编程(修复被黑软件)一、判断题1.(√)7.(╳)13.(╳)2.(√)8.(√)14.(╳)3.(╳)9.(╳)15.(√)4.(╳)10.(√)16.(√)5.(√)11.(√)17.(╳)6.(√)12.(╳)18.(╳)二、单选题1.3.D10.A4.C11.C5.B12.B6.D13.B7.A14.C

18.D25.D32.B19.B26.C33.C20.C27.D34.B21.A28.A35.A三、程序分析题1.解:以上代码的运行结果如下:2.解:以上代码的运行结果如下:3.解:以上代码的运行结果如下:四、程序设计题1.解:参考代码如下:importtkinterastkroot=()

("登录窗口")defreg():'''登录校验'''username=e_()passwd=e_()len_user=len(username)len_pwd=len(passwd)ifusername=='admin'andpasswd=='123':l_msg['text']='登录成功!'l_msg['fg']='green'else:l_ure(text='登录失败!',fg='red')e_(0,len_user)#清空输入框e_(0,len_pwd)#第0行登录结果提示l_msg=(root,text='')l_(row=0,columnspan=2)#跨越两列显示#第1行用户名输入框l_user=(root,text='用户名:')l_(row=1,sticky=tk.W)e_user=(root)e_(row=1,column=1,sticky=tk.E,padx=3)#第2行密码输入框l_pwd=(root,text='密码:')l_(row=2,sticky=tk.E)e_pwd=(root)e_pwd['show']='*'#隐藏显示e_(row=2,column=1,sticky=tk.E,padx=3)#第3行登录按钮b_login=(root,text='登录',command=reg)b_(row=3,column=1,sticky=tk.W,pady=10)b_cancel=(root,text='取消',command=)b_(row=3,column=1)op()2.解:参考代码如下:fromtkinterimport*root=Tk()lt=['C++程序设计','java编程','python语言','php程序设计']ltbox=Listbox(root)foriteminlt:(0,item)()op()

3.解:参考代码如下:fromtkinterimport*window=Tk()("按钮事件测试")ry('200x50')var=StringVar()('点击我呀')s=TruedefhitMe():globals#s为全局变量ifs:s=('我被点击了')else:s=('点击我呀')#设置按钮b=Button(text='按钮',width=20,textvar=var,command=hitMe)()op()4.解:参考代码如下:eboxasmswin=()("菜单测试")menubar=(win)win["menu"]=menubarmyMenu=(menubar)_cascade(label="菜单",menu=myMenu)_command(label="退出",command=y)#定义菜单的事件处理方法deffileHandling():fo('提示框','菜单项被点击!')lst=["菜单项1","菜单项2","菜单项3"]foriinlst:_command(label=i,command=fileHandling)op()第12章Python的模块与库(重返现实中)一、判断题1.(√)2.(╳)3.(√)4.(╳)5.(╳)6.(√)

7.(√)8.(╳)9.(√)10.(╳)11.(√)二、单选题1.三、简答题1.答:模块就是一组程序功能的组合,它可以包含变量、Python语句、函数定义、类定义、对象声明等内容,它对应以.py为后缀的程序文件,其它程序可以通过import语句导入和使用它,模块分为Python内置模块、扩展(第三方)模块和用户自定义模块3种。2.答:t模块属于网络请求模块,它同(地址解析模块)、arser(文本解析模块)和(网络异常处理模块)都是urllib模块的子模块,利用它们可以从网络获取网页信息。3.答:http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。4.答:1)GET请求是将请求数据附加在URL之后,以?分割URL和传输数据,多个参数用&连接,数据信息可以在URL中直接看到;而POST请求是将请求数据放在请求头中的,我们是无法直接看到的。2)GET提交的数据有大小限制,一般不超过1024个字节;而POST请求一般没有大小限制,所以少量的数据使用GET,大量的数据使用POST。3)GET请求因为数据参数是暴露在URL中的,所以安全性比较低,比如密码是不能暴露的,就不能使用GET请求;POST的请求参数信息是放在请求头的,所以安全性较高,可以使用。当然,如果使用HTTPS协议则安全性更好。5.答:IPv4和IPv6,它们的主要不同点是:1)IPv4中规定IP地址长度为32,而IPv6中IP地址的长度为128,所以IPv6的地址空间更大;2)IPv6具有更高的安全性。四、程序分析题1.答:以上代码的功能是先导入t模块,然后打开网页后,读取网页的前300个字节,并将字节转为字符输出。五、程序设计题1.解:参考代码如下:#用户自定义模块n1201module的代码#定义求阶乘的函数deffactorial(n):p=1foriinrange(1,n+1):p*=i

returnp#测试模块的代码importn1201moduleasm1x=int(input("请输入要计算阶乘的整数:"))print(f"{x}!={ial(x)}")


本文标签: 文件 对象 函数 方法 功能