天天向上python题目答案_Python入门习题3.天天向上

例3.1 一年365天,以第一天的能力值为基数,记为1.0,当好好学习时能力值相比前一天提高1%,当没有学习时能力值相比前一天下降1%。每天努力(dayup)和每天放任(daydown),一年下来的能力值相差多少呢?

解:

1 dayup = (1.0 + 0.01)**365

2 daydown = (1.0 - 0.01)**365

3 print("每天努力:{:.2f},每天放任:{:.2f}".format(dayup,daydown))

每天努力:37.78,每天放任:0.03

例3.2 一年365天,一周5个工作日,如果每个工作日都很努力,可以提高1‰,仅在周末放任一下,能力值下降1‰,一年下来能力值power为多少呢?(采用循环方式实现,假设第365天是周日,power初始值为1)

解:根据数学知识可知,如果第365天是周日,那么第一天也是周日。

根据题意用循环方式实现,已知工作日与周期日每7天一循环,天数与是否工作成周期函数,周期为7。此处采用for循环来实现。for i in range(365).星期、天数、i值等关系参见下表格。

星期

天数

i值

i%7的值

1

0

0

2

1

1

......

......

......

......

7

6

6

8

7

0

可见,休息日i%7值为0或6。由此代码如下:

1 power = 1

2 for i in range(365):3 if i % 7 in [0,6]:4 power = power * (1 - 0.01)5 else:6 power = power * (1 + 0.01)7 print("每周向上5天向下2天的能力值:{:.2f}".format(power))

每周向上5天向下2天的能力值:4.63

例3.3 根据3.2条件,工作日需要努力到什么程度,一年后的水平才与每天都努力1%取得的效果相同呢?

解:将工作日努力的能力值提高数设为 x ,设置函数Power(x) ,当函数Power(x)的值不小于37.78时输出 x .

这里采用通过多次运算求解问题的解决方案,即程序从低到高逐渐增加每天努力的 x ,最后找到合适的 x

1 defPower(x):2 power = 1.0

3 for i in range(365):4 if i % 7 in [0,6]:5 power = power * (1 - 0.01)6 else:7 power = power * (1 +x)8 returnpower9 x = 0.01

10 while (Power(x) < 37.78):11 x += 0.01

12 print("每天努力的参数是:{:.3f}".format(x))

每天努力的参数是:0.020

博客参考《Python程序设计基础》高等教育出版社(第2版) 嵩天,礼欣,黄天羽著

推荐与上述教材配套的北京理工大学 嵩天,礼欣,黄天羽老师的MOOC


版权声明:本文为weixin_42508903原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。