python实验 函数的定义和调用

1、编写一个函数C(n,m)求解组合数,并测试。要求用递归函数和非递归函数两种方式实现。

组合数计算公式:C(n,m) = C(n-1, m) + C(n-1, m-1)

其中:C(n,n)=1   C(n,0)=1

import math

def C(n,m):

    value = math.factorial(n)/(math.factorial(m)*math.factorial(n-m))

    return value

print(C(4,2))

print(C(4,4))

print(C(4,0))

def CombinationNum(n,m):

    if m == 0 or n == m:

        return 1

    return CombinationNum(n-1,m-1)+CombinationNum(n-1,m)

print(CombinationNum(4,2))

print(CombinationNum(4,4))

print(CombinationNum(4,0))

2、编写一个函数paint(n),根据输入参数n(行数)不同,输出下面图形(n=4),并测试。

       *

      ***

     *****

    *******

def paint(n):

    for i in range(1,n+1):

        a = 2*i-1

        print('{0:^100}'.format('*' * a))

paint(4)

3、有n个乒乓球运动员打淘汰赛,编写函数计算至少需要多少场比赛才能决出冠军,并测试。提示:可以用递归函数实现。(淘汰赛是指体育比赛和其它各种比赛中的一种赛制,在这种赛制中赛员两两相对,输一场即淘汰出局。每一轮淘汰掉一半选手,直至产生最后的冠军。)

def bisai(n):

    if n==1:

        return 0

    elif n%2 != 0:

        n=n-1

        return 1+bisai(n)

    else:

        return n//2+bisai(n//2)

 

print(bisai(4))

4、从以下三题中任选一题完成:

(2)轮盘抽奖是比较常见的一种游戏,在轮盘上有一个指针和一些不同颜色、不同面积的扇形,用力转动轮盘,轮盘慢慢停下后依靠指针所处的位置来判定是否中奖以及奖项等级。假设共设一等奖、二等奖和三等奖这3个价值的奖品。把轮盘从0°-360°划分为3个区域,其中[0°,30°)对应一等奖,[30°,108°)对应二等奖,[108°,360°)对应三等奖。使用0-360的随机数表示消费者转动轮盘后指针所处的位置。编写函数playGame(),模拟轮盘抽奖过程。编程模拟该游戏全过程,并试玩10000次,记录每个奖项的中奖次数。

提示:用字典实现

import random

def playGame():

    a = random.randint(0,360)

    if 0<=a<30:

        print('一等奖')

        return '一等奖'

    elif 30<=a<108:

        print('二等奖')

        return '二等奖'

    else:

        print('三等奖')

        return '三等奖'

def main():

    b = []

    for i in range(10000):

        b.append(playGame())

    a=[i for i in range(1,10001)]

    c = dict(zip(a,b))

if __name__ == '__main__':

    main()

你可能感兴趣的:(练习题,python)