内容正文:
while 循环
单位
署名
4.4.2
复习旧知
if (条件表达式):
语句A
条件表达式
语句A
Y
N
缩进
冒号
什么是信息技术
复习旧知
序列中是否有项
执行循环体
是
否
for 循环变量 in 列表:
语句或语句组
缩进
冒号
什么是信息技术
复习旧知
使用已经学过的编程知识,计算100以内(包括100)所 有偶数的和
s=1
for i in
print("100以内偶数的和是:",s)
range(0,101,2):
s=s+i
什么是信息技术
情景创设
项目小组为了筹集购买奖品和纪念品的费用,准备开展一次募捐活动,计划向第一个资助人募集20元,向第二个资助人募集25元,后一个比前一个多募捐5元,依次下去,第几个人募捐后筹集到的总费用累计超过500元?
什么是信息技术
分析问题
项目小组为了筹集购买奖品和纪念品的费用,准备开展一次募捐活动,计划向第一个资助人募集20元,向第二个资助人募集25元,后一个比前一个多募捐5元,依次下去,第几个人募捐后筹集到的总费用累计超过500元?
已知条件
首笔捐款:20 元
递增量:每人多捐 5 元
目标:累计总额 > 500 元
要求:逐次累加,找到达标时的最小人数
什么是信息技术
分析问题
设所拉赞助人的数量为num(num=1,2,3,...),初始值为1;每次募集的费用为money,初始值为20;赞助人数每次递增1人,单次募集费用每次增加5元,每次募集之后总费用为sum,是历次募捐金额的累加,初始值为20;于是这个问题就可以转化为:当 时,求 的值。
sum>=500
num
什么是信息技术
for 循环的核心是已知循环次数的遍历,本问题需逐次累加捐款,无法提前确定累加次数,仅明确循环停止条件(sum>=500 )。
分析问题
用 for 循环可以解决吗?
什么是信息技术
while (表达式):
语句或语句组
下条语句
分析问题
需要使用当型循环while循环
循环体中必须有改变条件表达式值的语句,否则将成为死循环。
关系表达式或逻辑表达式
值应该是一个逻辑值真(True)或假(False)。
语句while后面没有缩进的第一条语句
冒号
缩进
什么是信息技术
设计算法
根据上述的分析,设计算法如下:
1.令num=1;
2.令money=20;
3.令sums=20;
4.num=num+1;
5.money=money+5;
6.sums=sums+money;
7.如果sum<500,则返回步骤4;
8输出num的值;
9结束。
设所拉赞助人的数量为num(num=1,2,3,...),初始值为1
每次募集的费用为money,初始值为20
每次募集之后总费用为sums,初始值为20
赞助人数每次递增1人,
单次募集费用每次增加5元,
sum是历次募捐金额的累加;则sums可以用如下的式子表示:sums=20+25+30+...
于是这个问题就可以转化为:当sums>=500时,求num的值。
什么是信息技术
编写程序
1.令num=1;
2.令money=20;
3.令sums=20;
4.num=num+1;
5.money=money+5;
6.sums=sums+money;
7.如果sum<500,则返回步骤4;
8输出num的值;
9结束。
num=l
money=20
sums=20
while sum<500 :
num=num+l
money=money+5
sums=sums+money
print(num)
根据分析,编写程序
调试运行
交流一
如何根据上述解法的算法描述,画出其算法流程图?
1.令num=1;
2.令money=20;
3.令sums=20;
4.num=num+1;
5.money=money+5;
6.sums=sums+money;
7.如果sum<500,则返回步骤4;
8输出num的值;
9结束。
交流二
对于上述问题的解法,如果改变几个变量的初始值,假设令"num=0,money=20,sums=0",那么,while循环体中的程序段应该如何编写?它们之间的语序能改变吗?为什么?
money=20
while sums<500 :
print(num)
num=0
sums=0
num=1
sums=20
?
num=num+l
money=money+5
sums=sums+money
sums=sums+money
num=num+l
money=money+5
实践一
使用while循环计算100以内(包括100)所有偶数的和
i=2
sum_even=0
while i<=100:
sum_even=sum_even+i
i=i+2
print(“100以内所有偶数的和为:”,sum_even)
实践二
使用while循环计算100以内(包括100)所有数的和
i = 1
sum_total = 0
while i <= 100:
sum_total += i
i += 1
print("1到100的累加和:", sum_total) # 输出:5050
实践三
输入一个正整数 n,用 while 循环计算 n!(n 的阶乘)
n = int(input("请输入一个正整数:"))
result = 1
i = 1
while i <= n:
result *= i
i += 1
print(f"{n}的阶乘是:", result)
实践三
输入一个正整数 n,用 while 循环计算 n!(n 的阶乘)
n = int(input("请输入一个正整数:"))
result = 1
i = 1
while i <= n:
result *= i
i += 1
print(f"{n}的阶乘是:", result)
实践四
问题描述:程序随机生成 1-100 的数字,用户输入猜测值,程序提示 “太大了” 或 “太小了”,直到猜对为止
体验:
import random
target = random.randint(1, 100)
guess = 0
while guess != target:
guess = int(input("请猜一个1-100之间的数字:"))
if guess < target:
print("太小了,再试试!")
elif guess > target:
print("太大了,再试试!")
print("恭喜你,猜对了!")
课堂总结
while循环核心:
条件满足就执行,三要素(初始化、条件、更改变量)不能少,更新变量防死循环
猜数字小游戏
猜一个1-100之间的数字,看看你需要多少次才能猜中!
目标数字范围
1 - 100
已猜测次数
0
剩余机会
10
请输入你的猜测:
猜!
重新开始
游戏开始!请输入1到100之间的数字。
猜测历史:
游戏规则:
游戏会随机生成一个1到100之间的整数作为目标数字
你需要在输入框中输入你的猜测数字
每次猜测后,系统会提示你的猜测是"太大"、"太小"还是"正确"
你有10次机会猜中目标数字
尝试用最少的次数猜中目标数字!
$