版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第一章判断题:1-4: 第二章判断题:1-5: 6-10: 11-15: 添加代码题:1我们都知道,下面的代码:print “I like writing in Python.”print “It is so much fun.”执行后,运行结果为:I like writing in Python.It is so much fun.你能只用一行代码实现上述效果吗?第3章 习题参考答案:选择题ABABB简答题1break或continue语句用来提前跳出循环,即循环条件没有满足False时或者序列还没被完全递归完,也会停止执行循环语句。其中,continue 语句用于跳出本次循环,而break
2、用于跳出整个循环。该程序段的功能是检查用户输入的用户名及密码是否正确,输入正确则显示“登录成功”;输入错误则由用户重新输入,但输入错误次数超过3次则不允许再次输入,直接显示“登录失败”。break在此程序段中的作用是当输入用户名和密码正确时或输入错误次数超过3次时直接结束循环。2Python语句代码缩进的书写原则:在逻辑行首的空白(空格和制表符)用来决定逻辑行的缩进层次,从而用来决定语句的分组。这意味着同一层次的语句必须有相同的缩进。有相同的缩进的代码表示这些代码属于同一代码块。代码段1和代码段2的区别在于“print(sum)”这个语句的位置。在代码段1中,“print(sum)”和“for
3、 i in range(10):”在同一层次,表示它们是并列的语句,“print(sum)”不在循环体内,所以循环结束后才输出sum的值;而在代码段2中,“print(sum)”在循环体内,表示每循环一次都会输出一次sum的值。3错误1:循环嵌套代码的缩进错误2:range(1,4)只是包括1,2,3,不包括4。所以要改成range(1,5)错误3:if( i!=j!=k)的写法不对。改为if( i!=j and j!=k)4输出结果1355. bonus1 = 100000 * 0.1bonus2 = bonus1 + 100000 * 0.500075bonus4 = bonus2 + 2
4、00000 * 0.5bonus6 = bonus4 + 200000 * 0.3bonus10 = bonus6 + 400000 * 0.15i = int(raw_input(input gain:n)if i = 100000: bonus = i * 0.1elif i = 200000: bonus = bonus1 + (i - 100000) * 0.075elif i = 400000: bonus = bonus2 + (i - 200000) * 0.05elif i = 600000: bonus = bonus4 + (i - 400000) * 0.03elif i
5、 =90: print(A)else: 60=score90: print(B)else: print(C)7. str=input(enter a sentence:)for char in str: if 65=ord(char)=90 or 97=ord(char)=122: print(英文字母) elif ord(char)=32: print(空格) elif 48=ord(char)0: print(num%10,end=) i+=1 num=num/10print(n这个数是%d位数%i)10. for i in range(100,1000): if i %7=0 and i
6、/10%10=2: print (i)11.j=0for i in range(2000,2501): if i %400=0 or i%4=0 and i%100!=0: j+=1 print(i,end= ) if j %8=0: print()12. i=7while True: if i%2=1 and i%3=2 and i%4=3 and i%5=4 and i%6=5 and i%7=0: print(i) break i+=113. total=13i=0while total=26: total=total*(1+0.008) i+=1print(i)14. num=int(
7、input(please enter num:)flag=Truefor i=2 to num-1: if num%i=0: flag=Falseif flag: print(%d是素数%num)else: print(%d不是素数%num)15. k=0for i in range(1,1001): flag=True for j in range(2,i): if i%j=0: flag=False if flag: k+=1 print(i,end= ) if k%10=0: print() k=116. a=int(input(enter a:)b=int(input(enter b:
8、)c=int(input(enter c:)if ac: if bc: print(a,b,c) else: print(a,c,b)else: print(c,a,b)实训题求最大公约数代码参考书上例3.6。求出最大公约数后即可相应求出最小公倍数。求1!+2!+3!+20!参考代码:sum=0for i in range(1,21): t=1for j in range(1,i+1):t*=jsum+=tprint(sum)输出斐波那契数列的前20项参考代码:f1=1f2=1for i in range(1,21):print(f1,f2) f1+=f2 f2+=f1编程找出1000之内的所
9、有完数,并输出其因子。参考代码:l = for n in range (1,1001): for a in range (1,n): if n%a =0: l.append(a) if sum(l)=n: print (l) print (n) l = 输出九九乘法表参考代码:for x in range(1,10): for y in range(1,x+1): r=x*y print (%d * %d = %-2d %(y,x,r), ,end=)#%d格式化成整数,- 代表左对齐,数字代表占位。 print (end=n)#这一句代表,每次遍历完一个周期换行,并下一次遍历的结果将从该行输
10、出。如果是print()将从下一行开始输出。输入一系列数字,并求和与求平均数。sum=0.0i=0num=int(input(请输入数字,以0结束)while num!=0: sum+=num num=int(input(请输入数字,以0结束) i+=1average=sum/iprint(加起来总数为%d,平均数%f%(sum,average)第4章课后练习答案:一、填空题:1h/e/l/l/o/ /w/o/r/l/d/! 2.回车换行 3.False 4.(1) str-1:-1 (2) str.upper() (3)str5:12 (4)str:2 (5) /.join(list(str
11、) (6)www.sina.www.gdpu.www.good.www.tianya.replace(www,万维网) 5.c:test.htm 6. 1 7. HELLO WORLD 8. True 9. 123456 10.True二、简答题:1.假设有一段英文,其中有单词中间的字母“i”误写为“l”,请编写程序进行纠正。x = i am a teacher,i am man, and i am 38 years old.I am not a businessman.x = x.replace(i ,I )print(x)2.有一段英文文本,其中有单词连续重复了2次,编写程序检查重复的单词
12、并只保留一个。例如文本内容为“This is is a desk.”,程序输出为“This is a desk.”x=Thisisaadesk.pattern=pile(r(?Pbw+b)s(?P=f)matchResult=pattern.search(x)x=x.replace(matchResult.group(0),matchResult.group(1)print(x)3.编写程序,用户输入一段英文,然后输出这段英文中所有长度为3个字母的单词。import rewords=input(Input the words:)l=re.split(. +,words) #使用空格分隔词语,得
13、到各个单词print(l)i=0 #这里我设置的是计数器for i in l: if len(i)=3: #如果单词的长度为3 输出 print(i) else: print()4.求s=a+aa+aaa+aaaa+aa.a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。num=int(input(请输入一个数字)count=int(input(请输入数字的位数)sum=0temp=0for i in range(count): temp+=num*10*i print(temp) sum+=tempprint(sum)5. 一个
14、数如果恰好等于它的因子之和,这个数就称为完数。例如6=123。编程找出1000以内的所有完数。#encoding:utfn=input(Please input a number!)sum=0printS=for i in range(1,n): if n % i=0: sum=sum+iif sumn: print %d is 不足数%nelif sumn: print %d is 丰沛数%nelse: print %d is 完数%n printS= str(n) + = for i in range(1,n): if n% i=0: printS+= str(i) + + print p
15、rintS0:len(printS)-16. 打印出如下图案。 (1)for i in range(1,10): print( *(10-i),end=) print(str(i)*(2*i-1)(2)n=123456789for i in n-1:0:-1: s=n-1:int(i)-2:-1 print (%s*%d+%d=%d%(s,9,int(i)-2,int(s)*9+int(i)-2)实战作业1、输入一串字符串,判断它是不是回文数。如Madam,ImAdam是回文数。提示:要把一串字符中所有的标点符号去除,并把所有的大写字符变成小写字符再进行比较。如“Madam,ImAdam“,转
16、化后变成“madamimadam”,正读与逆读是一样的,为回文。import string #导入字符串函数库 string.punctuation=!#$%&()*+,-./:;?_|string.whitespace=tnx0bx0cr import stringoriginalStr=raw_input(enter a string:)modifiedStr=originalStr.lower()badChars=string.whitespace+string.punctuationfor char in modifiedStr: if char in badChars: modifi
17、edStr=modifiedStr.replace(char,)print the originalStr is: %snthe modifiedStr is: %snthe reverseStr is: %s%(originalStr,modifiedStr,modifiedStr:-1)if modifiedStr=modifiedStr:-1: print 字符串%s是回文%originalStrelse: print 字符串%s不是回文%originalStr2. 计算Poker中出现各种手数的概率,现给出Poker-hand-testing.data文件,其中有1000000条记录,
18、要求读出每一条记录,并统计以下问题:以下是每条记录的格式 : 3, 10, 1, 7, 2, 12, 4, 2 , 2, 1, 04, 9, 4, 12, 4, 13, 2, 6 , 3, 4, 03, 2, 2, 2, 3, 12, 3, 1 , 4, 2, 34, 11, 2, 8, 1, 13, 4, 7 , 1, 7, 14, 8, 3, 8, 1, 3, 1, 4 , 3, 7, 12, 7, 2, 5, 3, 10, 4, 13 , 3, 7, 11, 4, 3, 4, 3, 5, 4, 10 , 2, 10, 2以下是各种类型的牌的编号: 图4-9 牌的类型要求:(1)计算Pok
19、er有多少行;(2)计算包含1对牌的总手数与出现的概率;(3)计算所有牌类型出现的手数及概率 。# count poker hands# 1. open the poker data file for readingpoker_file = open(poker-hand-testing.data,r)total_count_int = 0 # 2. create and initialize variable to hold the total countpair_count_int = 0 # create and initialize variable to hold pair coun
20、t# 3. Loop through each line of the filefor line_str in poker_file: total_count_int = total_count_int + 1 # (a). add one total for each hand fields = line_str.split(,) # (b). split on a comma hand_rank_str = fields-1 # and get the last field hand_rank_int = int(hand_rank_str) if hand_rank_int = 1: #
21、(c) if handRank is 1 (it is a pair) pair_count_int = pair_count_int + 1 # add one to pair count print(Total hands in file: , total_count_int) # 4. print the valuesprint(Count of pair hands: , pair_count_int)print(Probability of a pair: :9.4%.format(pair_count_int/total_count_int)3.智多星游戏:计算机随机产生4种不相同
22、的颜色序列,玩家不知道,让玩家输入四种颜色,与计算机随机产生的序列作比较,如果全部相同则显示猜对了,否则重新输入,设定总的输入次数,超过总次数,则失败。要求如下:(1)设定总的尝试次数。(2)如果输入的颜色与随机序列在位置与颜色都相符,则打印“”。(3)如果输入的颜色与随机序列的颜色相符,但是位置上不相符,则打印“”。(4)如查输入的颜色与位置都不对,则打印“”。(5)当输入的颜色与位置都对了,就显示猜对了。(6)如果超过总的输入次数,就显示失败。#encoding:gbkimport randomimport winsoundi=0s=RYBGCOPWstr=j=0corr=#产生四个随机颜
23、色与位置,并不能重复while j4: tempChar=random.choice(s)#生成一个随机字符 if tempChar not in str: str+=tempChar j+=1#循环12次while i mydict= #创建一个空的字典 mydict #输出此字典的内容(2) 通过dict函数创建字典dict函数是字典类的构造函数,也可以利用此函数来创建字典。创建一个空字典: dict()3、(1)get函数:访问字典成员get()函数根据key获取值。 d=one:1,two:2,three:3 print(d.get(two)(2)copy函数:返回一个具有相同键值的新
24、字典 x=one:1,two:2,three:3,test:a,b,c #创建一个字典x print(x) #输出字典xone: 1, two: 2, test: a, b, c, three: 3 (3)pop函数:删除字典中对应的键Pop函数可以删除字典中的键及其对应的值。 d=one:1,two:2,three:3 d.pop(two) #删除键 two(4)fromkeys函数:用给定的键建立新的字典fromkeys函数可以用给定的键建立新的字典,键默认对应的值为None d=dict.fromkeys(one,two,three)(5)update函数:用一个字典更新另外一个字典up
25、date函数可以用一个字典来更新另外一个字典。操作如下: d= one:123, two:2, three:3 实战作业:1、略(参考书中字典操作举例)2、def getdict(phone): A=i for i in range(0,10) B=zero,one,two,three,four,five,six,seven,eight,nine mydict=dict(zip(A,B) for i in phone: print mydictint(i) def main(): phone=raw_input(Please enter a series phone number:) getd
26、ict(phone)main()3、import stringdef Mostran(wholetext): f=open(e:Mos.txt,r) Mostext= for line in f: Mostext+=line f.close() Lwhole=Mostext.split() L1=Lwhole:2 #这种间隔分片出来就是列表 L2=Lwhole1:2 MosDict=dict(zip(L1,L2) for char in wholetext: print MosDictchardef main(): temp=raw_input(Enter a passage:) temp=t
27、emp.upper() wholetext= for char in temp: if char not in string.whitespace+string.punctuation: wholetext+=char translation=Mostran(wholetext)main()第9章习题答案一 选择题1.B 2.C 3.B 4.D二 简答题1、什么是异常?答:异常是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。一般情况下,在Python无法正常处理程序时就会发生一个异常。当Python脚本发生异常时我们需要捕获并处理它,如果不处理,并且调用此程序的上层程序也不处理
28、,程序会终止执行2、异常和错误的区别?答:错误通常是语法错误,是编程人员错误地使用语法、错误地键入字符等原因造成,这需要编程人员不断提高编码能力来避免。异常是语法正确的代码在执行过程中遇到的无法处理的情况,比如除数为0,数组越界等,这需要编程人员通过捕获异常来避免程序崩溃,以提高程序的健壮性。3、简述处理异常的一般结构?异常处理结构如下: try:except : except: except:#上一句except分支不指定任何类型的异常,表示可以匹配任何异常类型。 else: finally:4 答:A、statement3不会执行。B、statement4不会执行C、statement4会
29、执行5 程序输出“Index out of bound”6 程序输出:DoneNothing is wrongFinally we are hereContinue7 程序输出:Index out of boundFinally we are hereContinue8 ArithmeticError被先捕获,而它是ZeroDivisionError的父类,因此即便是因除数为0而抛出异常,也是被except:ArithmeticErro分支捕获,而不会被后面的except:ZeroDivisionError分支捕获。因此,后面的分支永远不会被执行。选择题1.C2.A简答题wxPython中子语
30、句块采用缩进方式编写,有子语句的语句以冒号结束,所有该行下的缩进行都属于以该冒号终止的语句。当缩进回复到原来的缩进时,这一块子语句块就结束了。 包括但不限于wx.RadioBox,wx.CheckBox,wx.ToolBar,wx.Dialog等实战作业import wx class MyFrame(wx.Frame): def _init_(self, parent, title): wx.Frame._init_(self, parent, title=title, size=(800,800) self.control = wx.TextCtrl(self, style=wx.TE_MU
31、LTILINE) self.Show(True) app = wx.App(False) frame = MyFrame(None, 我的小型编辑器) app.MainLoop()略略选择题1. B 2. B 3. A 4. B简答题1. 对象是对某个具体客观事物的抽象,类是对对象的抽象描述,在计算机语言中是一种抽象的数据类型。类定义了数据类型的数据(属性)和行为(方法)。类与对象的关系是,对象是类的实例,类是对象的模板。2. 面向对象程序设计具有如下优点:(1)符合人们习惯的思维方法,便于分解大型的复杂多变的问题。由于对象对应于现实世界中的实体,因而可以很自然地按照现实世界中处理实体的方法来
32、处理对象,软件开发者可以很方便地与问题提出者进行沟通和交流。(2)易于软件的维护和功能的增减。对象的封装性及对象之间的松散组合,都给软件的修改和维护带来了方便。(3)可重用性好。重复使用一个类(类是对象的定义,对象是类的实例化),可以比较方便地构造出软件系统,加上继承的方式,极大地提高了软件开发的效率。(4)与可视化技术相结合,改善了工作界面。随着基于图形界面操作系统的流行,面向对象的程序设计方法也将深入人心。它与可视化技术相结合,使人机界面进入GUI时代。3. Python定义一个类使用关键字class声明,类的声明格式如下:class className: 类体4. _init_()方法是
33、类的构造方法,用于执行类的实例的初始化工作,创建完实例后调用,初始化当前对象的实例,无返回值。5.非绑定方法不与类或对象绑定,类和对象都可以调用,但是没有自动传值。6.self指的是类实例对象,不是类7.继承反应客观世界中各类事物之间的一种“一般和特殊”的关系。继承是指类之间有继承关系,子类有条件地继承父类的特征。对象的一个新类可以从现有的类中派生出来,这个过程称为类继承。例如“教师”、“学生”是“人”的一种,“人”是父类,“教师”、“学生”继承“人”的特性。多态一般指具有多种形态的能力。对象的多态是指在一般类中定义的属性或操作被特殊类继承后,可以具有不同的数据类型或表现出不同的行为。利用多态
34、性,用户可以发送一个通用的信息,而将所有的实现细节都留给接收消息的对象自行决定,这意味着同一消息即可调用不同的方法。例如:Print消息被发送给一个图或表时调用的打印方法与将同样的Print消息发送给一个正文文件而调用的打印方法会完全不同。8.私有属性指的是只有在类方法中才能访问私有属性,对象不能直接访问私有属性。公有属性可以被对象直接访问。通常,约定两个下划线开头,但是不以两个下划线结束的属性为私有属性,其它的都是公有属性。9.实例方法:在类中最常定义的成员方法,它至少有一个参数并且必须以实例对象作为其第一个参数,一般以“self”作为第一个参数。在类外,实例方法只能通过实例对象去调用。实例
35、方法的声明格式如下:def 方法名(self, 形参列表):函数体类方法不对特定实例进行操作,在类方法中访问实例属性会导致错误。类方法需要用修饰器classmethod来标识其为类方法。对于类方法,第一个参数必须是类对象,一般以cls作为第一个参数,类方法可通过实例对象和类对象去访问。类方法的声明格式如下: classmethoddef 类方法名(cls, 形参列表):函数体静态方法是与类的对象实例无关的方法。静态方法不对特定实例进行操作,在静态方法中访问对象实例会导致错误。静态方法需要通过修饰器staticmethod来进行修饰,声明格式如下:staticmethoddef 静态方法名(形参
36、列表)函数体10.将学生信息封装成一个类Student,包括姓名、性别、年龄、家庭地址。并在display()方法中显示这些信息。class Student: def _init_(self, name, sex, age, home_addr): =name self.sex=sex self.age=age self.home_addr=home_addr def display(self): print(I am a student, my name is %s, %s years old, sex is %s, home_addr is %s %(,self.age,self.sex,
37、self.home_addr)11.设计一个类代表长方体,含有长、宽、高三个对象属性,含有计算体积的公有方法、计算表面积的公有方法。编写主程序,生成一个一般长方体,生成一个正方体。class Rectangle: def _init_(self, length, width, high): self.length=length self.width=width self.high=high def volume(self): return 1.0*self.length*self.width*self.high def surface(self): return 2.0*(self.lengt
38、h*self.width+self.length*self.high+self.width*self.high)cuboid=Rectangle(3.1,4.2,5.1)vol = cuboid.volume()sur = cuboid.surface()print(cuboid volume is %s and surface is %s %(vol,sur)cube=Rectangle(2,2,2)vol = cube.volume()sur = cube.surface()print(cube volume is %s and surface is %s %(vol,sur)12.定义一
39、个类代表三角形,类中含三条边、求周长的函数,求面积的函数。#程序无三边是否满足三角形限制的判断(三边大于,任意两边之和大于第三边)class Triangle:def _init_(self, a, b, c):self.a=aself.b=bself.c=cdef circle(self):return self.a+self.b+self.cdef area(self):p=(self.a+self.b+self.c)/2.0return pow(p*(p-self.a)*(p-self.b)*(p-self.c),0.5)c=tri.circle()a=tri.area()print(c
40、ircle is %s and area is %s: %(c,a)实战作业1. 创建一个Point类表示二维坐标平面的点,定义实例属性x和y表示坐标对值。class Point:def _init_(self, x, y):self.x=xself.y=ydef distance(self,pt):return pow(pow(self.x-pt.x,2)+pow(self.y-pt.y,2),0.5)def sum(self,pt):newx=(self.x+pt.x)newy=(self.y+pt.y)return Point(newx,newy)p0=Point(0,0)p1=Poin
41、t(1,1)p2=Point(2,2)p3=Point(1,3)p1.distance(p0)p1.distance(p2)p1.distance(p3)p=p1.sum(p1)2. 创建一个Set类表示集合:class Set:def _init_(self, elements):self.data=set(elements)def addElement(self,x):self.data.add(x)def deleteElement(self,x):self.data.remove(x)def member(self,x):return (x in self.data)def intersection(self,set2):newset=Set()newset.data=self.data & set2.datareturn newsetdef union(self,set2):newset=Set()newset.data=self.data
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026量子计算芯片研发行业市场供需分析及投资评估规划分析研究报告
- 2026中国膜技术在农村安全饮水工程中的应用现状与推广策略报告
- 2026老年人娱乐行业市场发展及投资风险评估报告
- 2026聚氯乙烯行业市场供需结构分析及投资方向规划分析报告
- 2026进出口金属矿产资源调研及开发计划研究报告
- 2026少数民族地区特色杯装饮品文化附加值开发报告
- 2026年四川省成都市金牛区城市面貌改善方案
- 城市交通拥堵治理宣传推广方案
- 2026年司考卷一模拟试题及答案详解
- 2026年吉林省松原市导游资格导游业务模拟题(含答案)
- 2026秋人教统编版历史七上单元检测卷 第一单元 史前时期:原始社会与中华文明的起源(含答案)
- 中国脓毒症与感染性休克诊断和治疗指南 (2025 版)
- GB/T 47875-2026复合玻璃弯曲等效厚度测定方法
- 2026年运输管理(货物运输调度)试题及答案
- 2026年技能培训专题电力安全工器具使用培训
- 2026年4月自考02324离散数学试题及答案含评分参考
- 2026年华为公司面试流程及常见问题解析
- 初三中考冲刺:家长的智慧陪伴与高效激励
- 毒品仓库内部管理制度
- GB/T 10464-2026葵花籽油
- 2025-2030中国硼矿行业营销模式及竞争格局分析研究报告
评论
0/150
提交评论