一、兔子分萝卜:
思考一: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)