案例:使用while循环求1..100的和
思考:
先套用原有基础模式,之后再思考其他的。
while循环的基本语法:
对于循环次数已知的情况,建议使用while循环
因为是知道次数的,所以可以用一个计数器。程序里面,计数器一般都是从0开始的,而不是从1开始。
但是如果真的想要从1开始计数,也没关系。
# ① 定义一个计数器(初始化一个计数器)
i = 0或1
# ② 编写while循环结构条件
while 循环条件(判断 计数器 是否达到了目标位置):
循环体1
循环体2
...
# ③ 在循环内部更新计数器-------------如果不更新,那么一直都是一个数,原地不动。让他们+1,可以在某个时间点,某个数值点,达到预定的地方。
i = i + 1 或 i += 1
接下来继续,要求是1---100的,OK,知道了是有计算次数的,
开始套用:
定义一个while循环,让其可以帮助我们计算 1 + 2 + 3 + 4 + 5 ... + 100,结果:5050
一步步来:
① 使用while循环,循环100次
# 第一步:初始化计数器----因为是从1开始加的,所以这里不用i =0 ,否则后面还要每个+1。
i = 1
# 第二步:编写while循环条件
while i <= 100:
print(i) # 1 2 3 4 5 6 7 8 9 10...
# 第三步:循环内更新计数器的值
i += 1
先运行试试-----图示
继续思考
我们小时候学习数学,计算结果,也是 1 + 2 + 3 +…… = ? 那么接下来,转换成代码
1.看需求,因为想要的是一个和,那么现在是没有东西,也就是变量,可以显示表达这个和的(上面的红色问号?),所以,先定义一个变量。就叫result。 1 + 2 + 3 +…… = result
result 英 /rɪˈzʌlt/ n. 结果,后果;(比赛或选举的)结果;(通过调查、研究、计算而获得的)结果;
2.变量之后要怎么定义? 上图中,已经看到,while循环中,每次都是+1,那么result怎么把这些值,都综合在一起进行相加?-----------------把result和 i 进行关联。想办法,让result = 变量i累加后的结果。我们先把 result = 0 ,之后不管怎么相加,都不影响。
3.开始关联result和 i 。
第一次,我的结果是1,第二次,结果是2.-------我用每次的次数+每次的结果 =所有次数的结果(1--100每次的结果的和)
接下来细化:
第一次循环式,i = 1,result = 0,如果想获取累加的结构,则result = result + i
1 = 0 + 1 -------------这个时候,result = 1,因为代码从上而下进行,一直覆盖。result = 1 这个值,继续给下面用,因为计数器更新,i += 1,i变成2,i= 2 这个值,继续给下面用,每次我们打印一次看看结果对不对。
第二次循环式,然后i <= 100,i 此时 = 2,继续执行循环内部代码
i = 2,result = 1,如果想获取累加的结构,则result = result + i
3= 1 + 2 -------------这个时候,result = 2,因为代码从上而下进行,一直覆盖。result = 2 这个值,继续给下面用,每次我们打印一次看看结果对不对。
理清现在结果:第一次+第二次 此时计算就是 :1+2=3 ok 和上面我们计算的结果一致,验证自己思考和代码是没有错的。就很棒。下面开始写代码
代码:
# 第一步:初始化计数器
i = 1
# 第四步:定义一个result变量,用于接收累加后的结果
result = 0
# 第二步:编写循环条件
while i <= 100:
# 第五步:循环累加变量i
result = result + i
print(f'现在是第{i}次计算,现在的结果:{result}')
# 第三步:更新计数器的值
i += 1
图示:
之后可以进行代码简化:
注:跳出来的print,i的次数会加1,但是后面result结果是正确的,所以可以把前面的'现在是第{i}次计算',删除掉,不影响的。
最终代码:
# 第一步:初始化计数器 i = 1 # 第四步:定义一个result变量,用于接收累加后的结果 result = 0 # 第二步:编写循环条件 while i <= 100: # 第五步:循环累加变量i result += i # 第三步:更新计数器的值 i += 1 print(f'1..100的和是:{result}')
最终图示: