版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度線上線下店鋪聯(lián)合租賃合同-跨界合作開發(fā)協(xié)議4篇
- 二零二五年度電梯安裝與節(jié)能環(huán)保工程總承包協(xié)議4篇
- 二零二五年度購物平臺(tái)廣告推廣合作協(xié)議書模板
- 二零二五年度跨境貿(mào)易結(jié)算資金轉(zhuǎn)入監(jiān)管協(xié)議
- 二零二五年度車輛事故損害賠償和解協(xié)議
- 二零二五年度銷售人員勞動(dòng)協(xié)議書(含企業(yè)文化建設(shè)及團(tuán)隊(duì)凝聚力)
- 二零二五年度青少年成長(zhǎng)基金捐贈(zèng)贈(zèng)與協(xié)議書
- 二零二四年度銷售團(tuán)隊(duì)年度培訓(xùn)計(jì)劃協(xié)議3篇
- 二零二五年度外國(guó)專家企業(yè)數(shù)字化轉(zhuǎn)型合作協(xié)議
- 二零二五年度工地施工安全文明施工協(xié)議3篇
- 中央2025年國(guó)務(wù)院發(fā)展研究中心有關(guān)直屬事業(yè)單位招聘19人筆試歷年參考題庫附帶答案詳解
- 2024年09月北京中信銀行北京分行社會(huì)招考(917)筆試歷年參考題庫附帶答案詳解
- 外呼合作協(xié)議
- 小學(xué)二年級(jí)100以內(nèi)進(jìn)退位加減法800道題
- 保險(xiǎn)公司2025年工作總結(jié)與2025年工作計(jì)劃
- 2024年公司領(lǐng)導(dǎo)在新年動(dòng)員會(huì)上的講話樣本(3篇)
- 眼科護(hù)理進(jìn)修專題匯報(bào)
- 介入手術(shù)室感染控制管理
- 2024北京初三(上)期末英語匯編:材料作文
- 2024年大型風(fēng)力發(fā)電項(xiàng)目EPC總承包合同
- 禮儀服務(wù)合同三篇
評(píng)論
0/150
提交評(píng)論