当前位置:   article > 正文

python例题 (函数):_森林中有四只兔子拔了一堆萝卜,准备过一晚,分成4堆少一个

森林中有四只兔子拔了一堆萝卜,准备过一晚,分成4堆少一个

一、兔子分萝卜:

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

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

              代码:

  1. 3.森林中有一堆萝卜,五只兔子来分。
  2. 第一只兔子把这堆萝卜平均分为五份,多了一个,这只兔子把多的一个扔到垃圾桶中
  3. ,拿走了一份。第二只兔子把剩下的萝卜又平均分成五份,又多了一个,
  4. 它同样把多的一个扔入垃圾桶中,拿走了一份,第三、第四、第五只兔子都是这样做的,
  5. 问森林中原来最少有多少个萝卜?
  6. #总数num num1 = (num-1)*0.8 num2 = (num1-1)*0.8 ...
  7. #最后剩余的萝卜的总数是 (最少的)
  8. #萝卜在分的过程中应该都是整数
  9. #最少有多少个萝卜是:4个
  10. #4个往上推(4的倍数) 6个 往上 8.5个(小数是不行的)
  11. #你现在要找一个的数 往上推5次 都是整数
  12. #思路:首先确定最后剩余的萝卜的数量(4的n倍)
  13. #往上推导5次 推导的方法是(num/0.8)+1
  14. i=0 #对应循环的初始值
  15. j=1 #从1开始
  16. x=2
  17. while True:
  18. x=4*j #最后的值肯定是4的倍数
  19. #判断是否能够往上推导5次 i=5之后结果就得到了
  20. for i in range(0,5):
  21. if x%4!=0: 判断是否为整数可以用取模分母的方式
  22. break
  23. else:
  24. i+=1
  25. x=(x/0.8)+1
  26. j+=1
  27. if i==5:
  28. print(x)
  29. break
  30. 第二种
  31. def func(num):
  32. num_less = 4
  33. num_base = 1
  34. sum_less_four = 0
  35. tag = 1
  36. while tag:
  37. sum_less_four = num_less * num_base
  38. for i in range(1,num +1):
  39. if int(sum_less_four * 5/4*10)%10 == 0: 注意 这里是判断整数的方法。
  40. sum_less_four = sum_less_four * 5 / 4 + 1
  41. if i == num :
  42. tag = 0 循环标签
  43. break
  44. else:
  45. break
  46. num_base += 1
  47. return (int(sum_less_four))
  48. print(func(5))

                          

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

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

  1. def f(num):
  2. x = 1
  3. y = 1
  4. sum = 0
  5. for i in range(1,num-1):
  6. sum = y
  7. y = y + x 同时交换赋值
  8. x = sum
  9. yield y
  10. for k in f(100):
  11. print(k)
  12. 对比:
  13. def f(num):
  14. x = 1
  15. y = 1
  16. for i in range(1,num-1):
  17. y,x = x+y,y ------- 注意:python语法同时交换赋值。 斐波那契数列 。
  18. yield y
  19. for k in f(100):
  20. print(k)

              

                         

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/451461
推荐阅读
相关标签
  

闽ICP备14008679号