python例题 (函数):

一、兔子分萝卜:

              思考一:5层递进if语句判断。(穷举法,多层循环。)

              思考二:多层if递进转化 为循环语句。

              代码:

 3.森林中有一堆萝卜,五只兔子来分。
 第一只兔子把这堆萝卜平均分为五份,多了一个,这只兔子把多的一个扔到垃圾桶中
 ,拿走了一份。第二只兔子把剩下的萝卜又平均分成五份,又多了一个,
 它同样把多的一个扔入垃圾桶中,拿走了一份,第三、第四、第五只兔子都是这样做的,
 问森林中原来最少有多少个萝卜?

#总数num  num1 = (num-1)*0.8    num2 = (num1-1)*0.8  ...
#最后剩余的萝卜的总数是 (最少的)
#萝卜在分的过程中应该都是整数
#最少有多少个萝卜是:4个
#4个往上推(4的倍数)    6个  往上 8.5个(小数是不行的)
#你现在要找一个的数 往上推5次 都是整数
#思路:首先确定最后剩余的萝卜的数量(4的n倍)
       #往上推导5次   推导的方法是(num/0.8)+1

i=0    #对应循环的初始值
j=1    #从1开始
x=2
while True:
    x=4*j   #最后的值肯定是4的倍数
    #判断是否能够往上推导5次  i=5之后结果就得到了
    for i in range(0,5):
        if x%4!=0:             判断是否为整数可以用取模分母的方式
            break
        else:
            i+=1
        x=(x/0.8)+1
    j+=1
    if i==5:
        print(x)
        break



                              第二种

def func(num):
    num_less = 4
    num_base = 1
    sum_less_four = 0
    tag = 1
    while tag:
        sum_less_four = num_less * num_base

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

            if int(sum_less_four * 5/4*10)%10 == 0:            注意 这里是判断整数的方法。

                sum_less_four = sum_less_four * 5 / 4 + 1
                if i == num :
                    tag = 0                         循环标签
                    break
            else:
                break
        num_base += 1

    return (int(sum_less_four))
print(func(5))

                          

二、函数打印斐波那契数列:

                 知识点: 变量的的同时赋值。 y ,x = y+x , y

def f(num):
    x = 1
    y = 1
    sum = 0
    for i in range(1,num-1):
        sum = y
        y = y + x                  同时交换赋值
        x = sum
    yield y
for k in f(100):
    print(k)

     对比:


def f(num):
    x = 1
    y = 1

    for i in range(1,num-1):
        y,x = x+y,y                   注意:python语法同时交换赋值。      斐波那契数列 。
    yield y
for k in f(100):
    print(k)

              

                         

猜你喜欢

转载自blog.csdn.net/qq_16555103/article/details/83859728
今日推荐