1. 程式人生 > >100道Python程式設計題

100道Python程式設計題

1、給定一個最大值n(10>n>=0),求0-n之間的整數可以組成多少個奇數?

分析:

首先分析組成數字的首位:不能為0,可放數字為n個
然後分析末位:必須為奇數,可放數字為odd[1,n]個
最後分析中間位:範圍內任意數字,可放數字為n+1個
def get_odd(n):
    first = n
    last = len([x for x in range(n+1) if x%2 !=0 ])
    sum = last+first*last
    if n <2:return sum
    for i in range(2,n+1):
        middle
= (n + 1) ** (i - 1) sum += first*middle*last return sum

10、海灘上有一堆桃子,五隻猴子來分。第一隻猴子把這堆桃子平均分為五份,多了一個,這隻猴子把多的一個吃掉,拿走了一份。第二隻猴子把剩下的桃子又平均分成五份,又多了一個,它同樣把多的一個吃掉,拿走了一份,第三、第四、第五隻猴子都是這樣做的,問海灘上原來最少有多少個桃子

def get_min_peaches(n):
    i = 1
    plus = n*(n-1)
    def if_match(ret):
        for j in range(n):
            modn = (ret - 1
) % n if modn != 0: return False ret = (ret-1)/n*(n-1) return True while True: if if_match(i): break i += plus return i

11、一隻青蛙一次可以跳上1級臺階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上一個n級的臺階總共有多少種跳法。

def jump_step(n):
    result = lambda
n: n if n < 2 else 2 * jump_step(n - 1) return result(n)

100、實現一個二叉樹

class Tree():
    def __init__(self,ltree = 0,rtree = 0,data = 0):
        self.ltree = ltree
        self.rtree = rtree
        self.data = data
class BTree():

    def __init__(self,base = 0):
        self.base = base
    def _Empty(self):

        if self.base == 0:
            return True
        else:
            return False
    def qout(self,tree_base):

        if tree_base == 0:
            return
        print tree_base.data
        self.qout(tree_base.ltree)
        self.qout(tree_base.rtree)
    def mout(self,tree_base):

        if tree_base == 0:
            return
        self.mout(tree_base.ltree)
        print tree_base.data
        self.mout(tree_base.rtree)
    def hout(self,tree_base):

        if tree_base == 0:
            return
        self.hout(tree_base.ltree)
        self.hout(tree_base.rtree)
        print tree_base.data