Python程序設(shè)計(jì)基礎(chǔ)課后練習(xí)題答案1-13章全_第1頁
Python程序設(shè)計(jì)基礎(chǔ)課后練習(xí)題答案1-13章全_第2頁
Python程序設(shè)計(jì)基礎(chǔ)課后練習(xí)題答案1-13章全_第3頁
Python程序設(shè)計(jì)基礎(chǔ)課后練習(xí)題答案1-13章全_第4頁
Python程序設(shè)計(jì)基礎(chǔ)課后練習(xí)題答案1-13章全_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第一章

判斷題:1*4:VXVV

第二章

判斷題:1-5:VXXVV6-10:XXVVV

11-15:XVVXV

添加代碼題:

1.我們都知道,下面的代碼:

print*7likewritinginPython.,z

printuItissomuchfun.”

型后,運(yùn)行結(jié)果為:

IlikewritinginPython.

Itissomuchfun.

你能只用一行代碼實(shí)現(xiàn)上述技果嗎?

第3章習(xí)題參考答案:

一、選擇題

ABABB

二、簡(jiǎn)答題

1.break或continue語句用來提前跳出循環(huán),即循環(huán)條件沒有滿足False時(shí)或者序列還沒

被完全遞歸完,也會(huì)停止執(zhí)行循環(huán)語句。其中,continue語句用于跳出本次循環(huán),而

break用于跳出整個(gè)循環(huán)。

該程序段的功能是檢查用戶輸入的用戶名及密碼是否正確,輸入正確則顯示“登錄成

功”;輸入錯(cuò)誤則由用戶重新輸入,但輸入錯(cuò)誤次數(shù)超過3次則不允許再次輸入,直接顯示

“登錄失敗”。break在此程序段中的作用是當(dāng)輸入用戶名和密碼正確時(shí)或輸入錯(cuò)誤次

數(shù)超過3次時(shí)直接結(jié)束循環(huán)。

2.Python語句代碼縮進(jìn)的書寫原則:在邏輯行首的空白(空格和制表符)用來決定邏輯

行的縮進(jìn)層次,從而用來決定語句的分組。這意味著同一層次的語句必須有相同的縮進(jìn)。

有相同的縮進(jìn)的代碼表示這些代碼屬于同一代碼塊。

代碼段1和代碼段2的區(qū)別在于“print(sum)”這個(gè)語句的位置。在代碼段1中,

aprint(sum)"和*'foriinrange(lO):"在同一層次,表示它們是并列的語句,

Uprint(sum)"不在循環(huán)體內(nèi),所以循環(huán)結(jié)束后才輸出sum的值;而在代碼段2中,

Mprint(sum)n在循環(huán)體內(nèi),表示每循環(huán)一次都會(huì)輸出一次sum的值。

3.錯(cuò)誤1:循環(huán)嵌套代碼的縮進(jìn)

錯(cuò)誤2:range(L4)只是包括12,3,不包括4。所以要改成range(l,5)

錯(cuò)誤3:if(i!=j!二k)的寫法不對(duì)。改為if(i!=jandj!=k)

4.輸出結(jié)果

>>>

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("數(shù)字”)

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這個(gè)數(shù)是%d位數(shù)"晰)

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是素?cái)?shù)"%num)

else:

print("%d不是素?cái)?shù)"%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)

三、實(shí)訓(xùn)題

1.求最大公約數(shù)代碼參考書上例3.6。求出最大公約數(shù)后即可相應(yīng)求出最小公倍

數(shù)。

2.求1!+2!+3!+…+20!

參考代碼:

sum=0

foriinrange(l,21):

t=l

forjinrange(l,i+l):

t*=j

sum+=t

print(sum)

3.輸出斐波那契數(shù)列的前20項(xiàng)

參考代碼:

fl=l

f2=l

furiinranye(l,21);

print(fl,f2)

fl+=f2

f2+=fl

4.編程找出1000之內(nèi)的所有完數(shù),并輸出其因子。

參考代碼:

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格式化成整數(shù),-代表左對(duì)齊.

數(shù)字代表占位。

print(end二",)#這一句代表,每次遍歷完一個(gè)周期換行,并下一次遍歷的結(jié)果將從

該行輸出。如果是print。將從下一行開始輸出。

6.輸入一系列數(shù)字,并求和與求平均數(shù)。

sum=0.0

i=0

num=int(input("請(qǐng)輸入數(shù)字,以。結(jié)束”))

whilenum!=0:

sum+=num

num=int(inputC'請(qǐng)輸入數(shù)字,以0結(jié)束"))

i+=l

average=sum/i

print("加起來總數(shù)為%d,平均數(shù)蜥"%(sum,average))

第4章課后練習(xí)答案:

一、填空題:

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','萬維網(wǎng)')

5.,c:\\test.htm'6.17.'HELLOWORLD'8.True9.1123456'lO.True

二、簡(jiǎn)答題:

1.假設(shè)有一段英文,其中有單詞中間的字母“i”誤寫為T,請(qǐng)編寫程序進(jìn)行糾正。

x="iamateacher,iamman,andiam38yearsold.Iamnotabusinessman."

x=x.replace('i','1')

print(x)

2.有一段英文文本,其中有單詞連續(xù)重復(fù)了2次,編寫程序檢查重復(fù)的單詞并只保留一

個(gè)。例如文本內(nèi)容為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.編寫程序,用戶輸入一段英文,然后輸出這段英文中所有長(zhǎng)度為3個(gè)字母的單詞。

importre

words=input("lnputthewords:")

l=re.split(1[\.]+,,words)#使用空格分隔詞語,得到各個(gè)單詞

print(l)

i=0#這里我設(shè)置的是計(jì)數(shù)器

foriinI:

iflen(i)==3:#如果單詞的長(zhǎng)度為3輸出

print(i)

else:

print。)

4.求s=a+aa+aaa+aaaa+aa...a的值,其中a是一個(gè)數(shù)字。例如2+22+222+2222+22222(此

時(shí)共有5個(gè)數(shù)相加),幾個(gè)數(shù)相加由鍵盤控制。

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

count=int(input("請(qǐng)輸入數(shù)字的位數(shù)”))

sum=0

temp=0

foriinrange(count):

temp+=num*10**i

print(temp)

sum+=temp

print(sum)

5.一個(gè)數(shù)如果恰好等于它的因子之和,這個(gè)數(shù)就稱為完數(shù)。例如6=1+2+3。編程找出1000

以內(nèi)的所有完數(shù)。

#encoding:utf

n=input("Pleaseinputanumber!")

sum=O

printS=""

furiinrange(l,n):

ifn%i==0:

sum=sum+i

ifsum>n:

print"%dis不足數(shù)'馳n

elifsum<n:

print"%dis豐沛數(shù)

else:

print"%dis完數(shù)"%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))

實(shí)戰(zhàn)作業(yè)

lx輸入一串字符串,判斷它是不是回文數(shù)。如MadamJmAdam是回文數(shù)。

提示要把一串字符中所有的標(biāo)點(diǎn)符號(hào)去除,并把所有的大寫字符變成小寫字符再進(jìn)行比較。

如“MadamJmAdam",轉(zhuǎn)化后變成"madamimadam”,正讀與逆讀是一樣的,為回文。

importstring#導(dǎo)入字符串函數(shù)庫

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.計(jì)算Poker中出現(xiàn)各種手?jǐn)?shù)的概率,現(xiàn)給出Poker-hand-testing.data文件,其中有

1000000條記錄,要求讀出每一條記錄,并統(tǒng)計(jì)以下問題:

以下是每條記錄的格式:

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

以下是各種類型的牌的編號(hào):

圖4-9牌的類型

要求:(1)計(jì)算Poker有多少行;

(2)計(jì)算包含1對(duì)牌的總手?jǐn)?shù)與出現(xiàn)的概率;

(3)計(jì)算所有牌類型出現(xiàn)的手?jǐn)?shù)及概率。

#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.智多星游戲:

計(jì)算機(jī)隨機(jī)產(chǎn)生4種不相同的顏色序列,玩家不知道,讓玩家輸入四種顏色,與計(jì)算機(jī)隨機(jī)

產(chǎn)生的序列作比較,如果全部相同則顯示猜對(duì)了,否則重新輸入,設(shè)定總的輸入次數(shù),超過

總次數(shù),則失敗。

要求如下:(1)設(shè)定總的嘗試次數(shù)。

(2)如果輸入的顏色與隨機(jī)序列在位置與顏色都相符,則打印“★二

(3)如果輸入的顏色與隨機(jī)序列的顏色相符,但是位置上不相符,則打印

(4)如查輸入的顏色與位置都不對(duì),則打印

(5)當(dāng)輸入的顏色與位置都對(duì)了,就顯示猜對(duì)了。

(6)如果超過總的輸入次數(shù),就顯示失敗。

#encoding:gbk

importrandom

importwinsound

i=0

s="RYBGCOPW"

str=""

i=o

corr=""

#產(chǎn)生四個(gè)隨機(jī)顏色與位置,并不能重復(fù)

whilej<4:

tempChar:random.choice(s)#生成一個(gè)隨機(jī)字符

iftempCharnotinstr:

str+=tempChar

j+=l

#循環(huán)12次

whilei<=12:

print"Thisisthe%dthtry"%(i+l)

inputColor=raw_input("Pleaseenter4colors(\"RYBGCOPW\"):")

iflen(inputColor)!=4:#長(zhǎng)度超過4個(gè)字符或者不夠4個(gè)字符不予判斷,請(qǐng)注意Continue

的用法

print"WRONGENTER!\nYoumustenter4color(\"RYBGCOP\A/\")!"

continue

forkinrange(0,4):#對(duì)每一種顏色進(jìn)行判斷

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!"

第五章習(xí)題答案

一選擇題

l.C2.B3.C4.B5.C6.B7.A

二簡(jiǎn)答題

1.相對(duì)路徑是相對(duì)于什么7

答:相對(duì)路徑相對(duì)于當(dāng)前工作目錄

2.絕對(duì)路徑從什么開始?

答:絕對(duì)路徑總是從根目錄開始

3os.getrwd。和os.chdir。分別是做什么?

答:os.getcwd。獲得當(dāng)前工作目錄,os.chdir。改變工作目錄。

4.可以傳遞給open。函數(shù)的3種模式參數(shù)是什么?

答表示以讀的方式打開文件;w,表示以寫的方式打開文件;a,表示以追加的方式

打開文件。

5.read。和readlines。之間的區(qū)別是什么?

答:read。在未指定字符個(gè)數(shù)情況下會(huì)讀取盡可能多的字符,有可能到文件末尾;

「eadlines。則按行的方式讀取文件,返回一個(gè)列表,每一行為列表中的一個(gè)元素。

三編程題

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:(”請(qǐng)輸入文件名”)

f=open(fileNamez"r")

str=f.read()

words=str.split()

lines=str.split("\n")

print("字符數(shù):",len字tr))

print。'單詞數(shù):"JenCwords))

print。'行數(shù):"Jen(lines))

4.

fileName=input(”請(qǐng)輸入文件名”)

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都有一個(gè)選項(xiàng),可以將數(shù)據(jù)導(dǎo)出為CSV格式。在

本練習(xí)中,創(chuàng)建程序,讀取電子表格(CSV格式)并操縱它。程序應(yīng)具有以下功能:

(1)顯示數(shù)據(jù)

(2)刪除行或列

(3)插入行或列

(4)更改指定單元格中的數(shù)據(jù)

(5)輸出CSV格式的數(shù)據(jù)

其中要考慮的問題有:

使用CSV模塊,讀取電子表格,選擇恰當(dāng)?shù)臄?shù)據(jù)結(jié)構(gòu)來存儲(chǔ)數(shù)據(jù)。該用列表、元組還

是字典?

在程序中使用循環(huán),提示輸入上述操作的名字。接口方式是用單個(gè)字母來表示相關(guān)操作,

例如“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()

二、簡(jiǎn)答題:

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的區(qū)別主要在于sorted是將排序完的數(shù)據(jù)賦予給一個(gè)新變量,而

sort則是在原變量的基礎(chǔ)上直接進(jìn)行排序,不產(chǎn)生新變量。

sorted是內(nèi)建函數(shù),而sorted是類函數(shù),其使用必須跟在對(duì)象后面。

12.IP.splitC,')

13.略

14.可以,可以

15.列表是可以修改的,(2,3)為列表中的一個(gè)對(duì)象,可以被替換,但是它本身是不能修改的.

如(2,3)改成(2,4)就不行。

元組是不能修改的,元組中的對(duì)象并沒有被修改。只是元組中有個(gè)一個(gè)對(duì)象是列表,列

表本身可以修改,但是對(duì)象沒有變。

實(shí)戰(zhàn)作業(yè)

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.編程實(shí)現(xiàn)《葛底斯堡演說》中單詞的統(tǒng)計(jì)(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個(gè)單詞"%len(speach))

forwordinspeach:

ifwordnotinunique:

unique.append(word)

printunique

一、選擇題

1、C2、B3、C

二、問答題

1、字典是Python語言中唯一的映射類型。映射類型對(duì)象里哈希值(鍵,key)和指向

的對(duì)象(值,value),通常被認(rèn)為是可變的哈希表。字典對(duì)象是可變的.它是一個(gè)容器類型,

能存儲(chǔ)任意個(gè)數(shù)的Python對(duì)象,其中也可包括其他容器類型。

字典是Python中最強(qiáng)大的數(shù)據(jù)類型之一,它與列表、元組等其它序列類型的主要區(qū)別

有以下幾點(diǎn):

(1)存取和訪問數(shù)據(jù)的方式不同

(2)映射類型中的數(shù)據(jù)是無序排列的。這和序列類型是不一樣的,序列類型是以數(shù)值序排

列的;

(3)映射類型用鍵直接“映射”到值。

(4)字典支持索引操作(索引值為鍵值),但不支持切片操作,因?yàn)榍衅僮魇轻槍?duì)索引值

具有連續(xù)的,而字典的鍵不具備連續(xù)性。

(5)字典中的鍵必須是不可變且不重復(fù),值可以是任何類型。

2、

(1)直接創(chuàng)建字典

創(chuàng)建一個(gè)空的字典

>>>mydict={}#創(chuàng)建一個(gè)空的字典

>>>mydict#輸出此字典的內(nèi)容

{}

(2)通過diet函數(shù)創(chuàng)建字典

diet函數(shù)是字典類的構(gòu)造函數(shù),也可以利用此函數(shù)來創(chuàng)建字典。

創(chuàng)建一個(gè)空字典:

>>>dict()

{)

3、

(1)get函數(shù):訪問字典成員

get。函數(shù)根據(jù)key獲取值。

,,

>>>d={one':lz'two':2/three:3}

>>>print(d.get('two'))

(2)copy函數(shù):返回一個(gè)具有相同鍵值的新字典

,,,,,,

>>>x={'one:l;two':2zthree':3/'test':[a/b7c]}#創(chuàng)建一個(gè)字典x

>>>print(x)#輸出字典x

{'one':1,'two':2,'test':['a"z'b'z'c']z'three':3}

(3)pop函數(shù):刪除字典中對(duì)應(yīng)的鍵

Pop函數(shù)可以刪除字典中的鍵及其對(duì)應(yīng)的值。

,,

>>>d={'one':lztwo':2/'three:3}

>>>d.popCtwo')#刪除鍵'two'

(4)fromkeys函數(shù):用給定的鍵建立新的字典

fromkeys函數(shù)可以用給定的鍵建立新的字典,鍵默認(rèn)對(duì)應(yīng)的值為None

>>>d=dict.fromkeys(['one'/two7three'])

(5)update函數(shù):用一個(gè)字典更新另外一個(gè)字典

update函數(shù)可以用一個(gè)字典來更新另外一個(gè)字典。操作如下:

>>>d={

'one':123z

'two':2,

'three':3

)

實(shí)戰(zhàn)作業(yè):

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章習(xí)題答案

一選擇題

l.B2.C3.B4.D

二簡(jiǎn)答題

1、什么是異常?

答:異常是一個(gè)事件,該事件會(huì)在程序執(zhí)行過程中發(fā)生,影響了程序的正常執(zhí)行。一般情況

下,在Python無法正常處理程序時(shí)就會(huì)發(fā)生一個(gè)異常。當(dāng)Python腳本發(fā)生異常時(shí)我們需

要捕獲并處理它,如果不處理,并且調(diào)用此程序的上層程序也不處理,程序會(huì)終止執(zhí)行

2、異常和錯(cuò)誤的區(qū)別?

答:錯(cuò)誤通常是語法錯(cuò)誤,是編程人員錯(cuò)誤地使用語法、錯(cuò)誤地鍵入字符等原因造成,這需

要編程人員不斷提高編碼能力來避免。異常是語法正確的代碼在執(zhí)行過程中遇到的無法處理

的情況,比如除數(shù)為0,數(shù)組越界等,這需要編程人員通過捕獲異常來避免程序崩潰,以提

高程序的健壯性。

3、簡(jiǎn)述處理異常的一般結(jié)構(gòu)?

異常處理結(jié)構(gòu)如下:

I

■vbody>?

except<ExceptionTypel>:

<handlerl>

except<ExceptionTypeN>:

<handlerN>

except:

#上一句except分支不指定任何類型的異常,表示可以匹配任何異常類型。

<handlerExcept>

else:

■vprocos工

finally:

<process_finally>

4

答:A、statements不會(huì)執(zhí)行。

B、statement4不會(huì)執(zhí)行

C、statement會(huì)執(zhí)行

5程序輸出ulndexoutofbound"

6程序輸出:

Done

Nothingiswrong

Finallywearehere

Continue

7程序輸出:

Indexoutofbound

Finallywearehere

Continue

8ArithmeticError被先捕獲,而它是ZeroDivisionError的父類,因此即便是因除數(shù)為0而拋

出異常,也是被except:AiithmeticEir。分支捕獲,而不會(huì)被后面的except:ZeroDivisionError

分支捕獲。因此,后面的分支永遠(yuǎn)不會(huì)被執(zhí)行。

一、選擇題

l.C2,A

二、簡(jiǎn)答題

1.wxPylhon中子語句塊采用縮進(jìn)方式編寫,有子語句的語句以皆號(hào)結(jié)束,所有該行下

的縮進(jìn)行都屬于以該冒號(hào)終止的語句。當(dāng)縮進(jìn)回復(fù)到原來的縮進(jìn)時(shí),這一塊子語句

塊就結(jié)束了。

2.包括但不限于wx.RadioBox,wx.CheckBox,wx.ToolBar,wx.Dialog等

三、實(shí)戰(zhàn)作業(yè)

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

二、簡(jiǎn)答題

1.對(duì)象是對(duì)某個(gè)具體客觀事物的抽象,類是對(duì)對(duì)象的抽象描述,在計(jì)算機(jī)語言中是一種抽

象的數(shù)據(jù)類型。類定義了數(shù)據(jù)類型的數(shù)據(jù)(屬性)和行為(方法)。類與對(duì)象的關(guān)系是,對(duì)

象是類的實(shí)例,類是對(duì)象的模板。

2.面向?qū)ο蟪绦蛟O(shè)計(jì)具有如下優(yōu)點(diǎn):

(1)符合人們習(xí)慣的思維方法,便于分解大型的復(fù)雜多變的問題。由于對(duì)象對(duì)應(yīng)于現(xiàn)實(shí)世

界中的實(shí)體,因而可以很自然地按照現(xiàn)實(shí)世界中處理實(shí)體的方法來處理對(duì)象,軟件開發(fā)者可

以很方便地與問題提出者進(jìn)行溝通和交流。

(2)易于軟件的維護(hù)和功能的增減。對(duì)象的封裝性及對(duì)象之間的松散組合,都給軟件的修

改和維護(hù)帶來了方便。

(3)可重用性好。重復(fù)使用一個(gè)類(類是對(duì)象的定義,對(duì)象是類的實(shí)例化),可以比較方便

地構(gòu)造出軟件系統(tǒng),加上繼承的方式,極大地提高了軟件開發(fā)的效率。

(4)與可視化技術(shù)相結(jié)合,改善了工作界面。隨著基于圖形界面操作系統(tǒng)的流行,面向?qū)?/p>

象的程序設(shè)計(jì)方法也將深入人心。它與可視化技術(shù)相結(jié)合,使人機(jī)界面進(jìn)入GUI時(shí)代。

3.Python定義一個(gè)類使用關(guān)鍵字class聲明,類的聲明格式如下:

classclassName:

類體

4._init_。方法是類的構(gòu)造方法,用于執(zhí)行類的實(shí)例的初始化工作創(chuàng)建完實(shí)例后調(diào)用,

初始化當(dāng)前對(duì)象的實(shí)例,無返回值。

5.非綁定方法不與類或?qū)ο蠼壎?,類和?duì)象都可以調(diào)用,但是沒有自動(dòng)傳值。

6.self指的是類實(shí)例對(duì)象,不是類

7.繼承反應(yīng)客觀世界中各類事物之間的一種''一般和特殊〃的關(guān)系。繼承是指類之間有繼承關(guān)

系,子類有條件地繼承父類的特征。對(duì)象的一個(gè)新類可以從現(xiàn)有的類中派生出來,這個(gè)過程

稱為類繼承。例如''教師〃、''學(xué)生"是''人〃的一種,''人〃是父類,''教師〃、''學(xué)生〃繼承''人〃的

特性。

多態(tài)一般指具有多種形態(tài)的能力。對(duì)象的多態(tài)是指在一般類中定義的屬性或操作被特殊

類繼承后,可以具有不同的數(shù)據(jù)類型或表現(xiàn)出不同的行為。利用多態(tài)性,用戶可以發(fā)送一個(gè)

通用的信息,而將所有的實(shí)現(xiàn)細(xì)辛都留給接收消息的對(duì)象自行決定,這意味著同一消息即可

調(diào)用不同的方法。例如:Print消息被發(fā)送給一個(gè)圖或表時(shí)調(diào)用的打印方法與將同樣的Print

消息發(fā)送給一個(gè)正文文件而調(diào)用的打印方法會(huì)完全不同。

8.私有屬性指的是只有在類方法中才能訪問私有屬性,對(duì)象不能直接訪問私有屬性。公有屬

性可以被對(duì)象直接訪問。通常,約定兩個(gè)下劃線開頭,但是不以兩個(gè)下劃線結(jié)束的屬性為私

有屬性,其它的都是公有屬性。

9.實(shí)例方法:在類中最常定義的成員方法,它至少有一個(gè)參數(shù)并且必須以實(shí)例對(duì)象作為其

第一個(gè)參數(shù),一般以''self〃作為第一個(gè)參數(shù)。在類外,實(shí)例方法只能通過實(shí)例對(duì)象去調(diào)用。

實(shí)例方法的聲明格式如下:

def方法名(self,[形參列表]):

函數(shù)體

類方法不對(duì)特定實(shí)例進(jìn)行操作,在類方法中訪問實(shí)例屬性會(huì)導(dǎo)致錯(cuò)誤。類方法需要用

修飾器”@classmethod”來標(biāo)識(shí)其為類方法。對(duì)于類方法,第一個(gè)參數(shù)必須是類對(duì)象,一

般以“ds”作為第一個(gè)參數(shù),類方法可通過實(shí)例對(duì)象和類對(duì)象去訪問。類方法的聲明格式如

下:

@classmethod

def類方法名(cis,[形參列表]):

函數(shù)體

靜態(tài)方法是與類的對(duì)象實(shí)例無關(guān)的方法。靜態(tài)方法不對(duì)特定實(shí)列進(jìn)行操作,在靜態(tài)方

法中訪問對(duì)象實(shí)例會(huì)導(dǎo)致錯(cuò)誤。靜態(tài)方法需要通過修飾器”@staticmethod”來進(jìn)行修飾,

聲明格式如下:

@staticmethod

def靜態(tài)方法名([形參列表])

函數(shù)體

10.將學(xué)生信息封裝成一個(gè)類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.設(shè)彳一個(gè)類代表長(zhǎng)方體,含有長(zhǎng)、寬、高三個(gè)對(duì)象屬性,含有計(jì)鼠體積的公有方法、計(jì)

算表面積的公有方法。編寫主程序,生成一個(gè)一般長(zhǎng)方體,生成一個(gè)正方體。

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.定義一個(gè)類代表三角形,類中含三條邊、求周長(zhǎng)的函數(shù),求面積的函數(shù)。

#程序無三邊是否滿足三角形限制的判斷(三邊大于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)))

三、實(shí)戰(zhàn)作業(yè)

1.創(chuàng)建一個(gè)Point類表示二維坐標(biāo)平面的點(diǎn),定義實(shí)例屬性x和y表示坐標(biāo)對(duì)值。

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

最新文檔

評(píng)論

0/150

提交評(píng)論