1.while循环
1.1while循环格式
while语句通过后面的条件选择是否执行子代码块。
条件为真:则执行代码块内的语句,执行完后会再次放回到while语句的开始处,
再次对条件进行判断,为真则继续执行子代码块之后又回到条件判断···,为假才会跳过子代码块往后执行。
* 死循环:while的条件永远为真,一直执行子代码块。设计程序的时候不要出现没有阻塞状态的死循环。
格式:
1. while 关键字
2. 条件 + :
3. 代码块
1.2实例
1.死循环
终端不停的输出···打开计算机的控制面板可以看到计算机CPU的使用率直接起飞↑。
Created with Raphaël 2.3.0
开始
while True
print(1)
结束
yes
no
while True :
print ( 1 )
2.指定次数循环
循环 5 次停止程序的运行。
Created with Raphaël 2.3.0
开始
x=0
判断x<5
x的值
x += 1
结束
yes
no
x = 0
while x < 5 :
print ( x)
x += 1
"""
0
1
2
3
4
"""
3.指定输入结束循环
获取用户输入,输入 'q' 结束循环。
input 会阻塞程序的运行,要求输入,不然一直阻塞。
while input ( "请输入执行的代码(按下q退出):" ) != 'q' :
print ( '代码执行完毕!' )
"""
请输入执行的代码(按下q退出):das
代码执行完毕!
请输入执行的代码(按下q退出):asd
代码执行完毕!
请输入执行的代码(按下q退出):q
Process finished with exit code 0
"""
4.模拟登入功能
* 许多网站上登入账户都是给三次机会,三次机会过后被限制一段时间内不能登入。 *
模拟账户登入,账户密码输入正确,打印登入成功,结束程序,
否则打印账户或密码错误,之后再次获取用户的输入,三次都出错退出程序。
Created with Raphaël 2.3.0
开始
num=0
num < 3
用户输入
账户&密码核对
登入成功
结束
num += 1
错误信息
yes
no
yes
no
username = 'kid'
password = '123'
num = 0
while num < 3 :
input_username = input ( '输入用户名>>>>>:' )
input_password = input ( '输入用户密码>>>>:' )
if input_username == username and input_password == password:
print ( '登入成功' )
num = 3
else :
num += 1
print ( '账户或密码错误,近期还可以尝试%s次' % ( 3 - num) )
1.3break语句
关键字break,用于while代码块内,当程序执行break时,立刻跳出本层循环。
Created with Raphaël 2.3.0
开始
num = 0
while True
print(num)
num += 1
num == 10
break
程序结束
结束框
yes
yes
no
num = 0
while True :
print ( num)
num += 1
if num == 10 :
break
print ( '程序结束' )
1.4break实例
1.模拟登入功能
模拟账户登入,账户密码输入正确,打印登入成功,结束程序。
否则要求不再次输入,直到输入正确才停止。
使用break。
Created with Raphaël 2.3.0
开始
while True
获取账户密码
账户&密码正确
登入成功
break
结束
yes
yes
no
username = 'kid'
password = '123'
while True :
input_username = input ( '输入用户名>>>>>:' )
input_password = input ( '输入用户密码>>>>:' )
if input_username == username and input_password == password:
print ( '登入成功' )
break
print ( '请继续输入!!!' )
2.嵌套实例
模拟账户登入,要求输入用户名,判断用户是否正确
不正确打印:用户不存在,要求继续输入用户名。
存在则要求输入密码,再判断密码是否正确 , 正确则打印 : 登入成功,退出程序,
否则打印密码错误,要求继续输入密码。
Created with Raphaël 2.3.0
开始
while True
获取账户名
账户名是否正确
获取账户密码
账户密码是否正确
break
登入成功
结束
密码不正确
用户不存在
yes
yes
no
yes
no
username = 'kid'
password = '123'
while True :
input_username = input ( '输入用户名>>>>>:' )
if input_username == username:
while True :
input_password = input ( '输入用户密码>>>>:' )
if input_password == password:
print ( '登入成功' )
break
else :
print ( '密码错误!' )
break
else :
print ( '用户不存在!' )
3.标志位实例
* 不能使用break
模拟账户登入,y要求输入用户名,判断用户是否正确
不正确打印:用户不存在,要求继续输入用户名。
存在则要求输入密码,再判断密码是否正确 , 正确则打印 : 登入成功,退出程序,
否则打印密码错误,要求继续输入密码。
Created with Raphaël 2.3.0
开始
is_out = True
is_out
获取用户名
用户是否存在
获取用户密码
密码是否正确
登入成功
is_out = False
结束
密码错误
用户不存在
yes
no
yes
no
yes
no
username = 'kid'
password = '123'
is_out = True
while is_out:
input_username = input ( '输入用户名>>>>>:' )
if input_username == username:
while is_out:
input_password = input ( '输入用户密码>>>>:' )
if input_password == password:
print ( '登入成功' )
is_out = False
else :
print ( '密码错误!' )
else :
print ( '用户不存在!' )
4.猜数字游戏
用户可以有三次猜错的机会,错了提示 猜大了 还是 猜小了,如果过程中猜对了直接退出。
三次机会使用完后询问是否继续玩,输入q退出游戏,否则继续。
Created with Raphaël 2.3.0
开始
num=0 | is_out = True
is_out
获取输入
判断输入值
猜对了
break
结束
比实际值 大
猜大了
num += 1
剩下3-num次机会
num == 3
q退出,否则继续
判断是否为q
is_out = False
flowchat就是垃圾操
结束
num = 0
猜小了
yes
no
yes
no
yes
no
yes
no
yes
no
age = 21
num = 0
is_out = True
while is_out:
guess_age = int ( input ( '输出你猜的数字:' ) )
if guess_age == age:
print ( '回到正确' )
break
else :
if guess_age > age:
print ( '猜大了' )
else :
print ( '猜小了' )
num += 1
print ( '猜错了,你还有%s次机会' % ( 3 - num) )
if num == 3 :
if input ( '回复q退出否则继续' ) == 'q' :
is_out = False
num = 0
1.5continue
关键字continue,用于while代码块内,当程序执行continue时,立刻结束本次循环。
x = 0
while x < 10 :
if x == 4 :
x += 1
continue
print ( x)
x += 1
很多情况下可以使用方法不执行某处循环。
x = 0
while x < 10 :
if x != 4 :
print ( x)
x += 1
1.6while+else
当while循环正确执行执行完毕后接着执行else,如果,被break语句中断循环则不执行。
标准位退出循环,continue 结束某次循环不影响。
is_out = True
x = 0
while is_out:
if x == 4 :
is_out = False
print ( x, end= '' )
x += 1
else :
print ( 'x' )
x = 0
while x < 6 :
if x == 4 :
x += 1
continue
print ( x, end= '' )
x += 1
else :
print ( 'x' )
x = 0
while x < 6 :
if x == 4 :
x += 1
break
print ( x, end= '' )
x += 1
else :
print ( 'x' )
"""
01234x
01235x
0123
"""
2.练习
1. 使用while循环输出 1 2 3 4 5 6 8 9 10
2. 求 1 - 100 的所有数的和
3. 输出 1 - 100 内的所有奇数
4. 输出 1 - 100 内的所有偶数
5. 求 1 - 2 + 3 - 4 + 5 . . . 99 的所有数的和
6. 用户登陆(三次机会重试)
7 :猜年龄游戏
要求:
允许用户最多尝试 3 次, 3 次都没猜对的话,就直接退出,如果猜对了,打印恭喜信息并退出
8 :猜年龄游戏升级版(选做题)
要求:
允许用户最多尝试 3 次
每尝试 3 次后,如果还没猜对,就问用户是否还想继续玩,如果回答Y或y ,
就继续让其猜 3 次,以此往复,如果回答N或n,就退出程序
如何猜对了,就直接退出