同学们,这节课我们将阿凡提智斗巴以地主。在一个阳光明媚的日子,巴依老爷找到阿凡提,让他帮忙干活,并答应每月支付200元作为报酬。阿凡提微笑着摇了摇头,提出了一个有趣的要求:“第一天给我1毛,第二天2毛,第三天4毛,之后每天的钱都是前一天的2倍。”巴依老爷一听,欣然答应。不到半个月,巴依财主大呼上当,叫苦不迭,最终欠下阿凡提一大笔钱。叮小马觉得很神奇,决定算一下阿凡提一个月可以拿多少钱。
同学们知道,如何计算阿凡提一个月拿多少钱吗?
我知道,我们只需要计算阿凡提每天可以拿多少钱,再把30天内拿的钱累加,就可以计算出阿凡提一个月拿多少钱了。
说的很好。
我们要想计算阿凡提一个月应得到的钱,首先要计算阿凡提每天应得到的钱。
阿凡提第一天得到1毛钱,第二天得到2毛钱,第三天得到4毛钱,以后每天得到的钱是前一天的2倍,由此可以得出天数和钱数的对应关系:每天应得到的钱=0.1×2(天数—1)次方。
要想计算得出一个月30天每天应得到的钱,需要重复计算30次,流程图如下图所示。重复计算30次,我们在python中可以使用for循环语句来实现。
For循环的循环格式为:for 变量 in 序列:其中变量指的是变量序列的变量名,序列指的是可迭代的对象。需要注意的是,for语句的结尾有一个冒号,该冒号用来明确代码块的开始,不可省略。python代码示例如下:for day in range(1,31):,money=0.1*2**(day—1),print(day,money)。
程序中的range表达的是在一定范围,其语法格式如上所示:range([start,]end[,step])。其中start为循环开始的起点,可省略不写,若省略,则默认值为0。例如:range(5)等价于range(0,5)。end表示范围的终点,是循环结束的地方,不可省略,终点不包括end的值。例如:range(0,5)的值为[0,1,2,3,4]。step表示范围的步长,可以省略,若省略,则默认值为1。例如:range(0,5,3)的值为[0,3]。
同时如果我们想要计算一个月30的总金额,就要连续累加从第1天到第30天的金额之和,流程如下图所示。这个过程我们累加截止当日一共得到的钱,同样还是用到for循环。for 天数 in 30天范围内:计算当日应该给的钱,计算截止当日一共应该给的钱,打印输出阿凡提应得到的总额。
python代码示例如下,total= 0,for day in range(1,31):,money= 0.1 *2 ** (day-1),total+ = money,print(total)。
特别注意的是,在这个过程中我们创建了一个新变量totle代表金额之和,total+=money等价于total=total+money。
让我们回忆一下今天所讲的内容吧,如果我们想要计算阿凡提一个月拿多少钱,我们首先要计算阿凡提每天应得到的钱,然后再计算阿凡提累计一个月应得到的钱。要想计算每天应得到的钱,首先分析天数与金额的关系,然后利用循环计算30天应得到的钱。计算出来了每天得到的钱之后,可以创建累计变量,初始化为0,利用循环计算累计30天总共应得到的钱。
同学们,刚才的讲解你听懂了吗?现在,请大家在自己的电脑上运行这段代码,看看阿凡提一个月能拿到多少钱,是不是比巴依老爷预想的要多很多呢?