赞
踩
思考一: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)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。