



版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、Python經(jīng)典編程30例所有代碼均在python3.7環(huán)境下調(diào)試通過,為了防止排版原因導致不能正常運行,提供了正常運行情況下的代碼截圖。1、編寫程序,求1n之間的素數(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,"是素數(shù)")2、編寫程序,生成一個包括100
2、個隨機整數(shù)的列表,然后從后向前刪除所有素數(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")print(&
3、quot;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、編寫程序,當用戶從鍵盤輸入整數(shù)后,對其進行因式分解(即素數(shù)的積)。如100=2*2*5*5n = int(input("請輸入待分解的整數(shù)n=?")x = 1flag = Trueif
4、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、;1=1")elif n = 0:print("0=0")4、編寫程序,驗證100以內(nèi)整數(shù)的哥德巴赫的猜想:任何一個充分大的偶數(shù)(大于等于6)總可以表示成兩個素數(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ù)不正確,應該是大于或等于4的偶數(shù)
6、") 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ù)字組成的素數(shù),并且在每個素數(shù)中每個數(shù)字只使用一次。def isprime(x): if x=2: return True i
7、f 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: pri
8、nt(s)exercise3_5()6、編寫程序,求所有水仙花數(shù)。水仙花數(shù)是指一個三位數(shù),其個位、十位、百位3個數(shù)字的立方和等于這個數(shù)本身。并斷定有沒有四位數(shù)的水仙花數(shù)?t=0s=0 #統(tǒng)計水仙花數(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*1000-k*
9、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個隨機數(shù)的列表,然后運用切片方法對其中偶數(shù)下標的元素進行降序排列,奇數(shù)下標的元素不變。解法一:import randomlist_1=#生成隨機整數(shù)列表for i in range(20): list_1.append(random.randint(0,100) print('生成的列表為:',list_1) #從首位開
10、始索引下標為偶數(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.randi
11、nt(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ù),輸出一個如下圖所示的由“*”構成的等腰三角形(提示:用setw()函數(shù))。for i in range(6): for k in range(5-i): print(" ",end=
12、" ") 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如此類推。問他們合伙至少捕了多少條魚?解法一設總共捕了x條魚,每個人看到的魚共有Xn條, 則:X1=xX2=(X1-1)/5*4X3=(X2-1)/5*4X4=(X3-1)/5*4X5=(X4-1)/5*
13、4其中,(Xn-1)%5=0必定成立,即題中所提到的,扔掉一條,取五分之一。那么就有x,使得遞推所得到的項滿足(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 = int
14、(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: breakp
15、rint("總共捕了",fish0,"條魚")for i in range(0, 5):print("第0人看到1條魚".format(i+1, fishi)10、編寫程序,計算斐波拉契數(shù)列的后項與前項的比:1/1,2/1,3/2,5/3,8/5,13/8,.第n項的值,并觀察隨著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(k)11
16、、編寫程序,計算盧卡斯數(shù)列的后項與前項的比:1/2,3/1,4/3,7/4,11/7,18/11,.第n項的值,并觀察隨著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),"=&q
17、uot;,LKS(k+1)/LKS(k)12、編寫函數(shù),用于判斷輸入的字符串是否由字母和數(shù)字構成,并統(tǒng)計字符個數(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 'whitespace
18、39; else: return 'other' def chtypecount(s): """字符串類型計數(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_d=0s
19、um_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+=1 e
20、lse: sum_other+=1print("數(shù)字:",sum_d,"個")print("字母:",sum_alpha,"個")print("其他符號:",sum_other,"個")print("漢字:",sum_chinese,"個")13、編寫程序,計算字符串中單詞的個數(shù)。str = input("請您輸入一串字符串:")str1 = str.strip() # 去掉字符串前后空格index = 0count
21、 = 0while index < len(str1): while str1index != " ": # 當不是空格是,下標加1 index += 1 if index = len(str1): # 當下標大小跟字符串長度一樣時結束當前循環(huán) break count += 1 # 遇到空格加1 if index = len(str1): # 當下標大小跟字符串長度一樣時結束當前循環(huán) break while str1index = " ": # 當有兩個空格時,下標加1,防止以一個空格算一個單詞 index += 1print("輸入的字
22、符串中一共有count = %d個單詞" % count)14、編寫程序,用戶輸入一個字符串,將偶數(shù)下標位的字符提出來合成一個串A,再將奇數(shù)下標位置的字符提取出來合成串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)計字符串中出現(xiàn)的每個字母出現(xiàn)次數(shù),并輸出成一個字典,如a:3,A:5,b:2#a = "aAsmr3idd4bgs7Dlsf9eAF&qu
23、ot;a=input("請輸入字符串:")def fun1_2(x): #1&2 # x = x.lower() #大小寫轉換 num = dic = for i in x: if i.isdigit(): #判斷如果為數(shù)字,請將a字符串的數(shù)字取出,并輸出一個新的字符串 num.append(i) else: #2 請統(tǒng)計a字符串出現(xiàn)每個字母的出現(xiàn)次數(shù)(忽視大小寫),并輸出一個字典。例:'a':3,'b':1 if i in dic: continue else: dici = x.count(i) new = ''.
24、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)計字符串中出現(xiàn)的每個單詞出現(xiàn)次數(shù),并輸出成一個字典。解法一str1 = "tomo
25、rrow 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"l
26、ist1 = str1.split(" ")dict1 =for element in list1: value = dict1.get(element) #如果不存在則返回None if value = None: dict1element = 1 else: dict1element += 1print(dict1)17、編寫程序,將輸入的一串字符從前到后每個字符向后移動一位,最后一個字符存放到第一個位置,并輸出結果。arr=r=""m=input("請輸入")for string in m: arr.append(string)
27、last=arr-1arr.insert(0,last)arr.pop()for str in arr: r=r+strprint(r)18、編寫程序,把一段英文中字母“a”改寫成“A”#輸入一串字符,將大寫字母轉換成小寫字母,小寫字母轉換為大寫字母def LtoU(): a = input("請 輸入字符:") b = for n in a : if "a"<= n <= "z": b.append(n.upper() elif"A" <= n <= "Z" : b.a
28、ppend(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 = "&qu
29、ot; 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ù)重復的單詞只保留一個。l = s = "h
30、ello 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("請輸入一個英文句子:")p
31、rint(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ù)器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>0:
33、str=str.replace(fword,rword) print('替換后的句子為:',str)else: print('句子中沒有要查找的單詞')24、編寫自定義函數(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): for i
34、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(myS
35、um(k) 27、編寫程序,運用遞歸方法判斷一個數(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、編寫程序,運用遞歸方法分別求出斐波拉契數(shù)列和盧卡斯數(shù)列前n項之和,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: retur
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 課題開題報告:創(chuàng)新創(chuàng)業(yè)教育現(xiàn)代化與中國式現(xiàn)代化
- 課題開題報告:殘疾學生職業(yè)教育研究
- 合作經(jīng)營土地流轉與管理協(xié)議
- 2025年度藝人經(jīng)紀違約金及違約責任處理協(xié)議
- 太陽眼鏡企業(yè)ESG實踐與創(chuàng)新戰(zhàn)略研究報告
- 2025年度股權激勵與股權轉讓及員工持股計劃合同
- 房屋抵押合同(含抵押權登記及注銷)
- 內(nèi)褲企業(yè)ESG實踐與創(chuàng)新戰(zhàn)略研究報告
- 2025年度魚塘承包及漁業(yè)生態(tài)環(huán)境保護合同
- 水刺非織造布企業(yè)數(shù)字化轉型與智慧升級戰(zhàn)略研究報告
- 2024內(nèi)蒙古中考數(shù)學二輪專題復習 二次函數(shù)與幾何綜合題 類型二 面積問題(課件)
- DL-T5796-2019水電工程邊坡安全監(jiān)測技術規(guī)范
- 高等數(shù)學教案第四章不定積分
- 2024年高考時事政治考試題庫(134題)
- 安全生產(chǎn)責任制考試試卷及答案
- 擠壓模具拋光培訓課件
- 大學生寒假回訪母校社會實踐報告
- 2023年跨境電商年度總結報告
- 水磨鉆成本分析
- 2023-2024學年外研版(三起)英語六年級下冊期末測試卷含答案
- 醫(yī)院培訓課件:《ERAS在胃腸外科的應用》
評論
0/150
提交評論