




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一章
判断题:1*4:VXVV
第二章
判断题:1-5:VXXVV6-10:XXVVV
11-15:XVVXV
添加代码题:
1.我们都知道,下面的代码:
print*7likewritinginPython.,z
printuItissomuchfun.”
型后,运行结果为:
IlikewritinginPython.
Itissomuchfun.
你能只用一行代码实现上述技果吗?
第3章习题参考答案:
一、选择题
ABABB
二、简答题
1.break或continue语句用来提前跳出循环,即循环条件没有满足False时或者序列还没
被完全递归完,也会停止执行循环语句。其中,continue语句用于跳出本次循环,而
break用于跳出整个循环。
该程序段的功能是检查用户输入的用户名及密码是否正确,输入正确则显示“登录成
功”;输入错误则由用户重新输入,但输入错误次数超过3次则不允许再次输入,直接显示
“登录失败”。break在此程序段中的作用是当输入用户名和密码正确时或输入错误次
数超过3次时直接结束循环。
2.Python语句代码缩进的书写原则:在逻辑行首的空白(空格和制表符)用来决定逻辑
行的缩进层次,从而用来决定语句的分组。这意味着同一层次的语句必须有相同的缩进。
有相同的缩进的代码表示这些代码属于同一代码块。
代码段1和代码段2的区别在于“print(sum)”这个语句的位置。在代码段1中,
aprint(sum)"和*'foriinrange(lO):"在同一层次,表示它们是并列的语句,
Uprint(sum)"不在循环体内,所以循环结束后才输出sum的值;而在代码段2中,
Mprint(sum)n在循环体内,表示每循环一次都会输出一次sum的值。
3.错误1:循环嵌套代码的缩进
错误2:range(L4)只是包括12,3,不包括4。所以要改成range(l,5)
错误3:if(i!=j!二k)的写法不对。改为if(i!=jandj!=k)
4.输出结果
>>>
1
3
5
5.bonusl=100000*0.1
bonus2=bonusl+100000*0.500075
bonus4=bonus2+200000*0.5
bonus6=bonus4+200000*0.3
buriuslO-bunus6+400000*0.15
i=int(raw_input('inputgain:\n'))
ifi<=100000:
bonus=i*0.1
elifi<=200000:
bonus=bonusl+(i-100000)*0,075
elifi<=400000:
bonus=bonus2+(i-200000)*0,05
elifi<=600000:
bonus=bonus4+(i-400000)*0.03
elifi<=1000000:
bonus=bonus6+(i-600000)*0,015
else:
bonus=bonuslO♦(i-1000000)*0.01
print'bonus=bonus
6.
ifscore>=90:
print("A")
else:60<=score<90:
print("B")
else:
print("C")
7.
str=input("enterasentence:")
forcharinstr:
if65<=ord(char)<=90or97<=ord(char)<=122:
print(“英文字母”)
eliford(char)==32:
print("空格“)
elif48<=ord(char)<=57:
print("数字”)
else:
print(“其它字符”)
8.
numl=l
num2=2
sum=0
foriinrange(l,21):
sum=num2/numl
num2=numl+num2
numl=num2
print(sum)
9.
riuni=inl(inpuL("enterariurn:"))
i=0
whilenum>0:
print(num%10,end=")
i+=l
num=num//10
print("\n这个数是%d位数"晰)
10.
foriinrange(100,1000):
ifi%7==0andi//10%10==2:
print(i)
11.
j=0
foriinrange(2000,2501):
ifi%400==0ori%4==0and%100!=0:
i+=i
print(i,end="")
ifj%8==0:
printf'")
12.
i=7
whileTrue:
ifi%2==landi%3==2andi%4二二3andi%5二二4andi%6==5andi%7==0:
print(i)
break
i+=l
13.
total=13
i=0
whiletotal<=26:
total=total*(l+0.008)
i+=l
print(i)
14.
num=int(input("pleaseenternum:"))
flag=True
fori=2tonum-1:
ifnum%i==0:
flag=False
ifflag:
print("%d是素数"%num)
else:
print("%d不是素数"%num)
15.
k=0
foriinrange(l,1001):
flag=True
forjinrange(2,i):
ifi%j==0:
flag=False
ifflag:
k+=l
print(i,end='')
ifk%10==0:
print("")
k=l
16.
a=int(input("entera:"))
b=int(input("enterb:"))
c=int(input("enterc:"))
ifa<b:
a,b=b,a
ifa>c:
ifb>c:
print(a,b,c)
else:
print(a,c,b)
else:
print(c,a,b)
三、实训题
1.求最大公约数代码参考书上例3.6。求出最大公约数后即可相应求出最小公倍
数。
2.求1!+2!+3!+…+20!
参考代码:
sum=0
foriinrange(l,21):
t=l
forjinrange(l,i+l):
t*=j
sum+=t
print(sum)
3.输出斐波那契数列的前20项
参考代码:
fl=l
f2=l
furiinranye(l,21);
print(fl,f2)
fl+=f2
f2+=fl
4.编程找出1000之内的所有完数,并输出其因子。
参考代码:
1=[]
forninrange(1,1001):
forainrange(l,n):
ifn%a==0:
l.append(a)
ifsum(l)==n:
print(I)
print(n)
1=0
5.输出九九乘法表
参考代码:
forxinrange(lt10):
foryinrange(l,x+l):
r=x*y
print(1%d*%d=%-2d,%(y,x,r),'[end=”)#%d格式化成整数,-代表左对齐.
数字代表占位。
print(end二",)#这一句代表,每次遍历完一个周期换行,并下一次遍历的结果将从
该行输出。如果是print。将从下一行开始输出。
6.输入一系列数字,并求和与求平均数。
sum=0.0
i=0
num=int(input("请输入数字,以。结束”))
whilenum!=0:
sum+=num
num=int(inputC'请输入数字,以0结束"))
i+=l
average=sum/i
print("加起来总数为%d,平均数蜥"%(sum,average))
第4章课后练习答案:
一、填空题:
1.'fi/e/l/l/oZ/w/u/r/l/d/!'2.回车换行3.FHse4.(1)slr[-l::-l](2;str.upper()(3)blr[5:12]
(4)str[::2](5)7,.join(list(str))
(6)'www.sina.www.gdpu.www.good.www.tianya’.replace('www','万维网')
5.,c:\\test.htm'6.17.'HELLOWORLD'8.True9.1123456'lO.True
二、简答题:
1.假设有一段英文,其中有单词中间的字母“i”误写为T,请编写程序进行纠正。
x="iamateacher,iamman,andiam38yearsold.Iamnotabusinessman."
x=x.replace('i','1')
print(x)
2.有一段英文文本,其中有单词连续重复了2次,编写程序检查重复的单词并只保留一
个。例如文本内容为uThisisisadesk.",程序输出为'Thisisadesk."
x='Thisisaadesk."
pattern=pile(r,(?P<f>\b\w+\b)\s(?P=f),)
matchResult=pattern.search(x)
x=x.replace(matchResult.group(0),matchResult.group(l))
print(x)
3.编写程序,用户输入一段英文,然后输出这段英文中所有长度为3个字母的单词。
importre
words=input("lnputthewords:")
l=re.split(1[\.]+,,words)#使用空格分隔词语,得到各个单词
print(l)
i=0#这里我设置的是计数器
foriinI:
iflen(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=0
temp=0
foriinrange(count):
temp+=num*10**i
print(temp)
sum+=temp
print(sum)
5.一个数如果恰好等于它的因子之和,这个数就称为完数。例如6=1+2+3。编程找出1000
以内的所有完数。
#encoding:utf
n=input("Pleaseinputanumber!")
sum=O
printS=""
furiinrange(l,n):
ifn%i==0:
sum=sum+i
ifsum>n:
print"%dis不足数'驰n
elifsum<n:
print"%dis丰沛数
else:
print"%dis完数"%n
printS=str(n)+"="
foriinrange(l.n):
ifn%i==0:
printS+=str(i)+"+"
printprintS[O:len(printS)-l]
6.打印出如下图案。
(1)
foriinrange(l.lO):
print(''*(10-i),end=")
print(str(i)*(2*i-l))
⑵
n="123456789"
foriinn[-l:0:-l]:
s=n[-l:int(i)-2:-l]
print("%s*%d+%d=%d"%(s.9,int(i)-2,int(s)*9+int(i)-2))
实战作业
lx输入一串字符串,判断它是不是回文数。如MadamJmAdam是回文数。
提示要把一串字符中所有的标点符号去除,并把所有的大写字符变成小写字符再进行比较。
如“MadamJmAdam",转化后变成"madamimadam”,正读与逆读是一样的,为回文。
importstring#导入字符串函数库
string,punctuation='!"#$%&\'()*+,-./:;<=>?@[\\]A_'{|}-'
string.whitespace='\t\n\xOb\xOc\r'
importstring
originalStr=raw_input("enterastring:")
modifiedStr=originalStr.lower()
badChars=string.whitespace+string.punctuation
forcharinmodifiedStr:
ifcharinbadChars:
modifiedStr=modifiedStr.replace(char,"")
print"theoriginalStris:%s\nthemodifiedStris:%s\nthereverseStr
is:%s"%(originalStr,modifiedStr,modifiedStr[::-l])
ifmodifiedStr==modifiedStr[::-1]:
print"字符串%s是回文"%originalStr
else:
print"字符串%s不是回文写originalStr
2.计算Poker中出现各种手数的概率,现给出Poker-hand-testing.data文件,其中有
1000000条记录,要求读出每一条记录,并统计以下问题:
以下是每条记录的格式:
3,10,1,7,2,12,4,2,2,1,0
4,9,4.12,4,13,2,6,3,4,0
3,2,2,2,3,12,3,1,4,2,3
4,11,2,8,1.13,4,7,1,7,1
4,8,3,8,1,3,1,4,3,7,1
2,7,2,5,3,10,4,13,3,7,1
1,4,3,4,3,5,4,10,2,10,2
以下是各种类型的牌的编号:
图4-9牌的类型
要求:(1)计算Poker有多少行;
(2)计算包含1对牌的总手数与出现的概率;
(3)计算所有牌类型出现的手数及概率。
#countpokerhands
ft1.openthepokerdatafileforreading
poker_file=open("poker-hand-testing.data",'r')
total_count_int=0#2.createandinitializevariabletoholdthetotalcount
pair_count_int=0#createandinitializevariabletoholdpaircount
#3.Loopthrougheachlineofthefile
forline_strinpoker_file:
total_count_int=total_count_int+1#(a).addonetotalforeachhand
fields=line_str.split(',')#(b).splitonacomma
hand_rank_str=fields[-l]#andgetthelastfield
hand_rank_int=int(hand_rank_str)
ifhand_rank_int==1:#(c)ifhandRankis1(itisapair)
pair_count_int=pair_count_int+1#addonetopaircount
printf'Totalhandsinfile:",total_count_int)#4.printthevalues
print("Countofpairhands:",pair_count_int)
print("Probabilityofapair:{:>9.4%}".format(pair_count_int/total_count_int))
3.智多星游戏:
计算机随机产生4种不相同的颜色序列,玩家不知道,让玩家输入四种颜色,与计算机随机
产生的序列作比较,如果全部相同则显示猜对了,否则重新输入,设定总的输入次数,超过
总次数,则失败。
要求如下:(1)设定总的尝试次数。
(2)如果输入的颜色与随机序列在位置与颜色都相符,则打印“★二
(3)如果输入的颜色与随机序列的颜色相符,但是位置上不相符,则打印
(4)如查输入的颜色与位置都不对,则打印
(5)当输入的颜色与位置都对了,就显示猜对了。
(6)如果超过总的输入次数,就显示失败。
#encoding:gbk
importrandom
importwinsound
i=0
s="RYBGCOPW"
str=""
i=o
corr=""
#产生四个随机颜色与位置,并不能重复
whilej<4:
tempChar:random.choice(s)#生成一个随机字符
iftempCharnotinstr:
str+=tempChar
j+=l
#循环12次
whilei<=12:
print"Thisisthe%dthtry"%(i+l)
inputColor=raw_input("Pleaseenter4colors(\"RYBGCOPW\"):")
iflen(inputColor)!=4:#长度超过4个字符或者不够4个字符不予判断,请注意Continue
的用法
print"WRONGENTER!\nYoumustenter4color(\"RYBGCOP\A/\")!"
continue
forkinrange(0,4):#对每一种颜色进行判断
ifinputColor[k]==str[k]:
corr+="*"
elifinputColor[k]!=str[k]andinputColor[k]instr:
corr+="*
else:
uorr+=">"
printcorr
ifcorr二二“★★★
print"Bingo"
winsound.Beep(400,2000)
break
else:
corr=""
i+=l
else:
prinf'YouLost!"
第五章习题答案
一选择题
l.C2.B3.C4.B5.C6.B7.A
二简答题
1.相对路径是相对于什么7
答:相对路径相对于当前工作目录
2.绝对路径从什么开始?
答:绝对路径总是从根目录开始
3os.getrwd。和os.chdir。分别是做什么?
答:os.getcwd。获得当前工作目录,os.chdir。改变工作目录。
4.可以传递给open。函数的3种模式参数是什么?
答表示以读的方式打开文件;w,表示以写的方式打开文件;a,表示以追加的方式
打开文件。
5.read。和readlines。之间的区别是什么?
答:read。在未指定字符个数情况下会读取尽可能多的字符,有可能到文件末尾;
「eadlines。则按行的方式读取文件,返回一个列表,每一行为列表中的一个元素。
三编程题
1.
importos
os.mkdir("mydir")
os.chdir("mydir")
fi=open("mydoc.txt","w")
while(l):
str=input();
ifstr=="exit":
break;
fi.write(str)
fi.close()
2.
importos
os.mkdir("mydir")
os.chdir("mydir")
,,
fl=open("myfile.txt/"w")
str="Iloveprogrammingwithpython"
fl.write(str)
fl.close()
f2^open("myfileback.txt"/"w")
fl=open("myfile.txt","r")
str=fl.read()
f2.write(str)
fl.close()
f2.close()
3.
fileName=input:(”请输入文件名”)
f=open(fileNamez"r")
str=f.read()
words=str.split()
lines=str.split("\n")
print("字符数:",len字tr))
print。'单词数:"JenCwords))
print。'行数:"Jen(lines))
4.
fileName=input(”请输入文件名”)
f=open(fileName,"r")
str=f.read()
scores=str.split()
total=0
num=0
forsinscores:
total+=float(s)
num+=l
print("thereare”,num,"scores")
print("thetotalscoresis:",total)
print("theaveragescoreis:",total/num)
5.电子表格操作
电子表单程序比如MicrosoftExcel都有一个选项,可以将数据导出为CSV格式。在
本练习中,创建程序,读取电子表格(CSV格式)并操纵它。程序应具有以下功能:
(1)显示数据
(2)删除行或列
(3)插入行或列
(4)更改指定单元格中的数据
(5)输出CSV格式的数据
其中要考虑的问题有:
使用CSV模块,读取电子表格,选择恰当的数据结构来存储数据。该用列表、元组还
是字典?
在程序中使用循环,提示输入上述操作的名字。接口方式是用单个字母来表示相关操作,
例如“d”表格删除。
一、填空题:
1.True2.True3.[6,7,9,11]4,[5foriinrange(l.ll)]5.-16.[1,4,7]
7.[0,1,2,3,4]8.del9.False10.14ll.[iforiinrange(l,ll)]
12.[iforiinrange(l,ll)][4:8]13.L2[4]='bad';len(L2);L2.append('people');L2.sort();L2.pop()
二、简答题:
l.[iforiinrange(l,21)]
2.[iforiinrange(2,21,2)]
3.[chr(i)foriinrange(65,91)]
4.list(str)
5.".join(strList)
6.7'.join(list(str))
7.略。
8.mportrandom
v=[random.randint(0,100)foriinrange(20)]
print(v)
a=v[l:10]
a.sortfi
b=v[ll:20]
b.sort()
b.reverse()
print(a)
print(b)
c=a+b
print(c)
9.strList=[chr(i)foriinrange(65,91)]
strAII=|]
furiinranye(l,27):
strAll.append(strList[:i:])
print(strAII)
10.略
11.首先sorted和sort的区别主要在于sorted是将排序完的数据赋予给一个新变量,而
sort则是在原变量的基础上直接进行排序,不产生新变量。
sorted是内建函数,而sorted是类函数,其使用必须跟在对象后面。
12.IP.splitC,')
13.略
14.可以,可以
15.列表是可以修改的,(2,3)为列表中的一个对象,可以被替换,但是它本身是不能修改的.
如(2,3)改成(2,4)就不行。
元组是不能修改的,元组中的对象并没有被修改。只是元组中有个一个对象是列表,列
表本身可以修改,但是对象没有变。
实战作业
1.凯撒密码
(1)Text='ABCDEFGHIJKLMNOPQRSTUVWXYZ,
Cipher='DEFGHIJKLMNOPQRSTUVWXYZABC,
words=input("pleaseinputwords:")
str=""
words=words.upper()
forcharinwords:
ifcharinText:
str+=Cipher[Text.index(char)]
printstr
(2)Text='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
Cipher='DEFGHIJKLMNOPQRSTUVWXYZABC
words=input("pleaseinputwords:")
str=""
words=words.upper()
forcharinwords:
ifcharinCipher:
str+=Text[Cipher.index(char)]
printstr
2.编程实现《葛底斯堡演说》中单词的统计(gettysburg.txt)o
speach=[]
unique二口
temp=[]
count=0
file二openCgettysburg.txt"Jr")
allwords=file.readlines()
forwordsinallwords:
Lt?nip-wurds.spliL()
speach.extend(temp)
print("总共有%d个单词"%len(speach))
forwordinspeach:
ifwordnotinunique:
unique.append(word)
printunique
一、选择题
1、C2、B3、C
二、问答题
1、字典是Python语言中唯一的映射类型。映射类型对象里哈希值(键,key)和指向
的对象(值,value),通常被认为是可变的哈希表。字典对象是可变的.它是一个容器类型,
能存储任意个数的Python对象,其中也可包括其他容器类型。
字典是Python中最强大的数据类型之一,它与列表、元组等其它序列类型的主要区别
有以下几点:
(1)存取和访问数据的方式不同
(2)映射类型中的数据是无序排列的。这和序列类型是不一样的,序列类型是以数值序排
列的;
(3)映射类型用键直接“映射”到值。
(4)字典支持索引操作(索引值为键值),但不支持切片操作,因为切片操作是针对索引值
具有连续的,而字典的键不具备连续性。
(5)字典中的键必须是不可变且不重复,值可以是任何类型。
2、
(1)直接创建字典
创建一个空的字典
>>>mydict={}#创建一个空的字典
>>>mydict#输出此字典的内容
{}
(2)通过diet函数创建字典
diet函数是字典类的构造函数,也可以利用此函数来创建字典。
创建一个空字典:
>>>dict()
{)
3、
(1)get函数:访问字典成员
get。函数根据key获取值。
,,
>>>d={one':lz'two':2/three:3}
>>>print(d.get('two'))
(2)copy函数:返回一个具有相同键值的新字典
,,,,,,
>>>x={'one:l;two':2zthree':3/'test':[a/b7c]}#创建一个字典x
>>>print(x)#输出字典x
{'one':1,'two':2,'test':['a"z'b'z'c']z'three':3}
(3)pop函数:删除字典中对应的键
Pop函数可以删除字典中的键及其对应的值。
,,
>>>d={'one':lztwo':2/'three:3}
>>>d.popCtwo')#删除键'two'
(4)fromkeys函数:用给定的键建立新的字典
fromkeys函数可以用给定的键建立新的字典,键默认对应的值为None
>>>d=dict.fromkeys(['one'/two7three'])
(5)update函数:用一个字典更新另外一个字典
update函数可以用一个字典来更新另外一个字典。操作如下:
>>>d={
'one':123z
'two':2,
'three':3
)
实战作业:
1、
略(参考书中宁典操作举例)
2、
defgetdict(phone):
A=[iforiinrange(0,10)]
,,,
B=["zero","one"z"two"z"three,"four"/'five","six","seven","eight","nine"]
mydict=dict(zip(A,B))
foriinphone:
printmydict[int(i)]
defmain():
phone=raw_input("Pleaseenteraseriesphonenumber:")
getdict(phone)
main()
3、
importstring
defMostran(wholetext):
f=open("e:\\Mos.txt","r")
Mostext=""
forlineinf:
Mostext+=line
f.close()
Lwhole=Mostext.split()
Ll=Lwhole[::2]#这种间隔分片出来就是列表
L2=Lwhole[l::2]
MosDict=dict(zip(Ll,L2))
forcharinwholetext:
printMosDict[char]
defmain():
temp=raw_input("Enterapassage:")
temp=temp.upper()
wholetext=n"
forcharintemp:
ifcharnotinstring.whitespace+string.punctuation:
wholetext+=char
translation=Mostran(wholetext)
main()
第9章习题答案
一选择题
l.B2.C3.B4.D
二简答题
1、什么是异常?
答:异常是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。一般情况
下,在Python无法正常处理程序时就会发生一个异常。当Python脚本发生异常时我们需
要捕获并处理它,如果不处理,并且调用此程序的上层程序也不处理,程序会终止执行
2、异常和错误的区别?
答:错误通常是语法错误,是编程人员错误地使用语法、错误地键入字符等原因造成,这需
要编程人员不断提高编码能力来避免。异常是语法正确的代码在执行过程中遇到的无法处理
的情况,比如除数为0,数组越界等,这需要编程人员通过捕获异常来避免程序崩溃,以提
高程序的健壮性。
3、简述处理异常的一般结构?
异常处理结构如下:
I
■vbody>・
except<ExceptionTypel>:
<handlerl>
except<ExceptionTypeN>:
<handlerN>
except:
#上一句except分支不指定任何类型的异常,表示可以匹配任何异常类型。
<handlerExcept>
else:
■vprocos工
finally:
<process_finally>
4
答:A、statements不会执行。
B、statement4不会执行
C、statement会执行
5程序输出ulndexoutofbound"
6程序输出:
Done
Nothingiswrong
Finallywearehere
Continue
7程序输出:
Indexoutofbound
Finallywearehere
Continue
8ArithmeticError被先捕获,而它是ZeroDivisionError的父类,因此即便是因除数为0而抛
出异常,也是被except:AiithmeticEir。分支捕获,而不会被后面的except:ZeroDivisionError
分支捕获。因此,后面的分支永远不会被执行。
一、选择题
l.C2,A
二、简答题
1.wxPylhon中子语句块采用缩进方式编写,有子语句的语句以皆号结束,所有该行下
的缩进行都属于以该冒号终止的语句。当缩进回复到原来的缩进时,这一块子语句
块就结束了。
2.包括但不限于wx.RadioBox,wx.CheckBox,wx.ToolBar,wx.Dialog等
三、实战作业
1.
importwx
classMyFrame(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_MULTILINE)
self.Show(True)
app=wx.App(False)
frame=MyFrame(None,'我的小型编辑器’)
app.MainLoop()
2.略
3.略
一、选择题
1.B2.B3.A4.B
二、简答题
1.对象是对某个具体客观事物的抽象,类是对对象的抽象描述,在计算机语言中是一种抽
象的数据类型。类定义了数据类型的数据(属性)和行为(方法)。类与对象的关系是,对
象是类的实例,类是对象的模板。
2.面向对象程序设计具有如下优点:
(1)符合人们习惯的思维方法,便于分解大型的复杂多变的问题。由于对象对应于现实世
界中的实体,因而可以很自然地按照现实世界中处理实体的方法来处理对象,软件开发者可
以很方便地与问题提出者进行沟通和交流。
(2)易于软件的维护和功能的增减。对象的封装性及对象之间的松散组合,都给软件的修
改和维护带来了方便。
(3)可重用性好。重复使用一个类(类是对象的定义,对象是类的实例化),可以比较方便
地构造出软件系统,加上继承的方式,极大地提高了软件开发的效率。
(4)与可视化技术相结合,改善了工作界面。随着基于图形界面操作系统的流行,面向对
象的程序设计方法也将深入人心。它与可视化技术相结合,使人机界面进入GUI时代。
3.Python定义一个类使用关键字class声明,类的声明格式如下:
classclassName:
类体
4._init_。方法是类的构造方法,用于执行类的实例的初始化工作创建完实例后调用,
初始化当前对象的实例,无返回值。
5.非绑定方法不与类或对象绑定,类和对象都可以调用,但是没有自动传值。
6.self指的是类实例对象,不是类
7.继承反应客观世界中各类事物之间的一种''一般和特殊〃的关系。继承是指类之间有继承关
系,子类有条件地继承父类的特征。对象的一个新类可以从现有的类中派生出来,这个过程
称为类继承。例如''教师〃、''学生"是''人〃的一种,''人〃是父类,''教师〃、''学生〃继承''人〃的
特性。
多态一般指具有多种形态的能力。对象的多态是指在一般类中定义的属性或操作被特殊
类继承后,可以具有不同的数据类型或表现出不同的行为。利用多态性,用户可以发送一个
通用的信息,而将所有的实现细辛都留给接收消息的对象自行决定,这意味着同一消息即可
调用不同的方法。例如:Print消息被发送给一个图或表时调用的打印方法与将同样的Print
消息发送给一个正文文件而调用的打印方法会完全不同。
8.私有属性指的是只有在类方法中才能访问私有属性,对象不能直接访问私有属性。公有属
性可以被对象直接访问。通常,约定两个下划线开头,但是不以两个下划线结束的属性为私
有属性,其它的都是公有属性。
9.实例方法:在类中最常定义的成员方法,它至少有一个参数并且必须以实例对象作为其
第一个参数,一般以''self〃作为第一个参数。在类外,实例方法只能通过实例对象去调用。
实例方法的声明格式如下:
def方法名(self,[形参列表]):
函数体
类方法不对特定实例进行操作,在类方法中访问实例属性会导致错误。类方法需要用
修饰器”@classmethod”来标识其为类方法。对于类方法,第一个参数必须是类对象,一
般以“ds”作为第一个参数,类方法可通过实例对象和类对象去访问。类方法的声明格式如
下:
@classmethod
def类方法名(cis,[形参列表]):
函数体
静态方法是与类的对象实例无关的方法。静态方法不对特定实列进行操作,在静态方
法中访问对象实例会导致错误。静态方法需要通过修饰器”@staticmethod”来进行修饰,
声明格式如下:
@staticmethod
def静态方法名([形参列表])
函数体
10.将学生信息封装成一个类Student,包括姓名、性别、年龄、家庭地址。并在display。
方法中显示这些信息。
classStudent:
def_init_(self,name,sex,agezhome_addr):
=name
self.sex=sex
self.age=age
self.home_addr=home_addr
defdisplay(self):
print('Iamastudent,mynameis%sz%syearsold,sexis%sz
home_addris%s‘%(,self.age/self.sexzself.home_addr))
11.设彳一个类代表长方体,含有长、宽、高三个对象属性,含有计鼠体积的公有方法、计
算表面积的公有方法。编写主程序,生成一个一般长方体,生成一个正方体。
classRectangle:
def_init_(self,length,width,high):
self.length=length
self.width=width
self.high=high
defvolume(self):
returnl.O*self.length*self.width*self.high
defsurface(self):
return
2.0*(self.length*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('cuboidvolumeis%sandsurfaceis%s'%(volzsur))
cube=Rectangle(2z2,2)
vol=cube.volume()
sur=cube.surface()
print('cubevolumeis%sandsurfaceis%s'%(volzsur))
12.定义一个类代表三角形,类中含三条边、求周长的函数,求面积的函数。
#程序无三边是否满足三角形限制的判断(三边大于0,任意两边之和大于第三边)
classTriangle:
def—init_(self,a,b,c):
self.a=a
self.b=b
self.c=c
defcircle(self):
returnself.a+self.b+self.c
defarea(self):
p=(self.a+self.b+self.c)/2.0
returnpow(p*(p-self.a)*(p-self.b)*(p-self.c),0.5)
c=tri.circle()
a=tri.area()
print('circleis%sandareais%s:'%(cza)))
三、实战作业
1.创建一个Point类表示二维坐标平面的点,定义实例属性x和y表示坐标对值。
classPoint:
def_init_(self,xzy):
self.x=x
self.y=y
defdistance(self,pt):
returnpow((pow[self.x-pt.x/2)+pow(self.y-pt.y,2))/0.5)
defsum(self,pt):
newx=(self.x-i-pt.x)
newy=(self.y+pt,y)
returnPoint(newxznewy)
p0=Point(0,0)
pl=Point(lzl)
p2=Roint(2z2)
p3=Point(l,3)
pl.d
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年五金制品行业跨境电商市场潜力与增长策略分析报告
- 药品采购安全管理制度
- 药店人员培训管理制度
- 药店总部仓库管理制度
- 药店药品采购管理制度
- 设备人员考核管理制度
- 设备停用闲置管理制度
- 设备数据采集管理制度
- 设备物资基础管理制度
- 设备维修风险管理制度
- 国开(甘肃)2024年春《地域文化(专)》形考任务1-4终考答案
- 胎心监护以及判读
- DB37T 4027-2020 食用农产品可追溯供应商通用规范 果蔬
- 企业资产损失所得税税前扣除鉴证业务操作的指南
- 高等数学(下册)资料期末复习试题与答案
- 增压机通用说明书.
- 监理人员廉洁自律制度管理办法
- 四冲程内燃机 机械原理课程设计说明书
- BS EN 10222-5-2000用于压力目的的钢锻件—第5部分:马口铁钢奥氏体钢和奥氏体-铁素体不锈钢
- Grace评分表、TIMI评分、CRUSAD评分、wells评分等
- 洗洁精-MSDS(202334)
评论
0/150
提交评论