《Python程序設(shè)計(jì)》題庫(kù)_第1頁(yè)
《Python程序設(shè)計(jì)》題庫(kù)_第2頁(yè)
《Python程序設(shè)計(jì)》題庫(kù)_第3頁(yè)
《Python程序設(shè)計(jì)》題庫(kù)_第4頁(yè)
《Python程序設(shè)計(jì)》題庫(kù)_第5頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、2.寫一個(gè)算法(流程圖和1'ntb大曲GOPython習(xí)題選編華東師大信息學(xué)院計(jì)算中心一. 程序結(jié)構(gòu)與算法部分:1. 編寫一個(gè)python程序,輸入兩個(gè)數(shù),比較它們的大小并輸出其中較大者。 參考代碼:x = int(input("Please enter first integer: ”)y = int(input("Please enter secondinteger:")if (x =y):print(”兩數(shù)相同! ”)elif (x >y):print(-較大數(shù)為:”,x)else:print(R較大數(shù)為:”,y);python程序):輸入三個(gè)

2、數(shù),輸出其最大者。 參考代碼:a,b,c=3,4,5if a<=b:if c<b:print ("b是最大的數(shù)”)else:print ("c是最大的數(shù)”)else:if c<a:print (”a是最大的數(shù)”)else:print (Mc是最大的數(shù)”)3. 使用Python編程,求1-100間所有偶數(shù)的和。 參考代碼:sum=0for x in range(1,101):ifx%2=0: print(x) sum=sum+x print(” 累加和是:",sum)4. 用Python編寫程序,輸入一年份,判斷該年份是否是閏年并輸出結(jié)果。 注:凡

3、符合下面兩個(gè)條件之一的年份是閏年。(1) 能被4整除但不能被100整除。(2) 能被400整除。參考代碼:year = int(input("Please enter the year: ”)if (year%4=0and year%100!=0)or (year%400=0):加個(gè)括號(hào)即可 print(year,"is a leap year.")else:print(year,Mis not a leap year.")5. 用Python編程,假設(shè)一年期定期利率為3.25%,計(jì)算一下需要過(guò)多少年,一 萬(wàn)元的一年定期存款連本帶息能翻番?參考代碼:cu

4、nkuan = 10000 #本金 10000 元years=0while cunkuan<20000:years+=1cunkuan=cunkuan*(1 +0.0325)print(str(years)+"年以后,存款會(huì)翻番”)6. 從鍵盤接收一百分制成績(jī)(0100),要求輸出其對(duì)應(yīng)的成績(jī)等級(jí) A£其中, 90分以上為7V, 80-89分為B, 70-79分為C, 60-69分為D, 60分以下為'E'。 參考答案:score=int(input('請(qǐng)輸入成績(jī)(0100):') if score > 100:grade =w輸

5、入錯(cuò)誤!-因?yàn)閑lif就已經(jīng)是除了這個(gè)之外的了7. 猜數(shù)游戲。預(yù)設(shè)一個(gè)09之間的整數(shù),讓用戶猜一猜并輸入所猜的數(shù),如果 大于預(yù)設(shè)的數(shù),顯示“太大”;小于預(yù)設(shè)的數(shù),顯示“太小”,如此循環(huán),直至猜 中該數(shù),顯示“恭喜!你猜中了! ”。參考答案:num=7while True:guess=int(input(*i#輸入你猜的數(shù)(09): *) if guess=num:print(”恭喜!你猜中了! ”)break;elif guess >num:print(” 太大”)else:print(-太小”)8. 輸入一個(gè)數(shù),判斷這個(gè)數(shù)是否為素?cái)?shù),并輸出判斷結(jié)果。(所謂素?cái)?shù),是指除了 1和該數(shù)本身之

6、外,不能被其它任何整數(shù)整除的數(shù)。下圖為參考流程圖)參考答案:import mathn=int(input('* 請(qǐng)輸入一個(gè)數(shù):")x=in t(math.sqrt(n) i,w=2,0for i in range(2,x+1):if n%i=0:W=1if w=1:print(n,”不是素?cái)?shù)。”)else:print(n,"是素?cái)?shù)。”)或import mathn=int(input(* 請(qǐng)輸入一個(gè)數(shù):') i,w=2,0while i <=int(math.sqrt(n) andw=0: if n%i =0:w = 1breakelse:i = i+1

7、if w=0:print(n,” 是素?cái)?shù)! ”)else:print(n,”不是素?cái)?shù)! ”)或import mathn=int(input(* 請(qǐng)輸入一個(gè)數(shù):')i=2while i <= int(math.sqrt(n) if n%i =0:print(n;不是素?cái)?shù)! ”) breakelse:i=i+1else:print(n,” 是素?cái)?shù)! ”)9. 一個(gè)數(shù)如果恰好等于它的因子之和,這個(gè)數(shù)就稱為“完數(shù)”。例如,6的因子 為1、2、3,而6=1+2+3,因此6是完數(shù)。編程,找出1000之內(nèi)的所有完數(shù),并 輸出該完數(shù)及對(duì)應(yīng)的因子。(枚舉法)參考答案:m=1000for ain r

8、ange(2,m+1):s=aL1=for i in range(1,a):if a%i=0:H.append(i)if s=0:print(” 完數(shù):%d,因子包括:”a,end=”)forj in range(1,len(L1): 為啥不是 0 開(kāi)頭的print(” d”L1 j,end,“)printCn")10. 編程,解決猴子吃桃問(wèn)題。猴子第一天摘下若干個(gè)桃子,當(dāng)即吃了一半,還不過(guò)癮,又多吃了一個(gè)。第二天早上又將 剩下的桃子吃掉一半,又多吃了一個(gè)。以后每天早上都吃了前一天剩下的一半零一個(gè)。到 第10天早上想吃時(shí),只剩下一個(gè)桃子了。求第一天共摘多少個(gè)桃子。(迭代法)參考答案:

9、day=9x=1while day>0:x=(x+1)*2day-=1print("total=",x)二. 文件部分:1. 在當(dāng)前目錄下有一個(gè)文件名為temp.txt的文件,存放著上海從2014年3月 10 0 (周一)到3月16日(周日)間一周的最高和最低氣溫(單位為攝氏度)。 其中,第一行為最高氣溫,第二行為最低氣溫。編程,找出這一周中第幾天最 熱(按最高氣溫計(jì)算)?最高多少度?這一周中第幾天最冷(按最低氣溫計(jì)算)? 最冷多少度?參考答案:flname=Mtemp.txrf=open(fl name)ht=(f.readline().strip()暫且先只讀一行

10、L1 =list(ht.splitC;)lt=(f.readline().strip()此處再讀第二行L2=list(lt.splitC;)f.close()for i in range(len(L1):_ L1i=int(L1i)L2i=int(L2i)maxVal=L1 0可用 max.(L1)maxDay=0 minVal=L20 min Day=0for i in range(1,len(L1):if L1 i>maxVal:maxVal=L1imaxDay=iif L2i<minVal:minVal=L2imin Day=iprint(” 這周第"+str(ma

11、xDay+1)+夫最熱,最高"+str(maxVal)+攝氏度”) print(” 這周第 ”+str(minDay+1)+”天最冷,最低"+str(minVal)+"攝氏度”)2. 在上題的基礎(chǔ)上,求出全周的平均氣溫(這一周各天平均溫度的平均值,取整數(shù))。假設(shè)在氣象意義上,入春標(biāo)準(zhǔn)是連莖飛天日均氣溫超過(guò)10C,根據(jù)這一 周的氣象數(shù)據(jù)是否能判斷上海已經(jīng)入春? 參考答案:flname=Htemp.txtMf=ope n(fln ame) ht=(f.readline().strip() L1=list(ht.splitC;) lt=(f.readline().str

12、ip() L2=list(lt.splitf;)Lclosed 不要忘了! !L3=for i in range(len(L1):L1i=int(L1i)L2i=int(L2i)IL3.append(int(L1i+L2i畫鳳炸天!!sum=0k=0for i in range(len(L3): sum=sum+L3i if L3i>=10:k+=1else:k=0這還要寫嗎? ? ?avg=i nt(sum/len(L3)print(”周平均氣溫為:”,avg) if k>=5:print(”上海這周已入春。M) else:print(”上海這周未入春。”)3. 當(dāng)前目錄下有一個(gè)

13、文件名為 score1.txt的文本文件,存放著某班學(xué)生的計(jì)算機(jī)課成績(jī),共有學(xué)號(hào)、平時(shí)成績(jī)、期末成績(jī)?nèi)?。?qǐng)根據(jù)平時(shí)成績(jī)占40%期末成績(jī)占60啲比例計(jì)算總評(píng)成績(jī)(取整數(shù)),并分學(xué)號(hào)、總評(píng)成績(jī)兩列寫入另 一文件score2.txt 。同時(shí)在屏幕上輸出學(xué)生總?cè)藬?shù),按總評(píng)成績(jī)計(jì)90以上、80 89、7079、6069、60分以下各成績(jī)檔的人數(shù) 和班級(jí)總平均分(取整數(shù))。 參考答案:f=open("score1 .txt")a=f.readli ne()jine=(freadline()stri|f2=open(”score2txfTwJf2.write(-學(xué)號(hào)平均成績(jī)n”);L2

14、=0,0,0,0,0count=0sum=O while (len(line) != 0):#print(li ne)L1=line.split()f2.write(LU0Wf_score=int(int(L1 1 )*0.4+int(L1 2)*0.6) if 90<f_score<=100:L20+=1elif f_score>=80:L21+=1elif f_score>=70:L22+=1elif f_score>=60:L2 +=1else:L24+=1coun t+=1sum+=f_scoref2.write(str(f score)+”rT)?Iin

15、e=(f.readline()strip()f.close()f2.close()avg_score=int(sum/co unt)print("學(xué)生總?cè)藬?shù)為d,按總評(píng)成績(jī)計(jì),90以上加人、8089間<1人、7079間(1人、 6069間如人、60分以下如人。班級(jí)總平均分為如分。 ”(count,L20,L2 ,L22,L2 ,L24,avg_score)f=open(Rscore1 .txt") a=f.readli nes() del a0L3=for line in a:lin e=line.strip()L1=line.split()Lscore=int(in

16、t(L11 )*0.4+int(L1 2)P6)L3.append(L1 0 .fscore)f.close()c=0,0,0,0,0count=0sum=0f2=open(wscore2.txr/w*)f2.write("學(xué)號(hào) 平均成績(jī)r(jià)f);for L2in L3:if 90<L21<=100:c0+=1elif L21>=80:c1+=1elif L21>=70:c2+=1elif L21>=60:c +=1else:c4+=1count+=1sum+=L21f2.write(L20+” "+str(L21 )+“")f2.cl

17、ose()avg_score=i nt(sum/count)print("學(xué)生總?cè)藬?shù)為d,按總評(píng)成績(jī)計(jì),90以上如 人、8089間(1人、7079間(1人、 6069間d人、60分以下d人。班級(jí)總平均分為d分。 H%(count,c0,c1 ,c2,c 3tc4,avg_score)4. 甘前目錄下有一個(gè)文本文件sample12.txt其內(nèi)容包含小寫字母和大寫字母。 請(qǐng)將該文件復(fù)制到另一文件sample12_copy.txt ,并將原文件中的小寫字母全部 轉(zhuǎn)換為大寫字母,其余格式均不變。參考答案:f=open(',sample12.txtM)L1=f.readlines()

18、f2=open(',sample12_copy.txt1','w') for line in L1:f2.write(li ne.upper。)f.close()f2.close()5. 當(dāng)前目錄下有一個(gè)文件名為class_score.txt 的文本文件,存放著某班學(xué)生的學(xué)號(hào)、數(shù)學(xué)課成績(jī)(第2列)和語(yǔ)文課成績(jī)(第3列)。請(qǐng)編程完成下列要求:(1) 分別求這個(gè)班數(shù)學(xué)和語(yǔ)文的平均分(保留 1位小數(shù))并輸出。(2) 找出兩門課都不及格(<60)的學(xué)生,輸出他們的學(xué)號(hào)和各科成績(jī)。(3) 找出兩門課的平均分在90分以上的學(xué)生,輸出他們的學(xué)號(hào)和各科成績(jī)。 建議用三個(gè)函

19、數(shù)分別實(shí)現(xiàn)以上要求。參考答案:def output_avg(L):sum1,sum2=0,0for line in L:L1=line.strip().split() ?sum1+=int(L11)sum2+=int(L12)coun t=len(L)avg1=round(sum1/count,1)avg2=r oun d(sum2/c oun t,1)print(”這個(gè)班的數(shù)學(xué)平均分為:%4.1f,語(yǔ)文平均分為:%4.1f%(avg1,avg2)def output_ no tpass(L):print(”兩門課均不及格的學(xué)生學(xué)號(hào)及數(shù)學(xué)、語(yǔ)文成績(jī)?yōu)椋骸?for line in L:L1=li

20、ne.strip().split()if int(L11)<60 andint(L12)<60:print(li ne)def output_good(L):print(”兩門課平均分在90分以上的學(xué)生學(xué)號(hào)及數(shù)學(xué)、語(yǔ)文成績(jī)?yōu)椋骸? for line in L:L1=line.strip().split()f_score=round(int(L1 1)+int(L1 2)/2)if f_score>=90:print(line)f=open(Mclass_score.txtn)L=f.readli nes()del L0output_avg(L)output_ no tpass

21、(L)output_good(L)三. 算法分析與設(shè)計(jì)部分1.編程,從鍵盤接收若干個(gè)整數(shù)(直接輸入回車表示結(jié)束),用冒泡法或選擇法進(jìn)行排序(從小到大),并將排序結(jié)果在屏幕上輸出。 參考答案:選擇排序:def bubble(List):num=len(List)for i in range(0,num-1):forj in range(i+1,num):#對(duì)應(yīng)列表中的位置if Listi>Listj:Listi,Listj=Listj,Listireturn ListL1=num_str=input('請(qǐng)輸入一個(gè)需排序的整數(shù):') while len(num_str) !=

22、 0:L1 .append(i nt(nu m_str) num_str=input(*請(qǐng)輸入一個(gè)需排序的整數(shù):) print('排序后結(jié)果:bubble(L1) 或冒泡排序:def bubble(List):for i in range(0,len(List)-1):forj in range(len(List)-1 ,i,-1):if ListO-1>Listj:ListO-1,ListO=Listj,ListO-1 return ListL1= num_str=inputC請(qǐng)輸入一個(gè)需排序的整數(shù):') while len(num_str) != 0:L1 .appe

23、 nd(int(num_str)n um_str=input(*請(qǐng)輸入一個(gè)需排序的整數(shù):) print('排浄后結(jié)果:bubble(L1) p.當(dāng)前目錄下有一個(gè)文件名為 score2.txt的文本文件,存放著某班學(xué)生的計(jì)薛機(jī)課成績(jī),共有學(xué)號(hào)、總評(píng)成績(jī)兩列。請(qǐng)查找最高分和最低分的學(xué)生,并在 屏幕上顯示其學(xué)號(hào)和成績(jī)。 參考答案: f=open(Rscore2.txC)a=f.readli nes()del a(0L2=L3=nfor line in a:lin e=line.strip()L1=line.split()L2.appe nd(L10)L3.append(L11)f.close

24、()maxScore=L30maxlndex=OminScore=L30minlndex=Ofor i in range(1 Jen(L3):if L3i>maxScore:maxScore=L3imaxlndex=iif L3i<minScore:minScore=L3iminlndex=iprintf 最高分為:"+str(maxScore)+w 分,該學(xué)生學(xué)號(hào)為:w+str(l_2maxlndex)print("最低分為:,+str(minScore)+,'分,該學(xué)生學(xué)號(hào)為:"+str(l_2minIndex)3.編程,輸入一行字符,分別

25、統(tǒng)計(jì)出其中英文字母、空格、數(shù)字和其他字符的 個(gè)數(shù)。參考答案:letters,space,digit,other=0,0,0,0s=input(M請(qǐng)輸入一行字符:”)for i in range(len(s):if (si>=,a, and si<=,z,) or (si>='A' and si<=Z):letters+=1elif si=*space+=1elif si>=,0, and si<=,9,:digit+=1else:other+=1prinf 字母數(shù):dn空格數(shù):%dn數(shù)字?jǐn)?shù):dn其他字符數(shù):%dnM%(letters,spac

26、e,digit,other)或p=i叩ut('請(qǐng)輸入一行字符:')a,b,c,d=0,0,0,0for i in p:if(i<='Z' and i>='A') or (i<='z'and i>='a'):a+=1elif (“'):b+=1elif(i>=,0, andiv9'):c+=1else:d+=1print ('英文字母的個(gè)數(shù)為:+str(a)print ('空格的個(gè)數(shù)為:+str(b)print (*數(shù)字的個(gè)數(shù)為:+str(c)print

27、(*其他字符的個(gè)數(shù)為:+str(d)或letter,space,digit,other=0,0,0,0s = inputfinput astring:)for c in s:if c.isalpha():letter +=1elif c.isspace():space+=1elif c.isdigit():digit +=1else:other +=1print(”字母數(shù):%dn空格數(shù):%dn數(shù)字?jǐn)?shù):%dn其他字符 數(shù):%dnM%(letter,space,digit,other)四. 函數(shù)部分:1.寫一判素?cái)?shù)的函數(shù),在主函數(shù)中輸入一個(gè)整數(shù),調(diào)用該函數(shù)進(jìn)行判斷并輸出 結(jié)果。參考答案:def s

28、hushu(n):import mathi,w=2,0if n<=1:W=1while i <= int(math.sqrt(n) and w=0:if n%i = 0:w = 1breakelse:i = i+1return w n=int(inputfn=)if shushu(n)=0:print(nfM 是素?cái)?shù) I ")else:print(n,M不是素?cái)?shù)!")2. 當(dāng)前目錄下有一個(gè)文件名為score3.txt的文本文件,存放著某班學(xué)生的學(xué)號(hào)和其兩門專業(yè)課的成績(jī)。分別用函數(shù)實(shí)現(xiàn)以下功能:(1) 定義函數(shù)functionl,計(jì)算每個(gè)學(xué)生的平均分(取整數(shù)),并

29、將所有學(xué)生的學(xué)號(hào) 和平均分在屏幕上輸出。(函數(shù)參數(shù)為要讀取文件的文件名)def functionl(flname):#函數(shù)代碼functionl (Mc:testscore3.txr)參考答案:def function*!(finame):f=ope n(fln ame)a=f.readli nes()del a0L3=for line in a:line=line.strip()L1=line.split()avg_score=int(int(L1 1 )+int(L1 2)/2)L3.append(L1 0,avg_score)f.close()print("學(xué)號(hào)平均分”)for L2in L3:print(L20+w ,+str(L21)(2) 定義函數(shù)calAvg(),計(jì)算某一門課程的平均分(函數(shù)參數(shù)為某門課成績(jī)對(duì)應(yīng)的 列表名,返回值為該門課的平

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論