華東師范大學(xué)Python習(xí)題選編_第1頁
華東師范大學(xué)Python習(xí)題選編_第2頁
華東師范大學(xué)Python習(xí)題選編_第3頁
華東師范大學(xué)Python習(xí)題選編_第4頁
華東師范大學(xué)Python習(xí)題選編_第5頁
已閱讀5頁,還剩11頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

Python習(xí)題選編 華東師大信息學(xué)院計算中心一.程序結(jié)構(gòu)與算法部分:1.編寫一個python程序,輸入兩個數(shù),比較它們的大小并輸出其中較大者。參考代碼:x=int(input("Pleaseenterfirstinteger:"))y=int(input("Pleaseentersecondinteger:"))if(x==y):print("兩數(shù)相同!")elif(x>y):print("較大數(shù)為:",x)else:print("較大數(shù)為:",y);2.寫一個算法(流程圖和python程序):輸入三個數(shù),輸出其最大者。參考代碼:a,b,c=3,4,5ifa<=b:ifc<b:print("b是最大的數(shù)")else:print("c是最大的數(shù)")else:ifc<a:print("a是最大的數(shù)")else:print("c是最大的數(shù)")3.使用Python編程,求1~100間所有偶數(shù)的和。參考代碼:sum=0forxinrange(1,101):ifx%2==0:print(x)sum=sum+xprint("累加和是:",sum)4.用Python編寫程序,輸入一年份,判斷該年份是否是閏年并輸出結(jié)果。注:凡符合下面兩個條件之一的年份是閏年。能被4整除但不能被100整除。能被400整除。參考代碼:year=int(input("Pleaseentertheyear:"))if((year%4==0andyear%100!=0)or(year%400==0)):加個括號即可print(year,"isaleapyear.")else:print(year,"isnotaleapyear.")5.用Python編程,假設(shè)一年期定期利率為3.25%,計算一下需要過多少年,一萬元的一年定期存款連本帶息能翻番?參考代碼:cunkuan=10000#本金10000元years=0whilecunkuan<20000:years+=1cunkuan=cunkuan*(1+0.0325)print(str(years)+"年以后,存款會翻番")6.從鍵盤接收一百分制成績(0~100),要求輸出其對應(yīng)的成績等級A~E。其中,90分以上為'A',80~89分為'B',70~79分為'C',60~69分為'D',60分以下為'E'。參考答案:score=int(input('請輸入成績(0~100):'))ifscore>100:grade="輸入錯誤!"elifscore>=90:grade='A'elifscore>=80:grade='B'elifscore>=70:無需寫小于什么什么的因為elif就已經(jīng)是除了這個之外的了grade='C'elifscore>=60:grade='D'elifscore>=0:grade='E'else:grade="輸入錯誤!"print(grade)7.猜數(shù)游戲。預(yù)設(shè)一個0~9之間的整數(shù),讓用戶猜一猜并輸入所猜的數(shù),如果大于預(yù)設(shè)的數(shù),顯示“太大”;小于預(yù)設(shè)的數(shù),顯示“太小”,如此循環(huán),直至猜中該數(shù),顯示“恭喜!你猜中了!”。參考答案:num=7maxVal=L1[i]maxDay=iifL2[i]<minVal:minVal=L2[i]minDay=iprint("這周第"+str(maxDay+1)+"天最熱,最高"+str(maxVal)+"攝氏度")print("這周第"+str(minDay+1)+"天最冷,最低"+str(minVal)+"攝氏度")2.在上題的基礎(chǔ)上,求出全周的平均氣溫(這一周各天平均溫度的平均值,取整數(shù))。假設(shè)在氣象意義上,入春標(biāo)準(zhǔn)是連續(xù)5天日均氣溫超過10℃,根據(jù)這一周的氣象數(shù)據(jù)是否能判斷上海已經(jīng)入春?參考答案:flname="temp.txt"f=open(flname)ht=(f.readline()).strip()L1=list(ht.split(','))lt=(f.readline()).strip()L2=list(lt.split(','))f.close()不要忘了?。。。。。。。?!L3=[]foriinrange(len(L1)):L1[i]=int(L1[i])L2[i]=int(L2[i])L3.append(int((L1[i]+L2[i])/2))屌炸天?。。?!sum=0k=0foriinrange(len(L3)):sum=sum+L3[i]ifL3[i]>=10:k+=1else:k=0這還要寫嗎???avg=int(sum/len(L3))print("周平均氣溫為:",avg)ifk>=5:print("上海這周已入春。")else:print("上海這周未入春。")3.當(dāng)前目錄下有一個文件名為score1.txt的文本文件,存放著某班學(xué)生的計算機課成績,共有學(xué)號、平時成績、期末成績?nèi)?。請根?jù)平時成績占40%,期末成績占60%的比例計算總評成績(取整數(shù)),并分學(xué)號、總評成績兩列寫入另一文件score2.txt。同時在屏幕上輸出學(xué)生總?cè)藬?shù),按總評成績計90以上、80~89、70~79、60~69、60分以下各成績檔的人數(shù)和班級總平均分(取整數(shù))。參考答案:f=open("score1.txt")a=f.readline()line=(f.readline()).strip()f2=open("score2.txt",'w')f2.write("學(xué)號平均成績\n");L2=[0,0,0,0,0]count=0sum=0while(len(line)!=0):#print(line)L1=line.split()f2.write(L1[0]+"")f_score=int(int(L1[1])*0.4+int(L1[2])*0.6)if90<f_score<=100:L2[0]+=1eliff_score>=80:L2[1]+=1eliff_score>=70:L2[2]+=1eliff_score>=60:L2[3]+=1else:L2[4]+=1count+=1sum+=f_scoref2.write(str(f_score)+"\n")??????????????line=(f.readline()).strip()f.close()f2.close()avg_score=int(sum/count)print("學(xué)生總?cè)藬?shù)為%d,按總評成績計,90以上%d人、80~89間%d人、70~79間%d人、60~69間%d人、60分以下%d人。班級總平均分為%d分。"%(count,L2[0],L2[1],L2[2],L2[3],L2[4],avg_score))或f=open("score1.txt")a=f.readlines()dela[0]L3=[]forlineina:line=line.strip()L1=line.split()f_score=int(int(L1[1])*0.4+int(L1[2])*0.6)L3.append([L1[0],f_score])f.close()c=[0,0,0,0,0]count=0sum=0f2=open("score2.txt",'w')f2.write("學(xué)號平均成績\n");forL2inL3:if90<L2[1]<=100:c[0]+=1elifL2[1]>=80:c[1]+=1elifL2[1]>=70:c[2]+=1elifL2[1]>=60:c[3]+=1else:c[4]+=1count+=1sum+=L2[1]f2.write(L2[0]+""+str(L2[1])+"\n")f2.close()avg_score=int(sum/count)print("學(xué)生總?cè)藬?shù)為%d,按總評成績計,90以上%d人、80~89間%d人、70~79間%d人、60~69間%d人、60分以下%d人。班級總平均分為%d分。"%(count,c[0],c[1],c[2],c[3],c[4],avg_score))4.當(dāng)前目錄下有一個文本文件sample12.txt,其內(nèi)容包含小寫字母和大寫字母。請將該文件復(fù)制到另一文件sample12_copy.txt,并將原文件中的小寫字母全部轉(zhuǎn)換為大寫字母,其余格式均不變。參考答案:f=open("sample12.txt")L1=f.readlines()f2=open("sample12_copy.txt",'w')forlineinL1:f2.write(line.upper())f.close()f2.close()5.當(dāng)前目錄下有一個文件名為class_score.txt的文本文件,存放著某班學(xué)生的學(xué)號、數(shù)學(xué)課成績(第2列)和語文課成績(第3列)。請編程完成下列要求:(1)分別求這個班數(shù)學(xué)和語文的平均分(保留1位小數(shù))并輸出。(2)找出兩門課都不及格(<60)的學(xué)生,輸出他們的學(xué)號和各科成績。(3)找出兩門課的平均分在90分以上的學(xué)生,輸出他們的學(xué)號和各科成績。建議用三個函數(shù)分別實現(xiàn)以上要求。參考答案:defoutput_avg(L):sum1,sum2=0,0forlineinL:L1=line.strip().split()????????sum1+=int(L1[1])sum2+=int(L1[2])count=len(L)avg1=round(sum1/count,1)avg2=round(sum2/count,1)print("這個班的數(shù)學(xué)平均分為:%4.1f,語文平均分為:%4.1f"%(avg1,avg2))defoutput_notpass(L):print("兩門課均不及格的學(xué)生學(xué)號及數(shù)學(xué)、語文成績?yōu)椋?)forlineinL:L1=line.strip().split()ifint(L1[1])<60andint(L1[2])<60:print(line)defoutput_good(L):print("兩門課平均分在90分以上的學(xué)生學(xué)號及數(shù)學(xué)、語文成績?yōu)椋?)forlineinL:L1=line.strip().split()f_score=round((int(L1[1])+int(L1[2]))/2)iff_score>=90:print(line)f=open("class_score.txt")L=f.readlines()delL[0]output_avg(L)output_notpass(L)output_good(L)算法分析與設(shè)計部分編程,從鍵盤接收若干個整數(shù)(直接輸入回車表示結(jié)束),用冒泡法或選擇法進行排序(從小到大),并將排序結(jié)果在屏幕上輸出。參考答案:選擇排序:defbubble(List):num=len(List)foriinrange(0,num-1):forjinrange(i+1,num):#對應(yīng)列表中的位置ifList[i]>List[j]:List[i],List[j]=List[j],List[i]returnListL1=[]num_str=input('請輸入一個需排序的整數(shù):')whilelen(num_str)!=0:L1.append(int(num_str))num_str=input('請輸入一個需排序的整數(shù):')print('排序后結(jié)果:',bubble(L1))或冒泡排序:defbubble(List):foriinrange(0,len(List)-1):forjinrange(len(List)-1,i,-1):ifList[j-1]>List[j]:List[j-1],List[j]=List[j],List[j-1]returnListL1=[]num_str=input('請輸入一個需排序的整數(shù):')whilelen(num_str)!=0:L1.append(int(num_str))num_str=input('請輸入一個需排序的整數(shù):')print('排序后結(jié)果:',bubble(L1))2.當(dāng)前目錄下有一個文件名為score2.txt的文本文件,存放著某班學(xué)生的計算機課成績,共有學(xué)號、總評成績兩列。請查找最高分和最低分的學(xué)生,并在屏幕上顯示其學(xué)號和成績。參考答案:f=open("score2.txt")a=f.readlines()dela[0]L2=[]L3=[]forlineina:line=line.strip()L1=line.split()L2.append(L1[0])L3.append(L1[1])f.close()maxScore=L3[0]maxIndex=0minScore=L3[0]minIndex=0foriinrange(1,len(L3)):ifL3[i]>maxScore:maxScore=L3[i]maxIndex=iifL3[i]<minScore:minScore=L3[i]minIndex=iprint("最高分為:"+str(maxScore)+"分,該學(xué)生學(xué)號為:"+str(L2[maxIndex]))print("最低分為:"+str(minScore)+"分,該學(xué)生學(xué)號為:"+str(L2[minIndex]))3.編程,輸入一行字符,分別統(tǒng)計出其中英文字母、空格、數(shù)字和其他字符的個數(shù)。參考答案:letters,space,digit,other=0,0,0,0s=input("請輸入一行字符:")foriinrange(len(s)):if(s[i]>='a'ands[i]<='z')or(s[i]>='A'ands[i]<='Z'):letters+=1elifs[i]=='':space+=1elifs[i]>='0'ands[i]<='9':digit+=1else:other+=1print("字母數(shù):%d\n空格數(shù):%d\n數(shù)字?jǐn)?shù):%d\n其他字符數(shù):%d\n"%(letters,space,digit,other))或p=input('請輸入一行字符:')a,b,c,d=0,0,0,0foriinp:if((i<='Z'andi>='A')or(i<='z'andi>='a')):a+=1elif(i==''):b+=1elif(i>='0'andi<='9'):c+=1else:d+=1print('英文字母的個數(shù)為:'+str(a))print('空格的個數(shù)為:'+str(b))print('數(shù)字的個數(shù)為:'+str(c))print('其他字符的個數(shù)為:'+str(d))或letter,space,digit,other=0,0,0,0s=input('inputastring:')forcins:ifc.isalpha():letter+=1elifc.isspace():space+=1elifc.isdigit():digit+=1else:other+=1print("字母數(shù):%d\n空格數(shù):%d\n數(shù)字?jǐn)?shù):%d\n其他字符數(shù):%d\n"%(letter,space,digit,other))函數(shù)部分:寫一判素數(shù)的函數(shù),在主函數(shù)中輸入一個整數(shù),調(diào)用該函數(shù)進行判斷并輸出結(jié)果。參考答案:defshushu(n):importmathi,w=2,0ifn<=1: w=1whilei<=int(math.sqrt(n))andw==0:ifn%i==0:w=1breakelse:i=i+1returnwn=int(input('n='))ifshushu(n)==0:print(n,"是素數(shù)!")else:print(n,"不是素數(shù)!")當(dāng)前目錄下有一個文件名為score3.txt的文本文件,存放著某班學(xué)生的學(xué)號和其兩門專業(yè)課的成績。分別用函數(shù)實現(xiàn)以下功能:定義函數(shù)function1,計算每個學(xué)生的平均分(取整數(shù)),并將所有學(xué)生的學(xué)號和平均分在屏幕上輸出。(函數(shù)參數(shù)為要讀取文件的文件名)deffunction1(flname): #函數(shù)代碼function1("c:\\test\\score3.txt")參考答案:deffunction1(flname):f=open(flname)a=f.readlines()dela[0]L3=[]forlineina: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é)號平均分")forL2inL3:print(L2[0]+""+str(L2[1]))定義函數(shù)calAvg(),計算某一門課程的平均分(函數(shù)參數(shù)為某門課成績對應(yīng)的列表名,返回值為該門課的平均分)defcalAvg(L):#函數(shù)代碼f=open("c:\\test\\score3.txt")a=f.readlines()dela[0]L2=[]L3=[]forlineina:line=line.strip()L1=line.split()L2.append(int(L1[1]))L3.append(int(L1[2]))f.clo

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論