Python 程序設(shè)計(jì)與應(yīng)用 課后習(xí)題參考答案_第1頁
Python 程序設(shè)計(jì)與應(yīng)用 課后習(xí)題參考答案_第2頁
Python 程序設(shè)計(jì)與應(yīng)用 課后習(xí)題參考答案_第3頁
Python 程序設(shè)計(jì)與應(yīng)用 課后習(xí)題參考答案_第4頁
Python 程序設(shè)計(jì)與應(yīng)用 課后習(xí)題參考答案_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

Python程序設(shè)計(jì)與應(yīng)用課后習(xí)題參考答案

練習(xí)一參考答案

一、選擇題

題號123456

答案ACACDC

二、填空題

題號1234

答案控制器,存儲器解釋matplotlib,使用方便,清晰易讀,功

Pandas能豐富

練習(xí)二參考答案

練習(xí)三參考答案

題號20212223

答案ACC題目有誤,忽略

二、填空題

(1)False

(2)TrueFalse

(3)2.52

(4)9

(5)回車

(6)3;6;9

(7)縮進(jìn)

(8)dde

(9)字符串

(10)max()

三、設(shè)計(jì)題

(1)

x=5234

y=6885

print('%2.1f%%'%((y-x)*100/x))

(2)

a=int(input('a='))

b=int(input('b='))

c=int(input('c='))

d=int(input('d='))

print(a+b-c*d)

(3)

F=float(input('請輸入華氏度:'))

C=5/9*(F-32)

print('攝氏度為:%.lf,%C)

(4)

r=float(input「請輸入半徑r:'))

L=2*3.14*r

S=3.14*r*r

print('圓周長為%.2f,面積為%2f,%(L,S))

練習(xí)四參考答案

一、選擇題

題號12345678910

答案CDCCDBACBB

題號111213

答案CDD

二、填空題

(1)順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)

(2)break

(3)根據(jù)條件表達(dá)式的不同結(jié)果執(zhí)行不同語句塊

(4)結(jié)束當(dāng)次循環(huán),繼續(xù)下次循環(huán)

(5)1:3:5:

(6)3:5:7:

(7)forwhile

(8)選擇

三、設(shè)計(jì)題

(1)

n=eval(input('輸入一個(gè)數(shù):'))

ifn%3==0andn%5==0:

print(n/可以同時(shí)被3和5整除,)

else:

print(n「不可以同時(shí)被3和5整除,)

(2)

year二eval(input('輸入一個(gè)年份:,))

ifyear%400!=0:

ifyear%4==0andyear%100!=0:

print僅ear,'是閏年)

else:

print(year」不是閏年)

else:

print(year」是閏年)

(3)

importmath

weight=eval(inputC請輸入快件重量:())

ifweight<=l:

pay=12

else:

pay=12+math.ceil(weight-l)*1.3

print(快遞費(fèi)是:%.2f元'%pay)

(4)

x=eval(input('輸入x:'))

ifx==0:

y=i

elifx>0:

y=x+l

else:

y=x*x+l

print(y)

(5)

s=0

i=100

n=l

whilen<=10:

s=s+i

i=i/2

ifn==10:break

s=s+i

n+=l

print(,s=%f,i=%f'%(s,i))

(6)

num=int(input("請輸入一個(gè)數(shù)字:"))

factorial=1

ifnum<0:

print("抱歉,負(fù)數(shù)沒有階乘")

elifnum==0:

print("0的階乘為1")

else:

foriinrange(l,num+1):

factorial=factorial*!

print("%d的階乘為%d"%(num,factorial))

(7)

sign=-l

s=0

foriinrange(2,101):

sign="sign

s=s+i*sign

print(s)

(8)

x=237600

r=12.45/100

y=x

n=l

whiley<=x*2:

n+=l

y=x*(l+r)**n

print("%d年后可以翻番"%n)

(9)

forninrange(100,1000):

i=n/100

j=n/10%10

k=n%10

ifn==i**3+j**3+k**3:

printn

(10)

s=l

f=l

n=eval(input('輸入n:'))

foriinrange(l,n+l):

f=f*i

s=s+l/f

print('e=%f'%s)

練習(xí)五參考答案

、選擇題

題號12345678910

答案DACADBCDDBCA

題號1112131415161718

答案DABDCAAB

二、設(shè)計(jì)題

1.輸入一個(gè)班某門課的成績(實(shí)數(shù)),用列表求最高成績、最低成績、不及格的成績列表、

不及格的人數(shù),并將所有的成績?nèi)≌?/p>

參考源程序:

#輸入該門課的每個(gè)學(xué)生的成績

score_list=[]#成績列表初始化

prints請逐個(gè)輸入學(xué)生成績,用空格分隔,以回車結(jié)束:,)

score_str=input()

temp=score_str.split(',)#以空格為分隔符切分輸入的字符串為每個(gè)成績一個(gè)子串

forstrintemp:

score_list.append(float(str))#將成績字符串轉(zhuǎn)換為float型并添加到成績列表

print(scorejist)

#求最高、最低成績

print。最高分:max(score_list)「最低分',min(score_list))

#求不及格的成績、人數(shù)

score_fail=[]#不及格成績列表初始化

forscoreinscorejist:

ifscore<60:

score_fail.append(score)

print("不及格的成績列表::score_fail「不及格的人數(shù):'Jen(score_fail))

#將成績?nèi)≌?/p>

i=0

forscoreinscorejist:

score_list[i]=int(score)

i+=l

print(scorejist)#輸出取整后的成績列表

參考運(yùn)行結(jié)果:

請逐個(gè)輸入學(xué)生成績,用空格分隔,以回車結(jié)束:

9089.5788860.545.530

[90.0,89.5,78.0,88.0,60.5,45.5,30.0]

最高分90.0最低分30.0

不及格的成績列表:[45.5,30.0]不及格的人數(shù):2

[90,89,78,88,60,45,30]

2.用元組定義游戲菜單,提示用戶輸入菜單選擇,提示信息為“請輸入菜單項(xiàng)對應(yīng)的數(shù)字,

1.游戲設(shè)置2.選擇游戲級別3.我的裝備4.我的積分0.退出”,當(dāng)用戶輸入數(shù)字后,

輸出相應(yīng)的菜單項(xiàng)名稱,若輸入0,則顯示“謝謝使用”,然后退出游戲。

參考源程序:

prompt^請輸入菜單項(xiàng)對應(yīng)的數(shù)字,L游戲設(shè)置2.選擇游戲級別3.我的裝備4.我的積

分0.退出‘

menuTuple=。游戲設(shè)置?選擇游戲級別?我的裝備?我的積分?謝謝使用)#菜單項(xiàng)元組

print(prompt)#顯示提示信息

numStr=input()#輸入選擇項(xiàng)對應(yīng)的數(shù)字

ifnumStr>='0'andnumStr<='4':

print(menuTuple[int(numStr)-l])#以(數(shù)字-1)為下標(biāo),輸出對應(yīng)的菜單項(xiàng)

else:

print('輸入錯(cuò)誤,超出0~41)

3.輸入一行字符,統(tǒng)計(jì)每個(gè)字符的出現(xiàn)次數(shù),并將結(jié)果存放在字典中。

參考源程序:

#輸入一行字符

strLine=input('輸入一行字符')

#將字符串轉(zhuǎn)換為字符列表

strList=list(strLine)

print(strList)

#統(tǒng)計(jì),結(jié)果放在字典statistics中,每個(gè)元素為(字符:次數(shù))

statistics={}

foriinstrList:

ifiinstatistics.keys():#如果字典中的key已包含字符i,則字符i的出現(xiàn)次數(shù)加1

statistics[!]+=1

else:#如果字典中不包含i代表的key,說明該元素

還未出現(xiàn)過,設(shè)為1

statistics[!]=1

#遍歷統(tǒng)計(jì)結(jié)果字典:先用items。把字典轉(zhuǎn)換為列表,然后輸出列表中的鍵值對。

forele,countinstatistics.items():

print("%s的出現(xiàn)次數(shù)為:%d"%(ele,count))

練習(xí)六參考答案

、選擇題

題號12345678910

答案ADCDDBACBA

二、填空題

1.def

2.global

3.None

4.15

5.8

6.['abc','acd','ade']

7.10

8.6

9.6

10.5

三、簡答題

1.寫出Python函數(shù)的基本格式。

Python函數(shù)的基本結(jié)構(gòu),概括起來有如下幾條:

(1)函數(shù)代碼塊以def關(guān)鍵詞開頭,后接函數(shù)標(biāo)識符名稱和圓括號()。

(2)任何傳入?yún)?shù)和自變量必須放在圓括號中間,圓括號之間可以用于定義參數(shù)。

(3)函數(shù)的第一行語句可以選擇性地使用文檔字符串一一用于存放函數(shù)說明。

(4)函數(shù)內(nèi)容以冒號起始,并且縮進(jìn)。

(5)return[表達(dá)式]結(jié)束函數(shù),選擇性地返回一個(gè)值給調(diào)用方。不帶表達(dá)式的return相

當(dāng)于返回None。

2.簡述return語句的使用方法。

見實(shí)例:

【例6.4]return語句的用法。

defsum(argl,arg2):

#返回2個(gè)參數(shù)的和.

total=argl+arg2

print("函數(shù)內(nèi):”,total)

returntotal

#調(diào)用sum函數(shù)

total=sum(10,20)

print(“函數(shù)外:「total)

例6.4運(yùn)行結(jié)果如下:

函數(shù)內(nèi):30

函數(shù)外:30

例6.4展示了return基本的使用方法,當(dāng)使用return后,將return后的值返回到函數(shù)體

并且記錄下來,因此,第一個(gè)print函數(shù)total輸出值是30;由于return函數(shù)返回并記憶

了返回值,因此,第二個(gè)print函數(shù)total輸出值也是30。

3.什么是匿名函數(shù)?在什么情況下使用匿名函數(shù)。

Python允許不適用標(biāo)準(zhǔn)樣式def語句定義一個(gè)函數(shù),叫做匿名函數(shù),Python中使用

lambda來創(chuàng)建匿名函數(shù)。

lambda函數(shù)的用法。

(1)將lambda函數(shù)賦值給一個(gè)變量,通過這個(gè)變量間接調(diào)用該lambda函數(shù)。

例如,執(zhí)行語句add=lambdax,y:x+y,定義了加法函數(shù)lambdax,y:x+y,并將其賦值

給變量add,這樣變量add便成為具有加法功能的函數(shù)。例如,執(zhí)行add(l,2),輸出

為3=

(2)將lambda函數(shù)賦值給其他函數(shù),從而將其他函數(shù)用該lambda函數(shù)替換。

例如,為了把標(biāo)準(zhǔn)庫time中的函數(shù)sleep的功能屏蔽(Mock),我們可以在程序初始

化時(shí)調(diào)用time.sleep=lambdax:None。這樣,在后續(xù)代碼中調(diào)用time庫的sleep函數(shù)

將不會執(zhí)行原有的功能。例如,執(zhí)行time.sleep⑶時(shí),程序不會休眠3秒鐘,而是什么

都不做。

(3)將lambda函數(shù)作為其他函數(shù)的返回值,返回給調(diào)用者。函數(shù)的返回值也可

以是函數(shù),例如returnlambdax,y:x+y返回一個(gè)加法函數(shù)。這時(shí),lambda函數(shù)實(shí)際

上是定義在某個(gè)函數(shù)內(nèi)部的函數(shù),稱之為嵌套函數(shù),或者內(nèi)部函數(shù)。對應(yīng)地,將包含嵌

套函數(shù)的函數(shù)稱之為外部函數(shù)。

(4)將lambda函數(shù)作為參數(shù)傳遞給其他函數(shù)。部分Python內(nèi)置函數(shù)接收函數(shù)

作為參數(shù)。典型的此類內(nèi)置函數(shù)有如下幾種:

Dfilter函數(shù)。此時(shí)lambda函數(shù)用于指定過濾列表元素的條件。例如filter(lambda

*=%3==0,[1,2,3])指定將列表口23]中能夠被3整除的元素過濾出來,其結(jié)果是[3]。

2)sorted函數(shù)。此時(shí)lambda函數(shù)用于指定對列表中所有元素進(jìn)行排序的準(zhǔn)則。

例如sorted([l,2,3,4,5,6,7,8,9],key=lambdax:abs(5-x))將列表[1,2,3,4,5,6,7,8,9]

按照元素與5距離從小到大進(jìn)行排序,其結(jié)果是[5,4,6,3,7,2,8,1,9]。

3)map函數(shù)。此時(shí)lambda函數(shù)用于指定對列表中每一個(gè)元素的共同操作。例如

map(lambdax:x+1,[1,2,3])將列表[J2,3]中的元素分別加1,其結(jié)果[2,3,4]=

4)reduce函數(shù)。此時(shí)lambda函數(shù)用于指定列表中兩兩相鄰元素的結(jié)合條件。例

如reduce(lambdaa,b:'{},{}1.format(a,b),[1,2,3,4,5,6,7,8,9])將列表[1,2,3,4,5,6,7,

8,9]中的元素從左往右兩兩以逗號分隔的字符的形式依次結(jié)合起來,其結(jié)果是工2,3,4,

5,6,7,8,9'o

4.什么是變量的作用域?變量的作用域有哪幾類?

變量的作用域決定了在哪一部分程序可以訪問哪個(gè)特定的變量名稱。Python的作用域

一共有4種,分別是:(1)L(Local)局部作用域(2)E(Enclosing)閉包函數(shù)外的函數(shù)中

(3)G(Global)全局作用域(4)B(Built-in)內(nèi)建作用域。

5.簡述global和nonlocal關(guān)鍵字的異同點(diǎn)。

相同點(diǎn):都能修改變量的作用域。

區(qū)別:(1)兩者的功能不同。global關(guān)鍵字修飾變量后標(biāo)識該變量是全局變量,對該變

量的修改就是修改全局變量,而nonlocal關(guān)鍵字修飾變量后標(biāo)識該變量是上一級函數(shù)中的局

部變量,如果上一級函數(shù)中不存在該局部變量,nonlocal位置會發(fā)生錯(cuò)誤(最上層的函數(shù)使

用nonlocal修飾變量必定會報(bào)錯(cuò))。

(2)兩者使用的范圍不同。global關(guān)鍵字可以用在任何地方,包括最上層函數(shù)中和嵌套

函數(shù)中,及時(shí)之前未定義該變量,global修飾后也可以直接使用,而nonlocal關(guān)鍵字只能用

于嵌套函數(shù)中,并且外層函數(shù)中定義了相應(yīng)的局部變量,否則會發(fā)生錯(cuò)誤。

四、程序設(shè)計(jì)題

1.輸入三個(gè)整數(shù)x,y,z,請把這三個(gè)數(shù)有小到大輸出。

參考源程序:

#輸入三個(gè)整數(shù)x,y,z,請把這三個(gè)數(shù)由小到大輸出。

x=int(input('請輸入x:'))

y=int(input('請輸入y:'))

z=int(input(,請輸入z:'))

list=[x,y,z]#直接給list賦值

print('排序前:list)

list.sort()#sort()是內(nèi)置的排序函數(shù),可以排序字符類型。默認(rèn)為升序

print。升序:[list)

參考運(yùn)行結(jié)果:

請輸入x:4

請輸入y:3

請輸入z:4

排序前:[4,3,4]

升序:[3,4,4]

2.判斷101~200之間有多少個(gè)素?cái)?shù),并輸出所有素?cái)?shù)。

參考源程序:

foriinrange(101,201):

a=2

whilea<i:#

ifi%a==0:break

else:a=a+l

ifa==i:

print(i)

參考運(yùn)行結(jié)果:

101

103

107

109

113

127

131

137

139

149

151

157

163

167

173

179

181

191

193

197

199

3.輸入一行字符,分別統(tǒng)計(jì)出其中英文字母、空格、數(shù)字和其他字符的個(gè)數(shù)。。

參考源程序1:

s=inputC請輸入字符串:')

dic={,letter,:0,,space,:0/integer,:0,,other':0}

foriins:

ifi>'a'andi<'z'ori>'A'andk'Z':

dic['letter']+=1

elifi=='

dic['space']+=1

elifiin'0123456789,:

dic['integer']+=1

else:

dic['other']+=1

prin武統(tǒng)計(jì)字符串:對

print(dic)

參考源程序2:

#輸入字符串

tmpStr二input('請輸入字符串:')

alphaNum=0

spaceNum=0

numbers=0

otherNum=0

foriintmpStr:

ifi.isalpha():

alphaNum+=1

elifi.isspace():

spaceNum+=1

elifi.isnumeric():

numbers+=1

else:

otherNum+=1

print。字母二%d'%alphaNum)

printf空格二%d'%spaceNum)

print('數(shù)字二%d'%numbers)

prin"其他二%d%otherNum)

4.用lambda函數(shù)實(shí)現(xiàn)兩個(gè)數(shù)相乘。

參考源程序:

mul=lambdax,y:x*y

a二eval(input('請輸入a:'))

b=eval(input('請輸入b:'))

print(mul(a,b))#或者:print('{:.3f}*{:.3f}={:.3f}'.format(a,b,mul(a,b)))

5.有n個(gè)人圍成一圈,順序排號。從第一個(gè)人開始報(bào)數(shù)(從1到3報(bào)數(shù)),凡報(bào)到3的人退

出圈子,問最后留下來的是原來第幾號?

參考源程序1:

n=int(input('輸入數(shù)字:’))#輸入數(shù)字

a=list(range(l,n+l))#建立一個(gè)列表,存放的是號碼數(shù)

count=0;#構(gòu)造一個(gè)全局變量,使得其儲存每一位報(bào)的數(shù)

whilelen(a)>l:#循環(huán)直到列表只剩一個(gè)元素

b=a[:]#復(fù)制列表,為下一步刪除做準(zhǔn)備

foriinrange(O,len(b)):#在len(b)的次數(shù)中,計(jì)數(shù),并去除數(shù)

count+=l

ifcount%3==0:#如果報(bào)三,則去除a中的這一位

a.remove(b[i])

print(a[0])

參考源程序2:

defwho_remain(n):

1st=[iforiinrange(l,n+1)]#構(gòu)造一個(gè)列表

whilen>2:

lst.pop(2)#彈出第三個(gè)元素

before=lst[:2]#彈出后把前兩個(gè)元素移到最后

1st=lst[2:]

Ist.extend(before)

n=len(lst)#下一次循環(huán)就從原來的4號(即現(xiàn)在的1號開始)

print(lst[l])

n=int(input('輸入數(shù)字:,))#輸入數(shù)字

who_remain(n)

參考運(yùn)行結(jié)果:輸入12輸出10

練習(xí)七參考答案

一、填空題

1、⑴['a','b','c'](2)[3,T]

2、⑴[T,2,3,4](2)'abb'

二、簡答題

1.為什么要引入模塊,如何定義一個(gè)模塊?

答:使用模塊可以提高代碼的可維護(hù)性,同時(shí)也使得編寫代碼不必從零開始。當(dāng)一個(gè)模塊編

寫完畢,就可以被其他地方引用。我們在編寫程序的時(shí)候,也經(jīng)常引用其他模塊,包括Python

內(nèi)置的模塊和來自第三方的模塊。所有的.py文件都被視為是一個(gè)模塊

2.模塊的導(dǎo)入方法有哪些?

答:Python3中提供了三種導(dǎo)入方式,即直接使用import導(dǎo)入模塊、通過sys模塊導(dǎo)入自定

義模塊、通過pth文件找到自定義模塊。

3.使用import、from...importsfrom...import*導(dǎo)入模塊有什么異同點(diǎn)?

答:import語句、from...import語句和from…import*語句都能實(shí)現(xiàn)模塊的導(dǎo)入。各自特

點(diǎn)如下:

(1)import模塊:導(dǎo)入一個(gè)模塊,相當(dāng)于導(dǎo)入的是一個(gè)文件夾,是個(gè)相對路徑。

(2)from...import:導(dǎo)入了一個(gè)模塊中的一個(gè)函數(shù),相當(dāng)于導(dǎo)入的是一個(gè)文件夾中的文件,

是個(gè)絕對路徑。

(3)from...import*:是把一個(gè)模塊中所有函數(shù)都導(dǎo)入進(jìn)來,相當(dāng)于導(dǎo)入的是一個(gè)文件夾中

所有文件,所有函數(shù)都是絕對路徑。

總結(jié)起來,firom...import*語句與import區(qū)別在于:import導(dǎo)入模塊,每次使用模塊中的函

數(shù)都要確定是哪個(gè)模塊;Mm...import*導(dǎo)入模塊,每次使用模塊中的函數(shù),直接使用函數(shù)就

可以了,因?yàn)橐呀?jīng)知道該函數(shù)是哪個(gè)模塊中的了。

4.導(dǎo)入自定義模塊方法有哪些?

答:

(1)直接import:這里有個(gè)大前提,就是你的py執(zhí)行文件和模塊同屬于同個(gè)目錄(父級目

錄);

(2)通過sys模塊導(dǎo)入自定義模塊的路徑path:如果執(zhí)行文件和模塊不在同一目錄,這時(shí)

候直接import是找不到自定義模塊的。

在環(huán)境變量中找到自定義模塊

(3)通過pth文件找到自定義模塊:通過pth文件找到自定義模塊利用了系統(tǒng)變量,Python

會掃描path變量的路徑來導(dǎo)入模塊,可以在系統(tǒng)path里面添加。此處可以采用pth文件添

加。

5.如何在Python使用第三方庫?

答:

在第三方模塊安裝好后,其搜索路徑就已經(jīng)設(shè)置好了,我們可以嘗試直接importnumpy

等已安裝的第三方模塊。當(dāng)我們試圖加載一個(gè)模塊時(shí),Python會在指定的路徑下搜索對應(yīng)

的.py文件,如果找不到,就會報(bào)錯(cuò)。默認(rèn)情況下,Python解釋器會搜索當(dāng)前目錄、所有已

安裝的內(nèi)置模塊和第三方模塊,搜索路徑存放在sys模塊的path變量中。

如果我們要添加自己的搜索目錄,有兩種方法。一是直接修改sys.path,添加要搜索的目錄。

第二種方法是設(shè)置環(huán)境變量PYTHONPATH,該環(huán)境變量的內(nèi)容會被自動添加到模塊搜索路

徑中。設(shè)置方式與設(shè)置Path環(huán)境變量類似。注意只需要添加你自己的搜索路徑,Python自

己本身的搜索路徑不受影響。

6.包和模塊之間的關(guān)系是什么,如何導(dǎo)入和使用包?

答:

在模塊使用過程中,可能會遇到下面的問題,那就是如果不同的人編寫的模塊名相同怎么辦?

為了避免模塊名沖突,Python又引入了按目錄來組織模塊的方法,稱為包(Package)o

(1)import:導(dǎo)入一個(gè)包,相當(dāng)于導(dǎo)入的是一個(gè)文件夾,是個(gè)相對路徑。

(2)from...import:導(dǎo)入了一個(gè)包中的一個(gè)函數(shù),相當(dāng)于導(dǎo)入的是一個(gè)文件夾中的文件,是

個(gè)絕對路徑。

(3)from...import*:是把一個(gè)包中所有函數(shù)都導(dǎo)入進(jìn)來,相當(dāng)于導(dǎo)入的是一個(gè)文件夾中所

有文件,所有函數(shù)都是絕對路徑

三、程序設(shè)計(jì)題

1.設(shè)計(jì)一個(gè)簡單程序,調(diào)用系統(tǒng)模塊time。

Filename:test.py

#導(dǎo)入模塊

importtime

#現(xiàn)在可以調(diào)用模塊里包含的函數(shù)了

time.time()

2.編寫一個(gè)模塊并調(diào)用。

#Filename:support.py

defprint_func(par):

print("Hello:",par)

return

test.py弓I入support模塊:

#Filename:test.py

#導(dǎo)入模塊-

importsupport

#現(xiàn)在可以調(diào)用模塊里包含的函數(shù)了

support.print_func("成功導(dǎo)入模塊!”)

練習(xí)八參考答案

一、選擇題

題號1234

答案DADB

二、設(shè)計(jì)題

1.完善例8.2中的Student類,增加構(gòu)造函數(shù)(帶默認(rèn)初始值)?;赟tudent類定義

Universitystudent類,增加新的屬性“學(xué)生專業(yè)”,并重載相關(guān)的方法。然后定義派生類的2

個(gè)對象(不帶參數(shù)的、帶參數(shù)的),設(shè)置對象的值、顯示對象的值。

#定義Student類

classStudent:

stu_count=0#類數(shù)據(jù)成員

#構(gòu)造方法

def_init_(self,no_l=",name_l=",sex_l="):

self.no=no_l#3個(gè)對象數(shù)據(jù)成員

=name_l

self.sex=sex_l

Student.stu_count+=l#每設(shè)置一個(gè)學(xué)生信息,學(xué)生數(shù)量加1

#設(shè)置學(xué)生信息

defset(seltno_l,name_l,sex_l):

self.no=no_l#3個(gè)對象數(shù)據(jù)成員

=name_l

self.sex=sex_l

#顯示學(xué)生信息

defdisplay(self):

print('No:',self.no,'Name:',self,name,'Sex:',self.sex)

#定義派生類Universitystudent

classUniversityStudent(Student):

#重載構(gòu)造方法

def_init_(self,no_l=",name_l="zsex_l=",speciality_l="):

Student._init_(seltno_l,name_l,sex_l);

self.speciality=speciality_l;

#重載set()方法

defset(seltno_l,name_l,sex_l,speciality_l):

Student.set(self,no_l,name_l,sex_l)

self.speciality=speciality_l

#重載display。方法

defdisplay(self):

Student.display(self);

print('speciality:',self.speciality)

#定義學(xué)生類的對象stul和stu2,并調(diào)用方法實(shí)現(xiàn)2個(gè)學(xué)生對象的設(shè)置和顯示

stul=UniversityStudent()

stul.setClSOSOSZlO'/fengcheng','M','Computer')

stul.display()

stu2=UniversityStudent('180805211,,,wanghaimeng,,,FM','English')

stu2.display()

#分別通過類名和對象名訪問stu_count,輸出學(xué)生數(shù)量

print1學(xué)生對象數(shù)量:。Student.stu_count)

print('學(xué)生對象數(shù)量:-stul.stu_count)

print('學(xué)生對象數(shù)量::stu2.stu_count)

運(yùn)行結(jié)果:

No:180805210Name:fengchengSex:M

speciality:Computer

No:180805211Name:wanghaimengSex:FM

speciality:English

學(xué)生對象數(shù)量:2

學(xué)生對象數(shù)量:2

學(xué)生對象數(shù)量:2

2.完善例8.5,實(shí)現(xiàn)兩個(gè)向量對象的減法(vl-v2)和乘法(vl*v2)

提示:設(shè)兩個(gè)向量a=(x1,y1),b=(x2,y2)MJ

a+b=(x1+x2,y1+y2)a-b=(x1-x2,y1-y2)ab=x1x2+y1y2

參考源程序:

#定義Vector類

classVector:

#定義構(gòu)造方法

def_init_(self,newa,newb):

self.a=newa

self.b=newb

#定義方法,輸出向量

defprint_vector(self):

print('Vector(%d,%d),%(self.a,self.b))

#重載運(yùn)算符“+”

def_add_(self,other):

returnVector(self.a+other.a,self.b+other.b)

#重載運(yùn)算符

def_sub_(self,other):

returnVector(self.a-other.a,self.b-other.b)

#重載運(yùn)算符

def_mul_(self,other):

return(self.a*other.a+self,b*other.b)

#定義對象并調(diào)用方法

vl=Vector(4,10)

v2=Vector(2,-3)

print('vl:,,end='')

vl.print_vector()

print('v2:',end="')

v2.print_vector()

#調(diào)用重載的加法方法_add_(),實(shí)現(xiàn)兩個(gè)對象直接相加

v3=vl+v2

print('vl+v2:,,end="')

v3.print_vector()

#調(diào)用重載的加法方法_sub_(),實(shí)現(xiàn)兩個(gè)對象直接相減

v4=vl-v2

print('vl-v2:,,end=,')

v4.print_vector()

#調(diào)用重載的加法方法_mul_(),實(shí)現(xiàn)兩個(gè)對象直接相乘

v5=vl*v2

print('vl*v2:',v5)

練習(xí)九參考答案

一、選擇題

題號12345678

答案BAADCC

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論