Python重寫C語言程式100例--Part4

來源:互聯網
上載者:User

'''【程式24】 題目:有一分數序列:2/1,3/2,5/3,8/5,13/8,21/13...求出這個數列的前20項之和。1.程式分析:請抓住分子與分母的變化規律。 2.程式原始碼:'''#方法一a = 2.0b = 1.0s = 0for n in range(1,21):    s += a / b    t = a    a = a + b    b = tprint s#方法二s = 0.0for n in range(1,21):    s += a / b    b,a = a , a + bprint ss = 0.0for n in range(1,21):    s += a / b    b,a = a , a + bprint s#方法三l = []for n in range(1,21):    b,a = a,a + b    l.append(a / b)print reduce(lambda x,y: x + y,l)

''' 【程式21】題目:猴子吃桃問題:猴子第一天摘下若干個桃子,當即吃了一半,還不癮,又多吃了一個   第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以後每天早上都吃了前一天剩下   的一半零一個。到第10天早上想再吃時,見只剩下一個桃子了。求第一天共摘了多少。1.程式分析:採取逆向思維的方法,從後往前推斷。2.程式原始碼:'''x2 = 1for day in range(9,0,-1): x1 = (x2 + 1) * 2 x2 = x1print x1

'''【程式22】題目:兩個乒乓球隊進行比賽,各出三人。甲隊為a,b,c三人,乙隊為x,y,z三人。已抽籤決定   比賽名單。有人向隊員打聽比賽的名單。a說他不和x比,c說他不和x,z比,請編程式找出   三隊賽手的名單。 1.程式分析:判斷素數的方法:用一個數分別去除2到sqrt(這個數),如果能被整除,      則表明此數不是素數,反之是素數。       2.程式原始碼: '''for i in range(ord('x'),ord('z') + 1):    for j in range(ord('x'),ord('z') + 1):        if i != j:            for k in range(ord('x'),ord('z') + 1):                if (i != k) and (j != k):                    if (i != ord('x')) and (k != ord('x')) and (k != ord('z')):                        print 'order is a -- %s\t b -- %s\tc--%s' % (chr(i),chr(j),chr(k))

'''【程式23】 題目:列印出如案(菱形)   *  *** ************ *****  ***   *1.程式分析:先把圖形分成兩部分來看待,前四行一個規律,後三行一個規律,利用雙重      for迴圈,第一層控制行,第二層控制列。 2.程式原始碼: '''from sys import stdoutfor i in range(4):    for j in range(2 - i + 1):        stdout.write(' ')    for k in range(2 * i + 1):        stdout.write('*')    printfor i in range(3):    for j in range(i + 1):        stdout.write(' ')    for k in range(4 - 2 * i + 1):        stdout.write('*')    print

 

'''【程式25】 題目:求1+2!+3!+...+20!的和1.程式分析:此程式只是把累加變成了累乘。 2.程式原始碼:'''#方法一n = 0s = 0t = 1for n in range(1,21):    t *= n    s += tprint '1! + 2! + 3! + ... + 20! = %d' % s#方法二s = 0l = range(1,21)def op(x):    r = 1    for i in range(1,x + 1):        r *= i    return rs = sum(map(op,l))print '1! + 2! + 3! + ... + 20! = %d' % s


 

'''【程式26】 題目:利用遞迴方法求5!。1.程式分析:遞迴公式:fn=fn_1*4!2.程式原始碼:'''def fact(j):    sum = 0    if j == 0:        sum = 1    else:        sum = j * fact(j - 1)    return sumfor i in range(5):    print '%d! = %d' % (i,fact(i))

 

'''【程式27】 題目:利用遞迴函式調用方式,將所輸入的5個字元,以相反順序列印出來。1.程式分析:2.程式原始碼:'''def palin(n):    next = 0    if n <= 1:        next = input()        print        print next    else:        next = input()        palin(n - 1)        print nexti = 5palin(i)print


 

'''【程式28】 題目:有5個人坐在一起,問第五個人多少歲?他說比第4個人大2歲。問第4個人歲數,他說比第   3個人大2歲。問第三個人,又說比第2人大兩歲。問第2個人,說比第一個人大兩歲。最後    問第一個人,他說是10歲。請問第五個人多大?1.程式分析:利用遞迴的方法,遞迴分為回推和遞推兩個階段。要想知道第五個人歲數,需知道      第四人的歲數,依次類推,推到第一人(10歲),再往回推。'''def age(n):    if n == 1: c = 10    else: c = age(n - 1) + 2    return cprint age(5)


 

'''【程式29】 題目:給一個不多於5位的正整數,要求:一、求它是幾位元,二、逆序列印出各位元字。1. 程式分析:學會分解出每一位元,如下解釋:(這裡是一種簡單的演算法,師專數002班趙鑫提供) 2.程式原始碼:'''x = int(raw_input("input a number:\n"))a = x / 10000b = x % 10000 / 1000c = x % 1000 / 100d = x % 100 / 10e = x % 10if a != 0:    print "there are 5 ",e,d,c,b,aelif b != 0:    print "there are 4 ",d,c,b,aelif c != 0:    print "there are 3 ",e,d,celif d != 0:    print "there are 2 ",e,delse:    print "there are 1",e 


 

'''題目:一個5位元,判斷它是不是迴文數。即12321是迴文數,個位與萬位相同,十位與千位相同。   1.程式分析:同29例2.程式原始碼:'''x = int(raw_input("input a number:\n"))x = str(x)for i in range(len(x)/2):    if x[i] != x[-i - 1]:        print 'this number is not a huiwen'        breakprint 'this number is a huiwen'



 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.