问题分析:一年365天,每天进步1%,累计进步多少呢?
1.01的365次方
一年365天,每天退步1%,累计退步多少呢?
0.99的365次方
如果是“三天打鱼两天晒网”呢?
如果是”双休日还不退步呢“?
问题一:1%o的力量
一年365天,每天进步1%o,累计进步多少呢?
一年365天,每天退步1%o,累计退步多少呢?
采用数学公式的话,计算为进步为1.001的365次方
退步为0.999的365次方
采用代码如何进行完成呢?:
代码界面:
#DayDayUpQ1.py dayup=pow(1.001,365)#pow函数可以进行幂的运算,将计算结果赋给dayup这个变量 daydown=pow(0.999,365) print("向上:{:.2f},向下:{:.2f}".format(dayup,daydown))#{:.2f}表示将变量dayup和daydown分别赋值到这个位置时取小数点后两位
运行界面:
结论:每天进步1%o的力量,一年365天进步1.44倍
每天退步1%o的力量,一年365天只剩下0.69倍
问题二:5%o的力量和1%的力量
一年365天,每天进步5%o或者1%的力量,累计进步多少呢?
一年365天,每天退步5%o或者1%的力量,累计退步多少呢?
采用数学公式的话,计算为进步为1.005的365次方,1.01的人365次方
退步为0.999的365次方,0.99的365次方
5%o的力量
代码实例:
#Day.p dayfactor=0.005#设置变量的目的在于当更改属性值大小的时候只更改变量的数值的的大小即可,其他不用改变,比较方便快捷 dayup=pow(1+dayfactor,365) daydown=pow(1-dayfactor,365) print("向上:{:.2f},向下:{:.2f}".format(dayup,daydown))
运行界面:
1%的力量:
代码界面:
#Day.p dayfactor=0.01#设置变量的目的在于当更改属性值大小的时候只更改变量的数值的的大小即可,其他不用改变,比较方便快捷 dayup=pow(1+dayfactor,365) daydown=pow(1-dayfactor,365) print("向上:{:.2f},向下:{:.2f}".format(dayup,daydown))
运行界面:
结论:每天进步5%o的力量,一年365天进步6.17倍
每天退步5%o的力量,一年365天只剩下0.16倍;
每天进步1%的力量,一年365天进步37.78倍
每天退步1%的力量,一年365天只剩下0.03倍
问题三:工作日的力量
一年365天,一周5个工作日,每天进步1%,
一年365天,一周2个休息日,每天退步1%
这种工作日的力量,如何呢?
代码界面:
# DayDayQ3.py
dayup = 1.0
dayfactor = 0.01
for i in range(365):#临时变量i用于保存每次循环访问的目标对象中的元素,365为循环的次数,即从0到364次。
if i % 7 in [6, 0]:
"""
%为两个操作数相除进行取余数的运算,if i % 7 in [6,0]是为了进行判断i与7相除的结果是否在6和0之间,如果在6和0之间,则进行运算
否则,执行else语句里面的。
一周有7天,1-5为工作日,周六、日为休息日。当一个数开始循环的时候,这个数除以7进行取余数,余数为1-5代表对应的周一到周五,
余数为6或者0时为周六和周日
"""
dayup = dayup * (1 - dayfactor)
"""
for语句,进行遍历循环,逐一访问目标对象中的数据,
格式如下:for 临时变量 in 目标对象:
目标对象可以是字符串、文件或后续章节中将会学习的组合数据类型
临时变量用于保存每次循环访问的目标对象中的元素
目标对象的元素个数决定了循环的次数,目标对象中的元素被访问完之后循环结束
for语句可以与range()函数搭配,range()函数可以生成一个由整数组成的可迭代对象(可简单理解为支持使用for循环遍历的对象)
"""
else:
dayup = dayup * (1+dayfactor)
print("工作日的力量:{:.2f}".format(dayup))
运行界面:
结论:工作日进步1%,休息日退步1%,一年365天下来进步为初始值的4.63倍。
问题四:工作日的努力
工作日模式要努力到什么水平,才能与每天努力1%一样
A君:一年365天,每天进步1%,不停歇
B君:一年365天,每天工作5天休息2天,休息日下降1%,要多努力呢?
A君:代码界面:
#Day.p dayfactor=0.01#设置变量的目的在于当更改属性值大小的时候只更改变量的数值的的大小即可,其他不用改变,比较方便快捷 dayup=pow(1+dayfactor,365) print("向上:{:.2f}".format(dayup))
运行界面:
可知,A君在一年365天,每天进步1%,不停歇的话,最后进步是初始值的37.78倍。
B君:一年365天,每天工作5天休息2天,休息日下降1%,要多努力呢?
对于这个问题,因为计算机的处理速度很快,所以我们可以使用试错的方法进行运算
我们设计的流程图如下:
当我们了解到a君一年后会进步37.78时,我们无法清楚B君应该在工作日进步多少的前提下,我们可以假设B君工作日每天进步1%,然后出来的运算结果与A君的运算结果进行比较,然后再逐一增加。
在这个过程中我们可以用到函数。
代码界面:
#DayDayUpQ4.py def dayUP(df): """ def保留字用于定义函数 首先我们定义一个函数为dayUP,他的参数为df,df是一个占位符,使用df表示dayfactor的简称。 根据df参数计算工作日力量的函数,参数不同,这段代码可以共用。 开发人员可以根据自己的需求定义函数。Python使用def关键字来定义函数,其语法格式如下: def 函数名 ([参数列表]): ["""文档字符串"""] 函数体 [return语句] 以上语法格式的相关说明如下。 def关键字:函数的开始标志 函数名:函数的唯一标识,遵循标识符的命名规则 参数列表:负责接收传入函数中的数据,可以包含一个或多个参数,也可以为空 冒号:函数体的开始标志 文档字符串:由一对三引号包裹的、用于说明函数功能的字符串,可以省略。 函数体:实现函数功能的具体代码 return语句:返回函数的处理结果给调用方,是函数的结束标志。若函数没有返回值,可以省略return语句。 """ dayup=1 for i in range(365): if i % 7 in[6,0]: dayup=dayup*(1-0.01) else: dayup=dayup*(1+df) return dayup dayfactor=0.01 while dayUP(dayfactor)<37.78: dayfactor +=0.001 """ while语句一般用于实现条件循环,该语句由while关键字、循环条件和冒号组成。whlie语句和从属于该语句的代码段组成循环结构,其语法格式如下: while循环格式:while 循环条件: 代码段 其中代码运行解释为判断所定义的那个函数是否小于37.78,如果小于则这个函数的参数进行添加0.001,慢慢进行添加。 使用while语句进行调用dayUP函数 """ print("工作日的努力参数是:{:.3f}".format(dayfactor))
运行界面:
结论:工作日努力1.9%,休息日休息,比起每天努力1%的多。