




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Python習(xí)題選編華東師大信息學(xué)院計(jì)算中心一程序結(jié)構(gòu)與算法部分:1. 編寫一個(gè)python程序,輸入兩個(gè)數(shù),比較它們的大小并輸出其中較大者。參考代碼:x = int(input(Please enter first integer: )y = int(input(Please enter second integer: )if (x = y): print(兩數(shù)相同!)elif (x y): print(較大數(shù)為:,x)else: print(較大數(shù)為:,y);2. 寫一個(gè)算法(流程圖和python程序):輸入三個(gè)數(shù),輸出其最大者。參考代碼:a,b,c=3,4,5if a = b: if c
2、 b: print (b是最大的數(shù)) else: print (c是最大的數(shù))else: if c a: print (a是最大的數(shù)) else: print (c是最大的數(shù))3. 使用Python編程,求1100間所有偶數(shù)的和。參考代碼:sum=0for x in range(1,101): if x % 2=0: print(x) sum=sum+xprint(累加和是:,sum)4. 用Python編寫程序,輸入一年份,判斷該年份是否是閏年并輸出結(jié)果。注:凡符合下面兩個(gè)條件之一的年份是閏年。(1) 能被4整除但不能被100整除。(2) 能被400整除。參考代碼:year = int(in
3、put(Please enter the year: )if (year%4=0 and year%100!=0) or (year%400=0): print(year,is a leap year.)else: print(year,is not a leap year.)5. 用Python編程,假設(shè)一年期定期利率為3.25%,計(jì)算一下需要過(guò)多少年,一萬(wàn)元的一年定期存款連本帶息能翻番?參考代碼:cunkuan = 10000 #本金10000元years=0while cunkuan 100: grade = 輸入錯(cuò)誤!elif score = 90: grade = Aelif sco
4、re = 80: grade = Belif score = 70: grade = Celif score = 60: grade = Delif score = 0: grade = Eelse: grade = 輸入錯(cuò)誤!print(grade)7. 猜數(shù)游戲。預(yù)設(shè)一個(gè)09之間的整數(shù),讓用戶猜一猜并輸入所猜的數(shù),如果大于預(yù)設(shè)的數(shù),顯示“太大”;小于預(yù)設(shè)的數(shù),顯示“太小”,如此循環(huán),直至猜中該數(shù),顯示“恭喜!你猜中了!”。參考答案:num=7while True: guess=int(input(請(qǐng)輸入你猜的數(shù)(09):) if guess = num: print(恭喜!你猜中了!) b
5、reak; elif guess num: print(太大) else: print(太小)8. 輸入一個(gè)數(shù),判斷這個(gè)數(shù)是否為素?cái)?shù),并輸出判斷結(jié)果。(所謂素?cái)?shù),是指除了1和該數(shù)本身之外,不能被其它任何整數(shù)整除的數(shù)。下圖為參考流程圖)參考答案:import mathn=int(input(請(qǐng)輸入一個(gè)數(shù):)x=int(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
6、 i = int(math.sqrt(n) and w=0: if n%i = 0: w = 1 break else: i = i+1if w=0: print(n,是素?cái)?shù)!)else:print(n,不是素?cái)?shù)!)或import mathn=int(input(請(qǐng)輸入一個(gè)數(shù):)i=2while i = 60: second = second-60 minute += 1minute+=5if minute = 60: minute = minute-60 hour += 1if hour = 24: hour = 0print(%d:%d:%d%(hour,minute,second)10.
7、 一個(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 a in range(2,m+1): s=a L1= for i in range(1,a): if a%i=0: s-=i L1.append(i) if s=0: print(完數(shù):%d,因子包括:%a,end=) for j in range(1,len(L1): print(%d%L1j,end=,) print(n)11編程,解決猴子吃桃問題。猴子第一天摘下若干個(gè)桃子,當(dāng)
8、即吃了一半,還不過(guò)癮,又多吃了一個(gè)。第二天早上又將剩下的桃子吃掉一半,又多吃了一個(gè)。以后每天早上都吃了前一天剩下的一半零一個(gè)。到第10天早上想吃時(shí),只剩下一個(gè)桃子了。求第一天共摘多少個(gè)桃子。(迭代法)參考答案:day=9x=1while day0: x=(x+1)*2 day-=1print(total=,x)二輸入輸出與文件部分:1. 編寫一個(gè)python程序,輸入兩個(gè)數(shù),輸出兩數(shù)之和。參考代碼:x = int(input(Please enter first integer: )y = int(input(Please enter second integer: )print(The su
9、m is:);print(x+y);2.在當(dāng)前目錄下有一個(gè)文件名為temp.txt的文件,存放著上海從2014年3月10日(周一)到3月16日(周日)間一周的最高和最低氣溫(單位為攝氏度)。其中,第一行為最高氣溫,第二行為最低氣溫。編程,找出這一周中第幾天最熱(按最高氣溫計(jì)算)?最高多少度?這一周中第幾天最冷(按最低氣溫計(jì)算)?最冷多少度?參考答案:flname=temp.txtf=open(flname)ht=(f.readline().strip()L1=list(ht.split(,)lt=(f.readline().strip()L2=list(lt.split(,)f.close()
10、for i in range(len(L1): L1i=int(L1i) L2i=int(L2i)maxVal=L10maxDay=0minVal=L20minDay=0for i in range(1,len(L1): if L1imaxVal: maxVal=L1i maxDay=i if L2i=10: k+=1 else: k=0avg=int(sum/len(L3)print(周平均氣溫為:,avg)if k=5: print(上海這周已入春。)else:print(上海這周未入春。)4當(dāng)前目錄下有一個(gè)文件名為score1.txt的文本文件,存放著某班學(xué)生的計(jì)算機(jī)課成績(jī),共有學(xué)號(hào)、平
11、時(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以上、8089、7079、6069、60分以下各成績(jī)檔的人數(shù)和班級(jí)總平均分(取整數(shù))。參考答案:f=open(score1.txt)a=f.readline()line=(f.readline().strip()f2=open(score2.txt,w)f2.write(學(xué)號(hào) 平均成績(jī)n);L2=0,0,0,0,0count=0sum=0while (len(line) != 0): #print(lin
12、e) L1=line.split() f2.write(L10+ ) f_score=int(int(L11)*0.4+int(L12)*0.6) if 90f_score=80: L21+=1 elif f_score=70: L22+=1 elif f_score=60: L23+=1 else: L24+=1 count+=1 sum+=f_score f2.write(str(f_score)+n) line=(f.readline().strip()f.close()f2.close()avg_score=int(sum/count)print(學(xué)生總?cè)藬?shù)為%d,按總評(píng)成績(jī)計(jì),90以
13、上%d人、8089間%d人、7079間%d人、6069間%d人、60分以下%d人。班級(jí)總平均分為%d分。%(count,L20,L21,L22,L23,L24,avg_score)或f=open(score1.txt)a=f.readlines()del a0L3=for line in a: line=line.strip() L1=line.split() f_score=int(int(L11)*0.4+int(L12)*0.6) L3.append(L10,f_score)f.close()c=0,0,0,0,0count=0sum=0f2=open(score2.txt,w)f2.w
14、rite(學(xué)號(hào) 平均成績(jī)n);for L2 in L3: if 90L21=80: c1+=1 elif L21=70: c2+=1 elif L21=60: c3+=1 else: c4+=1 count+=1 sum+=L21 f2.write(L20+ +str(L21)+n)f2.close()avg_score=int(sum/count)print(學(xué)生總?cè)藬?shù)為%d,按總評(píng)成績(jī)計(jì),90以上%d人、8089間%d人、7079間%d人、6069間%d人、60分以下%d人。班級(jí)總平均分為%d分。%(count,c0,c1,c2,c3,c4,avg_score)5當(dāng)前目錄下有一個(gè)文本文件s
15、ample12.txt,其內(nèi)容包含小寫字母和大寫字母。請(qǐng)將該文件復(fù)制到另一文件sample12_copy.txt,并將原文件中的小寫字母全部轉(zhuǎn)換為大寫字母,其余格式均不變。參考答案:f=open(sample12.txt)L1=f.readlines()f2=open(sample12_copy.txt,w)for line in L1: f2.write(line.upper()f.close()f2.close()6當(dāng)前目錄下有一個(gè)文件名為class_score.txt的文本文件,存放著某班學(xué)生的學(xué)號(hào)、數(shù)學(xué)課成績(jī)(第2列)和語(yǔ)文課成績(jī)(第3列)。請(qǐng)編程完成下列要求:(1)分別求這個(gè)班數(shù)學(xué)和
16、語(yǔ)文的平均分(保留1位小數(shù))并輸出。(2)找出兩門課都不及格(60)的學(xué)生,輸出他們的學(xué)號(hào)和各科成績(jī)。(3)找出兩門課的平均分在90分以上的學(xué)生,輸出他們的學(xué)號(hào)和各科成績(jī)。建議用三個(gè)函數(shù)分別實(shí)現(xiàn)以上要求。參考答案:def output_avg(L): sum1,sum2=0,0 for line in L: L1=line.strip().split() sum1+=int(L11) sum2+=int(L12) count=len(L) avg1=round(sum1/count,1) avg2=round(sum2/count,1) print(這個(gè)班的數(shù)學(xué)平均分為:%4.1f,語(yǔ)文平均分
17、為:%4.1f%(avg1,avg2) def output_notpass(L): print(兩門課均不及格的學(xué)生學(xué)號(hào)及數(shù)學(xué)、語(yǔ)文成績(jī)?yōu)椋? for line in L: L1=line.strip().split() if int(L11)60 and int(L12)=90: print(line)f=open(class_score.txt)L=f.readlines()del L0output_avg(L)output_notpass(L)output_good(L)三 算法分析與設(shè)計(jì)部分1. 編程,從鍵盤接收若干個(gè)整數(shù)(直接輸入回車表示結(jié)束),用冒泡法或選擇法進(jìn)行排序(從小到大)
18、,并將排序結(jié)果在屏幕上輸出。同時(shí)估計(jì)算法的復(fù)雜度。參考答案:選擇排序:def bubble(List): num=len(List) for i in range(0,num-1): for j in range(i+1,num): if ListiListj: Listi,Listj=Listj,Listi return ListL1=num_str=input(請(qǐng)輸入一個(gè)需排序的整數(shù):)while len(num_str) != 0: L1.append(int(num_str) num_str=input(請(qǐng)輸入一個(gè)需排序的整數(shù):)print(排序后結(jié)果:, bubble(L1)或冒泡排
19、序:def bubble(List): for i in range(0,len(List)-1): for j in range(len(List)-1,i,-1): if Listj-1Listj: Listj-1,Listj=Listj,Listj-1 return ListL1=num_str=input(請(qǐng)輸入一個(gè)需排序的整數(shù):)while len(num_str) != 0: L1.append(int(num_str) num_str=input(請(qǐng)輸入一個(gè)需排序的整數(shù):)print(排序后結(jié)果:, bubble(L1)上述兩個(gè)程序算法的時(shí)間復(fù)雜度均為O(n2).2從鍵盤接收一個(gè)
20、正整數(shù)n,輸出對(duì)應(yīng)斐波那契(Fibonacci)數(shù)列的前n項(xiàng)(計(jì)算數(shù)列中某項(xiàng)的值請(qǐng)用遞歸函數(shù)實(shí)現(xiàn))。另外,請(qǐng)指出所用算法的復(fù)雜度。有能力的同學(xué)還可進(jìn)一步改進(jìn)算法的效率。參考答案:def fib(n): if n=0 or n=1: return n else: return fib(n-1) + fib(n-2)n=int(input(n=)for i in range(n+1):print(fib(i),end= )算法時(shí)間復(fù)雜度為O(n*2n).可改進(jìn)為:def fib(n,List): a,b=0,1 List.append(a) while bmaxScore: maxScore=L3
21、i maxIndex=i if L3i=a and si=A and si=0 and si=9: digit+=1 else: other+=1print(字母數(shù):%dn空格數(shù):%dn數(shù)字?jǐn)?shù):%dn其他字符數(shù):%dn%(letters,space,digit,other)或p=input(請(qǐng)輸入一行字符:)a,b,c,d=0,0,0,0for i in p: if(i=A) or (i=a): a+=1 elif (i= ): b+=1 elif(i=0 and i=9): c+=1 else: d+=1print (英文字母的個(gè)數(shù)為:+str(a)print (空格的個(gè)數(shù)為:+str(b)
22、print (數(shù)字的個(gè)數(shù)為:+str(c)print (其他字符的個(gè)數(shù)為:+str(d)或letter,space,digit,other=0,0,0,0s = input(input a string:)for c in s: if c.isalpha(): letter +=1 elif c.isspace(): space +=1 elif c.isdigit(): digit +=1 else: other +=1print(字母數(shù):%dn空格數(shù):%dn數(shù)字?jǐn)?shù):%dn其他字符數(shù):%dn%(letter,space,digit,other)2小王希望用電腦記錄他每天掌握的英文單詞。請(qǐng)?jiān)O(shè)計(jì)
23、程序和相應(yīng)的數(shù)據(jù)結(jié)構(gòu),使小王能記錄新學(xué)的英文單詞和其中文翻譯,并能很方便地根據(jù)英文來(lái)查找中文。(參考:數(shù)據(jù)結(jié)構(gòu)建議用集合。集合添加:dickey=value 判斷key是否在集合中:if key in dic)。參考答案:def add_dic(dic): while True: word=input(請(qǐng)輸入英文單詞(直接按回車結(jié)束):) if len(word)=0: break; meaning=input(請(qǐng)輸入中文翻譯:) dicword=meaning print(該單詞已添加到字典庫(kù)。) returndef search_dic(dic): while True: word=inp
24、ut(請(qǐng)輸入要查詢的英文單詞(直接按回車結(jié)束):) if len(word)=0: break; if word in dic: print(%s的中文翻譯是%s%(word,dicword) else: print(字典庫(kù)中未找到這個(gè)單詞) returnworddic=dict()while True: print(請(qǐng)選擇功能:n1:輸入n2:查找n3:退出) c=input() if c=1: add_dic(worddic) elif c=2: search_dic(worddic) elif c=3: break else: print(輸入有誤!)五異常處理部分:1以下是兩數(shù)相加的程
25、序:x = int(input(x=)y = int(input(y=)print(x+y=,x+y);該程序要求接收兩個(gè)整數(shù),并輸出相加結(jié)果。但如果輸入的不是整數(shù)(如字母、浮點(diǎn)數(shù)等),程序就會(huì)終止執(zhí)行并輸出異常信息。請(qǐng)對(duì)程序進(jìn)行修改,要求輸入非整數(shù)時(shí),給出“輸入內(nèi)容必須為整數(shù)!”的提示,并提示用戶重新輸入,直至輸入正確。參考答案:while True: try: x = int(input(x=) except ValueError: print(輸入內(nèi)容必須為整數(shù)!) else: breakwhile True: try: y = int(input(y=) except ValueErr
26、or: print(輸入內(nèi)容必須為整數(shù)!) else: breakprint(x+y=,x+y)2編程,請(qǐng)輸入一個(gè)文件路徑名或文件名,查看該文件是否存在,如存在,打開文件并在屏幕上輸出該文件內(nèi)容;如不存在,顯示“輸入的文件未找到!”并要求重新輸入;如文件存在但在讀文件過(guò)程中發(fā)生異常,則顯示“文件無(wú)法正常讀出!”并要求重新輸入。(提示:請(qǐng)使用異常處理。“文件未找到”對(duì)應(yīng)的異常名為:FileNotFoundError,其他異常直接用except匹配)參考答案:while True: try: filename=input(請(qǐng)輸入文件路徑名或文件名:) f=open(filename.strip() print(f.read() except FileNotFoundError: print(輸入的文件未找到!) except: print(文件無(wú)法正常讀出!) else: breakf.close()五 函數(shù)部分:1. 寫一判素?cái)?shù)的函數(shù),在主函數(shù)中輸入一個(gè)整數(shù),調(diào)用該函數(shù)進(jìn)行判斷并輸出結(jié)果。參考答案:def shushu(n): import mathi,w=2,0if n=1:w=1 while i u
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 新能源技術(shù)研發(fā)及推廣合作框架協(xié)議
- 廢舊物品處理責(zé)任免除合同
- 半導(dǎo)體設(shè)備供應(yīng)協(xié)議
- 軟件優(yōu)化與維護(hù)技術(shù)服務(wù)協(xié)議
- 農(nóng)村畜牧防疫及養(yǎng)殖責(zé)任協(xié)議
- 連鎖經(jīng)營(yíng)加盟合同
- 公路短途運(yùn)輸合同
- 房屋租賃與物業(yè)管理服務(wù)協(xié)議要點(diǎn)
- 共享服務(wù)中心服務(wù)合同
- 房地產(chǎn)招商合同協(xié)議書
- 2025年共青科技職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)完整版
- 2025年上半年潛江市城市建設(shè)發(fā)展集團(tuán)招聘工作人員【52人】易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 統(tǒng)編版語(yǔ)文二年級(jí)下冊(cè)15古詩(shī)二首 《曉出凈慈寺送林子方》公開課一等獎(jiǎng)創(chuàng)新教學(xué)設(shè)計(jì)
- 旅游電子商務(wù)(第2版) 課件全套 周春林 項(xiàng)目1-8 電子商務(wù)概述-旅游電子商務(wù)數(shù)據(jù)挖掘
- 2025年安徽警官職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)帶答案
- 廣東廣東省錢幣學(xué)會(huì)招聘筆試歷年參考題庫(kù)附帶答案詳解
- 2025年福建省中職《英語(yǔ)》學(xué)業(yè)水平考試核心考點(diǎn)試題庫(kù)500題(重點(diǎn))
- 2024年江西應(yīng)用工程職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)標(biāo)準(zhǔn)卷
- 人教鄂教版小學(xué)科學(xué)三年級(jí)下冊(cè)全冊(cè)教案教學(xué)設(shè)計(jì)
- 粉塵防爆安全知識(shí)最全課件
- 公辦園招聘副園長(zhǎng)面試題
評(píng)論
0/150
提交評(píng)論