目录
练习题
1、如何用while语句实现1~100的累加
2、如何用while语句实现1~100之间偶数的累加
---------------------------------------------------------------------------------------------------------------------------------
分析(题1)
对于实现1到100的累加,我们可以先想想1到100是怎样累加的,是不是 1+2+3+...+100 这样
解下来我们来逐步拆解一下
首先要明确的是,在python中实现数据相加是通过什么来实现的?是不是变量,因为数据是存储在变量当中的。
接下来是不是要分析相加的步骤是什么?是不是先1和2相加,之后将1和2相加之后的结果在与3相加,依次类推,这样实际上我们只需要两个变量就行了,一个用来储存起始的变量(i)和一个用来储存两两相加结果的变量(result)。那既然有两个变量,而变量又是存储数据的地方,i这个变量我们可以给他个1这个起始数据,那result呢,我们应该给他哪个数据呢?是不是0。当然这是候又会蹦出另一个问题,我们在最后分析。
最后那我们怎么用while语句去实现呢?根据while语句的特性(根据条件是否成立来选择执行或跳出循环),我们可以让条件的判断是某个不断加一变量小于等于100(前提是起始为1,i这个变量可以完美解决这个问题)。这样一来,让i这个不断加一的变量与result这个存储结果的变量不断相加就可以实现上述要求。
这样我们就可以写出下面这串代码。
---------------------------------------------------------------------------------------------------------------------------------
代码(题1)
i = 1
result = 0
while i <= 100:
result += i
i += 1
print(result)
运行结果如下:
结果为5050,那这个结果对不对呢?我们可以进行验证。怎么验证,我们想想这个累加问题验证难的原因是什么?是不是数太多、太麻烦。那我们抓住这个主要矛盾,把这一百个数给他减少到个位数不就方便我们验证了吗。
---------------------------------------------------------------------------------------------------------------------------------
验证(题1)
我们将上述问题改成1、2和3这三个数累加
i = 1
result = 0
while i <= 3:
result += i
i += 1
print(result)
这个结果显然是6,我们在python中运行一下
可以看到我们的代码完美的实现了需求。
---------------------------------------------------------------------------------------------------------------------------------
分析(题2)思路一
其实题2和题1十分类似,分析思路也大差不差,但是要注意其中的区别。很明显看到题2中多了一个要求,也是条件。看到条件这两个字我们想到了什么?是不是条件语句。显然我们需要对相加的数进行是不是偶数的判断。那怎么对是不是偶数进行判断呢?我们想想偶数的特点,什么叫偶数,能被2整除的数叫偶数,这句话是不是也是说一个数对2取余数为0。于是便有了条件判断的具体语句。
这样我们就写下如下代码
---------------------------------------------------------------------------------------------------------------------------------
代码(题2)思路一
i = 1
result = 0
while i <= 100:
if i % 2 == 0:
result += i
i += 1
print(result)
运行结果如下:
---------------------------------------------------------------------------------------------------------------------------------
分析(题2)思路二
其实我们还有另外一个思路,我们不用if语句,直接从源头下手,分析思路还是同题1类似,但要注意它们的不同。既然是偶数相加,那我们知道偶数加偶数一定是偶数,而相邻的偶数之间相差2。由这两个特性我们不难想到让i起始为2,然后每次加2不就可以了吗?代码实现如下
---------------------------------------------------------------------------------------------------------------------------------
代码(题2)思路二
i = 2
result = 0
while i <= 100:
result += i
i += 2
print(result)
运行结果如下:
可以看到两次结果相同
---------------------------------------------------------------------------------------------------------------------------------
验证(题2)
验证思路同上
# 思路一
i = 1
result = 0
while i <= 6:
if i % 2 == 0:
result += i
i += 1
print(result)
# 思路二
i = 2
result = 0
while i <= 6:
result += i
i += 2
print(result)