




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、精選文檔Python經(jīng)典編程30例全部代碼均在python3.7環(huán)境下調(diào)試通過,為了防止排版緣由導(dǎo)致不能正常運(yùn)行,供應(yīng)了正常運(yùn)行狀況下的代碼截圖。1、編寫程序,求1n之間的素?cái)?shù)列表def sushu(x): i=0 for i in range(2,x): if x % i =0: return False break if i+1=x: return True return Falsen=int(input("請輸入n:")for j in range(2,n): if sushu(j)=True: print(j,"是素?cái)?shù)")2、編寫程序,生成一個包
2、括100個隨機(jī)整數(shù)的列表,然后從后向前刪除全部素?cái)?shù)import randomdef sushu(x): i=0 for i in range(2,x): if x % i =0: return False break if i+1=x: return True return Falses=i=0for i in range(0,30): s.append(random.randint(1,10000)for i in range(0,30): print(si," ",end='') if i % 10 =0: print("n")pri
3、nt("n")print("T列表")t=for j in range(29,0,-1): if sushu(sj)=False: t.append(sj)for i in range(0,len(t)-1): print(ti," ",end='') if i % 10 =0: print("n")3、編寫程序,當(dāng)用戶從鍵盤輸入整數(shù)后,對其進(jìn)行因式分解(即素?cái)?shù)的積)。如100=2*2*5*5n = int(input("請輸入待分解的整數(shù)n=?")x = 1flag = Tru
4、eif n > 1000:#推斷大于1000的數(shù) print("請輸入不超過1000的整數(shù)")if n > 1 and n <= 1000: print("=".format(n), end='') while n != 1: x += 1 while n % x = 0: n /= x if flag: flag = False print(x, end='') else: print("*".format(x), end='')elif n = 1: print(&
5、quot;1=1")elif n = 0:print("0=0")4、編寫程序,驗(yàn)證100以內(nèi)整數(shù)的哥德巴赫的猜想:任何一個充分大的偶數(shù)(大于等于6)總可以表示成兩個素?cái)?shù)之和。如10=5+5, 12=5+7def isprime(x): if x=2: return True if x%2=0: return False n=3 while n*n<=x: if x%n=0: return False n+=2 return Truedef gedb(x): if x<4 or x%2!=0: print("輸入的數(shù)據(jù)不正確,應(yīng)當(dāng)是大于或等于
6、4的偶數(shù)") return if x=4: print('4=2+2') return for n in range(3,x,2): if isprime(n) and isprime(x-n): print(x,'=',n,'+',x-n) returndef main(): x=int(input("輸入大于或等于4的偶數(shù)") gedb(x)main()5、編寫程序,輸出全部由1、2、3、4這4個數(shù)字組成的素?cái)?shù),并且在每個素?cái)?shù)中每個數(shù)字只使用一次。def isprime(x): if x=2: return Tr
7、ue if x%2=0: return False n=3 while n*n<=x: if x%n=0: return False n+=2 return Truedef exercise3_5(): s=0 for i in range(1,5): for j in range(1,5): for k in range(1,5): for l in range(1,5): if (i!=j) and (i!=k) and (i!=l) and (j!=k) and (j!=l) and (k!=l): s=i*1000+j*100+k*10+l if isprime(s)=True:
8、 print(s)exercise3_5()6、編寫程序,求全部水仙花數(shù)。水仙花數(shù)是指一個三位數(shù),其個位、十位、百位3個數(shù)字的立方和等于這個數(shù)本身。并斷定有沒有四位數(shù)的水仙花數(shù)?t=0s=0 #統(tǒng)計(jì)水仙花數(shù)的個數(shù)for i in range(100,1000): j=int(i/100) k=int(i-100*j)/10) l=i-j*100-k*10 if i=j*j*j+k*k*k+l*l*l: print(i) s+=1print(s)for i in range(1000,10000): j=int(i/1000) k=int(i-1000*j)/100) l=int(i-j*100
9、0-k*100)/10) m=i-1000*j-100*k-10*l if i=j*j*j+k*k*k+l*l*l+m*m*m: t+=1 print(i)if t=0: print("No such number")7、編寫程序,生成一個包含100個隨機(jī)數(shù)的列表,然后運(yùn)用切片方法對其中偶數(shù)下標(biāo)的元素進(jìn)行降序排列,奇數(shù)下標(biāo)的元素不變。解法一:import randomlist_1=#生成隨機(jī)整數(shù)列表for i in range(20): list_1.append(random.randint(0,100) print('生成的列表為:',list_1) #
10、從首位開頭索引下標(biāo)為偶數(shù)位元素for i in range(0,len(list_1),2): #從上一個偶數(shù)位的下一個偶數(shù)位元素開頭索引 for u in range(i+2),len(list_1),2): #防止索引超出范圍 if i< len(list_1)-2: #比較索引元素大小 if list_1i<=list_1u: #互換元素位置 list_t=list_1i list_1i=list_1u list_1u=list_tprint('排序后列表為:',list_1)解法2:import randomrandom.seed()lst=random.r
11、andint(0,101) for i in range(20)print(lst)def bubble_sort(lst): n=len(lst) for i in range(n/2): for j in range(0,n-i-2,2): if lstj<lstj+2: lstj,lstj+2=lstj+2,lstjbubble_sort(lst)print(lst)8、編寫程序,輸入行數(shù),輸出一個如下圖所示的由“*”構(gòu)成的等腰三角形(提示:用setw()函數(shù))。for i in range(6): for k in range(5-i): print(" ",
12、end=" ") for j in range(2*i+1): print("*", end=" ") print()9、編寫程序,A、B、C、D、E共5人夜里去捕魚,很晚才各自找地方休息。日上三竿,A第1個醒來,他將魚均分成5份,把多余的一條扔掉,拿走自己的一份。B第2個醒來,他也將魚均分成5份,將多余的1條扔掉,拿走自己的一份。C、D、E如此類推。問他們合伙至少捕了多少條魚?解法一設(shè)總共捕了x條魚,每個人看到的魚共有Xn條, 則:X1=xX2=(X1-1)/5*4X3=(X2-1)/5*4X4=(X3-1)/5*4X5=(X4-1
13、)/5*4其中,(Xn-1)%5=0必定成立,即題中所提到的,扔掉一條,取五分之一。那么就有x,使得遞推所得到的項(xiàng)滿足(Xn-1)%5=0即可。def fish(n, x): if (x - 1) % 5 = 0: if n = 1: return 1 else: return fish(n - 1, (x - 1) / 5 * 4) return 0x = 6while True: x += 5 if fish(5, x) = 1: print(x) breakfor i in range(1, 6): print("第0人看到的魚有1條".format(i, x)x =
14、 int(x - 1) / 5 * 4)解法二 反向遞推法:解決E和D的問題(規(guī)模為2),就可以解決D和C的問題,也就是E、D、C的問題(規(guī)模為3),最終解決全部問題。 由X(n+1)=(Xn-1)/5*4得,Xn=X(n+1)*5/4+1fish = 0, 0, 0, 0, 1i = 0while True: fish4 += 5 for i in range(3, -2, -1): if fishi + 1 % 4 != 0: break fishi = int(fishi + 1 * 5 / 4 + 1) if fishi % 5 != 1: break if i=-1: br
15、eakprint("總共捕了",fish0,"條魚")for i in range(0, 5):print("第0人看到1條魚".format(i+1, fishi)10、編寫程序,計(jì)算斐波拉契數(shù)列的后項(xiàng)與前項(xiàng)的比:1/1,2/1,3/2,5/3,8/5,13/8,.第n項(xiàng)的值,并觀看隨著n的增加,比值趨向什么值?def fblq(x): if x=1 or x=2: return 1 else: return fblq(x-1)+fblq(x-2)for k in range(1,30): print(fblq(k+1)/fblq(
16、k)11、編寫程序,計(jì)算盧卡斯數(shù)列的后項(xiàng)與前項(xiàng)的比:1/2,3/1,4/3,7/4,11/7,18/11,.第n項(xiàng)的值,并觀看隨著n的增加,比值趨向什么值?盧卡斯數(shù)列的定義為:L(1)=2,L(2)=1,L(n)=L(n-1)+L(n-2) (n>=2),前9個數(shù)為:2、1、3、4、7、11、18、29、47def LKS(x): if x=1: return 2 elif x=2: return 1 else: return LKS(x-1)+LKS(x-2) for k in range(1,30): print(LKS(k+1),"/",LKS(k),"
17、;=",LKS(k+1)/LKS(k)12、編寫函數(shù),用于推斷輸入的字符串是否由字母和數(shù)字構(gòu)成,并統(tǒng)計(jì)字符個數(shù)。解法一import stringdef chartype(ch): """字符類型推斷""" if ch in string.ascii_letters: return 'ascii_letters' elif ch in string.digits: return 'digits' elif ch in string.whitespace: return 'whitespa
18、ce' else: return 'other' def chtypecount(s): """字符串類型計(jì)數(shù)器""" counter = for ct in map(chartype, s): counter.setdefault(ct, 0) counterct += 1 return counter for chtype, cnts in chtypecount(input("Enter a string: ").items(): print (chtype, cnts)解法二sum_
19、d=0sum_alpha=0sum_other=0sum_chinese=0#s="123 abc def 中klGD國 abcde 宏大"s=input("請輸入字符串:")for i in range(0,len(s): if '0'<=si<='9': sum_d+=1 elif 'a'<=si<='z': sum_alpha+=1 elif 'u4e00' <= si <= 'u9fff': sum_chinese+
20、=1 else: sum_other+=1print("數(shù)字:",sum_d,"個")print("字母:",sum_alpha,"個")print("其他符號:",sum_other,"個")print("漢字:",sum_chinese,"個")13、編寫程序,計(jì)算字符串中單詞的個數(shù)。str = input("請您輸入一串字符串:")str1 = str.strip() # 去掉字符串前后空格index = 0c
21、ount = 0while index < len(str1): while str1index != " ": # 當(dāng)不是空格是,下標(biāo)加1 index += 1 if index = len(str1): # 當(dāng)下標(biāo)大小跟字符串長度一樣時結(jié)束當(dāng)前循環(huán) break count += 1 # 遇到空格加1 if index = len(str1): # 當(dāng)下標(biāo)大小跟字符串長度一樣時結(jié)束當(dāng)前循環(huán) break while str1index = " ": # 當(dāng)有兩個空格時,下標(biāo)加1,防止以一個空格算一個單詞 index += 1print("
22、輸入的字符串中一共有count = %d個單詞" % count)14、編寫程序,用戶輸入一個字符串,將偶數(shù)下標(biāo)位的字符提出來合成一個串A,再將奇數(shù)下標(biāo)位置的字符提取出來合成串B,再將A和B連接起來輸出。c=input("請輸入字符");A=""B=""for a in c:2: A=A+afor b in c1:len(c):2: B=B+bn=A+Bprint(n)15、編寫程序,統(tǒng)計(jì)字符串中消滅的每個字母消滅次數(shù),并輸出成一個字典,如a:3,A:5,b:2#a = "aAsmr3idd4bgs7Dlsf9eA
23、F"a=input("請輸入字符串:")def fun1_2(x): #1&2 # x = x.lower() #大小寫轉(zhuǎn)換 num = dic = for i in x: if i.isdigit(): #推斷假如為數(shù)字,請將a字符串的數(shù)字取出,并輸出一個新的字符串 num.append(i) else: #2 請統(tǒng)計(jì)a字符串消滅每個字母的消滅次數(shù)(忽視大小寫),并輸出一個字典。例:'a':3,'b':1 if i in dic: continue else: dici = x.count(i) new = '
24、39;.join(num) print ("the new numbers string is: " + new) print ("the dictionary is: %s" % dic)fun1_2(a)def fun3(x): x = x.lower() new3 = for i in x: if i in new3: continue else: new3.append(i) print (''.join(new3)fun3(a)16、編寫程序,統(tǒng)計(jì)字符串中消滅的每個單詞消滅次數(shù),并輸出成一個字典。解法一str1 = "
25、tomorrow is a good day tomorrow is a bad day tomorrow is a sunny day"list1 = str1.split(" ")dict1 =for element in list1: if element not in dict1: dict1element = 1 else: dict1element += 1print(dict1)解法二str1 = "tomorrow is a good day tomorrow is a bad day tomorrow is a sunny day&qu
26、ot;list1 = str1.split(" ")dict1 =for element in list1: value = dict1.get(element) #假如不存在則返回None if value = None: dict1element = 1 else: dict1element += 1print(dict1)17、編寫程序,將輸入的一串字符從前到后每個字符向后移動一位,最終一個字符存放到第一個位置,并輸出結(jié)果。arr=r=""m=input("請輸入")for string in m: arr.append(str
27、ing)last=arr-1arr.insert(0,last)arr.pop()for str in arr: r=r+strprint(r)18、編寫程序,把一段英文中字母“a”改寫成“A”#輸入一串字符,將大寫字母轉(zhuǎn)換成小寫字母,小寫字母轉(zhuǎn)換為大寫字母def LtoU(): a = input("請 輸入字符:") b = for n in a : if "a"<= n <= "z": b.append(n.upper() elif"A" <= n <= "Z" :
28、 b.append(n.lower() else: b.append(n) print("".join(b)def aToA(): a = input("請 輸入字符:") b = for n in a : if n = "a": b.append(n.upper() else: b.append(n) print("".join(b)aToA()19、編寫程序,把一段英文中每句話的首個單詞的第一個字母改為大寫。def convert_initial(old: str) -> str: new = "
29、;" i = 0 while i < len(old): if (i = 0) or (oldi - 1 = " "): new += oldi.upper() else: new += oldi i += 1 return new#print(convert_initial("I am a teacher, and you are student.")s=input("請輸入一個英文句子:")print(convert_initial(s)20、編寫程序,將一段英文中有連續(xù)重復(fù)的單詞只保留一個。l = s = &qu
30、ot;hello world hello python"for i in s.split(" "):if i not in l:l.append(i) result = " ".join(l)print(result)print()def onlyOne(x): m= print(x) for j in x.split(" "): if j not in m: m.append(j) result =" ".join(m) return resultt=input("請輸入一個英文句子:&quo
31、t;)print(onlyOne(t)21、編寫程序,輸入一段英文,輸出英文中全部長度為3個字母的單詞。import rex = input('Please input a string:')pattern = pile(r'ba-zA-Z3b')print(pattern.findall(x)22、編寫程序,輸入一段英文,輸出字符數(shù)最多的單詞。import rewords=input("Input the words:")l=re.split('. +',words) #使用空格分隔詞語,得到各個單詞print(l)i=0
32、#這里我設(shè)置的是計(jì)數(shù)器s=""for i in l: if len(i)>len(s): #假如單詞的長度為3 輸出 s=i else: print('')print(s)23、編寫程序,要求輸入一段英文,以及此段中的一個單詞和另外一個單詞,然后顯示用其次個單詞替換第一個單詞后的句子。str='The weather today is really good.'fword=input('請輸入要查找的單詞')rword=input('請輸入要替換的單詞')c=str.count(fword)if c>
33、;0: str=str.replace(fword,rword) print('替換后的句子為:',str)else: print('句子中沒有要查找的單詞')24、編寫自定義函數(shù),實(shí)現(xiàn)從屏幕輸入3個數(shù),并求出其中最大值。def myfun(): s= for i in range(0,3): t=int(input("請輸入一個數(shù):") s.append(t) print(max(s) print(s)myfun()25、編寫函數(shù),仿照內(nèi)置函數(shù)sort()s=1,-3,2,6,8,11,-5,28,88t=def mysort(x): fo
34、r i in range(0,len(x): t.append(min(x) x.remove(min(x) return tprint(mysort(s)26、編寫函數(shù),求出之和,函數(shù)形參為n,n由用戶在主函數(shù)中輸入。def jiecheng(x): if (x=0) or (x = 1): return 1 else: return x*jiecheng(x-1)def mySum(n): mysum=0 for i in range(0,n+1): mysum+=1/jiecheng(i) return mysumk=int(input("請輸入一個數(shù):")print
35、(mySum(k) 27、編寫程序,運(yùn)用遞歸方法推斷一個數(shù)是否為回文數(shù)。a = input("請輸入一個數(shù):")if a.isdigit(): a = str(a) for i in range(len(a): if ai = alen(a)-i-1: print(a,"是回文數(shù)") else: print(a,"不是回文數(shù)") breakelse: print("請輸入自然數(shù):")28、編寫程序,運(yùn)用遞歸方法分別求出斐波拉契數(shù)列和盧卡斯數(shù)列前n項(xiàng)之和,n由用戶在主函數(shù)中輸入。def fblq(x): if (x=1) or (x = 2): return 1 else: return fblq(x-1)+fblq(x-2)def LKS(x): if x=1: return
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 互聯(lián)網(wǎng)企業(yè)信息安全防護(hù)計(jì)劃
- 班主任工作計(jì)劃塑造和諧發(fā)展班級
- 《晴隆縣紅寨煤業(yè)有限責(zé)任公司晴隆縣中營鎮(zhèn)紅寨煤礦(變更)礦產(chǎn)資源綠色開發(fā)利用方案(三合一)》評審意見
- 《貴州聯(lián)眾礦業(yè)有限公司水城縣立火新華錳礦廠(延續(xù))礦產(chǎn)資源綠色開發(fā)利用方案(三合一)》評審意見
- 鹽源伯特利煤焦化有限責(zé)任公司梅家坪煤礦礦山地質(zhì)環(huán)境保護(hù)與土地復(fù)墾方案情況
- 統(tǒng)編版小學(xué)語文二年級下冊口語交際《圖書借閱公約》精美課件
- 重癥護(hù)理文書書寫規(guī)范
- 2025年雅安貨運(yùn)從業(yè)資格證考試技巧
- 自然環(huán)境 教學(xué)設(shè)計(jì)-2024-2025學(xué)年人教版地理七年級下冊
- 2025年廈門道路運(yùn)輸從業(yè)資格證考試題和答案
- 品德家庭小賬本
- 癥狀性大腦中動脈慢性閉塞血管內(nèi)開通治療課件
- 大象版科學(xué)四年級下冊第一單元測試卷(含答案)
- 蘇教版一年級數(shù)學(xué)下冊第二單元《認(rèn)識圖形(二)》教材分析(定稿)
- 小學(xué)班會課件-端午節(jié)主題班會(共19張PPT)通用版 PPT課件
- 約等于計(jì)算題100道乘除法
- 水泵站工程施工設(shè)計(jì)方案
- 新聞類文體的翻譯(課堂PPT)
- 員工年終述職報(bào)告工作總結(jié)PPT模板
- 現(xiàn)代寫作教程筆記
- 小小銀行家ppt課件
評論
0/150
提交評論