【正文】
int(())print((2333,2,3))print(().strftime(39。%d/%m/%Y39。))day=(1111,2,3)day=(year=+22)print(day)1234567實例017:字符串構(gòu)成題目 輸入一行字符,分別統(tǒng)計出其中英文字母、空格、數(shù)字和其它字符的個數(shù)。程序分析 利用 while 或 for 語句,條件為輸入的字符不為 ‘\n’。string=input(輸入字符串:)alp=0num=0spa=0oth=0for i in range(len(string)): if string[i].isspace(): spa+=1 elif string[i].isdigit(): num+=1 elif string[i].isalpha(): alp+=1 else: oth+=1print(39。space: 39。,spa)print(39。digit: 39。,num)print(39。alpha: 39。,alp)print(39。other: 39。,oth)12345678910111213141516171819實例018:復(fù)讀機相加題目 求s=a+aa+aaa+aaaa+aa…a的值,其中a是一個數(shù)字。例如2+22+222+2222+22222(此時共有5個數(shù)相加),幾個數(shù)相加由鍵盤控制。程序分析 用字符串解決。a=input(39。被加數(shù)字:39。)n=int(input(39。加幾次?:39。))res=0for i in range(n): res+=int(a) a+=a[0]print(39。結(jié)果是:39。,res)1234567實例019:完數(shù)題目 一個數(shù)如果恰好等于它的因子之和,這個數(shù)就稱為完數(shù)。例如6=1+2+。程序分析 將每一對因子加進集合,在這個過程中已經(jīng)自動去重。最后的結(jié)果要求不計算其本身。def factor(num): target=int(num) res=set() for i in range(1,num): if num%i==0: (i) (num/i) return resfor i in range(2,1001): if i==sum(factor(i))i: print(i)123456789101112實例020:高空拋物題目 一球從100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地時,共經(jīng)過多少米?第10次反彈多高?程序分析 無high=200.total=100for i in range(10): high/=2 total+=high print(high/2)print(39??傞L:39。,total)1234567實例021:猴子偷桃題目 猴子吃桃問題:猴子第一天摘下若干個桃子,當(dāng)即吃了一半,還不癮,又多吃了一個第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以后每天早上都吃了前一天剩下的一半零一個。到第10天早上想再吃時,見只剩下一個桃子了。求第一天共摘了多少。程序分析 按規(guī)則反向推斷:猴子有一個桃子,他偷來一個桃子,覺得不夠又偷來了與手上等量的桃子,一共偷了9天。peach=1for i in range(9): peach=(peach+1)*2print(peach)1234實例022:比賽對手題目 兩個乒乓球隊進行比賽,各出三人。甲隊為a,b,c三人,乙隊為x,y,z三人。已抽簽決定比賽名單。有人向隊員打聽比賽的名單。a說他不和x比,c說他不和x,z比,請編程序找出三隊賽手的名單。程序分析 找到條件下不重復(fù)的三個對手即可。a=set([39。x39。,39。y39。,39。z39。])b=set([39。x39。,39。y39。,39。z39。])c=set([39。x39。,39。y39。,39。z39。])c=set((39。x39。,39。z39。))a=set(39。x39。)for i in a: for j in b: for k in c: if len(set((i,j,k)))==3: print(39。a:%s,b:%s,c:%s39。%(i,j,k))12345678910實例023:畫菱形題目 打印出如下圖案(菱形): * *** ***** ******* ***** *** *程序分析 遞歸調(diào)用即可。def draw(num): a=**(2*(4num)+1) print((9,39。 39。)) if num!=1: draw(num1) print((9,39。 39。))draw(4)1234567實例024:斐波那契數(shù)列II題目 有一分數(shù)序列:2/1,3/2,5/3,8/5,13/8,21/13…求出這個數(shù)列的前20項之和。程序分析 就是斐波那契數(shù)列的后一項除以前一項。a = b = s = 0for n in range(1,21): s += a / b a,b = a + b,aprint (s)12345678實例025: 階乘求和題目 求1+2!+3!+…+20!的和。程序分析 1+2!+3!+…+20!=1+2(1+3(1+4(…20(1))))res=1for i in range(20,1,1): res=i*res+1print(res)1234實例026:遞歸求階乘題目 利用遞歸方法求5!。程序分析 遞歸調(diào)用即可。def factorial(n): return n*factorial(n1) if n1 else 1print(factorial(5))123實例027:遞歸輸出題目 利用遞歸函數(shù)調(diào)用方式,將所輸入的5個字符,以相反順序打印出來。程序分析 遞歸真是蠢方法。def rec(string): if len(string)!=1: rec(string[1:]) print(string[0],end=39。39。)rec(input(39。string here:39。))123456實例028:遞歸求等差數(shù)列題目 有5個人坐在一起,問第五個人多少歲?他說比第4個人大2歲。問第4個人歲數(shù),他說比第3個人大2歲。問第三個人,又說比第2人大兩歲。問第2個人,說比第一個人大兩歲。最后問第一個人,他說是10歲。請問第五個人多大?程序分析 就一等差數(shù)列。def age(n): if n==1: return 10 return 2+age(n1)print(age(5))12345實例029:反向輸出題目 給一個不多于5位的正整數(shù),要求:一、求它是幾位數(shù),二、逆序打印出各位數(shù)字。程序分析 學(xué)會分解出每一位數(shù),用字符串的方法總是比較省事。n=int(input(39。輸入一個正整數(shù):39。))n=str(n)print(39。%d位數(shù)39。%len(n))print(n[::1])1234實例030:回文數(shù)題目 一個5位數(shù),判斷它是不是回文數(shù)。即12321是回文數(shù),個位與萬位相同,十位與千位相同。程序分析 用字符串比較方便,就算輸入的不是數(shù)字都o(jì)k。n=input(隨便你輸入啥啦:)a=0b=len(n)1flag=Truewhile ab: if n[a]!=n[b]: print(39。不是回文串39。) flag=False break a,b=a+1,b1if flag: print(39。是回文串39。)123456789101112實例031:字母識詞題目 請輸入星期幾的第一個字母來判斷一下是星期幾,如果第一個字母一樣,則繼續(xù)判斷第二個字母。程序分析 這里用字典的形式直接將對照關(guān)系存好。weekT={39。h39。:39。thursday39。, 39。u39。:39。tuesday39。}weekS={39。a39。:39。saturday39。, 39。u39。:39。sunday39。}week={39。t39。:weekT, 39。s39。:weekS, 39。m39。:39。monday39。, 39。w39。:39。wensday39。, 39。f39。:39。friday39。}a=week[str(input(39。請輸入第一位字母:39。)).lower()]if a==weekT or a==weekS: print(a[str(input(39。請輸入第二位字母:39。)).lower()])else: print(a)123456789101112131415實例032:反向輸出II題目 按相反的順序輸出列表的值。程序分析 無。a = [39。one39。, 39。two39。, 39。three39。]print(a[::1])12實例033:列表轉(zhuǎn)字符串題目 按逗號分隔列表。程序分析 無。L = [1,2,3,4,5]print(39。,39。.join(str(n) for n in L))12實例034:調(diào)用函數(shù)題目 練習(xí)函數(shù)調(diào)用。程序分析 無。def hello(): print(39。Hello World!39。)def helloAgain(): for i in range(2): hello()if __name__==39。__main__39。: helloAgain()12345678實例035:設(shè)置輸出顏色題目 文本顏色設(shè)置。程序分析 無。class bcolors: HEADER = 39。\033[95m39。 OKBLUE = 39。\033[94m39。 OKGREEN = 39。\033[92m39。 WARNING = 39。\033[93m39。 FAIL = 39。\033[91m39。 ENDC = 39。\033[0m39。 BOLD = 39。\033[1m39。 UNDERLINE = 39。\033[4m39。print( + 警告的顏色字體? + )12345678910實例036:算素數(shù)題目 求100之內(nèi)的素數(shù)。程序分析 用else執(zhí)行for循環(huán)的獎勵代碼(如果for是正常完結(jié),非break)。lo=int(input(39。下限:39。))hi=int(input(39。上限:39。))for i in range(lo,hi+1): if i 1: for j in range(2,i): if (i % j) == 0: break else: print(i)123456789實例037:排序題目 對10個數(shù)進行排序。程序分析 同實例005。raw=[]for i in range(10): x=int(input(39。int%d: 39。%(i))) (x) for i in range(len(raw)): for j in range(i,len(raw)): if raw[i]raw[j]: raw[i],raw[j]=raw[j],raw[i]print(raw)1234567891011實例038:矩陣對角線之和題目 求一個3*3矩陣主對角線元素之和。程序分析 無。mat=[[1,2,3], [3,4,5], [4,5,6] ]res=0for i in range(len(mat)): res+=mat[i][i]print(res)12345678實例039:有序列表插入元素題目 有一個已經(jīng)排好序的數(shù)組?,F(xiàn)輸入一個數(shù),要求按原來的規(guī)律將它插入數(shù)組中。程序分析 首先判斷此數(shù)是否大于最后一個數(shù),然后再考慮插入中間的數(shù)的情況,插入后此元素之后的數(shù),依次后移一個位置。lis=[1,10,100,1000,10000,100000]n=int(input(39。insert a number: 39。))(n)for i in range(len(lis)1): if lis[i]=n: for j in range(i,len(lis)): lis[j],lis[1]=lis[1],lis[j] breakprint(lis)123456789實例040:逆序列表題目 將一個數(shù)組逆序輸出。程序分析 依次交換位置,或者直接調(diào)用reverse方法。lis=[1,10,100,1000,10000,100000]for i in range(int(len(lis)/2)): lis[i