Python 编程中 while 语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务。其基本形式为:
while 条件:
代码1
代码2
代码3
执行语句可以是单个语句或语句块。判断条件可以是任何表达式,任何非零、或非空(null)的值均为true。当判断条件假 false 时,循环结束。
示例:
count = 0
while count < 5:
print(count)
count += 1
print('顶级代码------>')
输出结果如下:
0
1
2
3
4
顶级代码------>
while循环是基于条件工作的,如果条件判断语句永远为 true,循环将会无限的执行下去。
示例:
count = 0
while count < 5:
print(count)
#以上代码块输出的结果为无数个0,因为while的条件判断语句永远为True,因此循环会无限执行下去。
注:纯计算无I/O(Input:输入/Output:输出)的死循环会导致致命的效率问题。
示例:
while True:
1+1
while循环解决了两个问题:
示例:
username = 'egon'
password = '123'
while True:
inp_name = input('请输入您的账号:')
inp_pwd = input('请输入您的密码:')
if inp_name == username and inp_pwd == password:
print('登录成功')
else:
print('账号名或密码错误')
以上代码块解决了重复代码问题和输入正确不需要再次重复问题,但缺点是程序会一直运行下去,需要退出循环。
运行结果如下:
将条件改为False,直到下次循环判断条件时才会生效。
示例:
username = 'egon'
password = '123'
tag = True
while tag:
inp_name = input('请输入您的账号:')
inp_pwd = input('请输入您的密码:')
if inp_name == username and inp_pwd == password:
print('登录成功')
tag = False #之后的代码还会运行,下次循环判断条件时才生效
else:
print('账号名或密码错误')
print('====end====')
只要程序运行到break就会立刻终止本层循环。
示例:
username = 'egon'
password = '123'
while True:
inp_name = input('请输入您的账号:')
inp_pwd = input('请输入您的密码:')
if inp_name == username and inp_pwd == password:
print('登录成功')
break # 立刻终止本层循环,同时下面的print('====end====')语句不会运行
else:
print('账号名或密码错误')
print('====end====')
语法如下:
tag = True
while tag:
while tag:
while tag:
tag = False
#只要一个while循环终止,所有的while循环都将会终止。
示例:
username = 'egon'
password = '123'
tag = True
while tag:
inp_name=input('请输入您的账号:')
inp_pwd=input('请输入您的密码:')
if inp_name == username and inp_pwd == password:
print('登录成功')
while tag:
cmd=input('输入命令的编号>:')
if cmd == 'q':
tag = False
else:
print('命令{x}正在运行'.format(x=cmd))
else:
print('账号名或密码错误')
语法如下:
while True:
while True:
while True:
break
break
break
示例:
username = 'egon'
password = '123'
while True:
inp_name=input('请输入您的账号:')
inp_pwd=input('请输入您的密码:')
if inp_name == username and inp_pwd == password:
print('登录成功')
while True:
cmd=input('输入命令的编号>:')
if cmd == 'q':
break
print('命令{x}正在运行'.format(x=cmd))
break # 立刻终止本层循环
else:
print('账号名或密码错误')
continue:用于结束本次循环,直接进入下一次。
注:在continue之后添加同级代码毫无意义,因为永远无法执行。
示例:
特殊要求:打印01235,跳过4的打印
count = 0
while count < 6:
if count == 4:
count += 1
continue
print(count)
count += 1
输出结果如下:
0
1
2
3
5
else是针对break的。
示例:
count=0
while count < 6:
if count == 4:
count += 1
continue
print(count)
count += 1
else:
print('else包含的代码块会在while循环结束后,并且while循环实在没有被break打断的情况下正常结束的,才不会运行')
输出结果如下:
0
1
2
3
5
username = 'egon'
password = '123'
count = 0
tag = True
while tag:
if count == 3:
print('输错超过3次退出循环')
break
inp_name = input('请输入您的账号:')
inp_pwd = input('请输入您的密码:')
if inp_name == username and inp_pwd == password:
print('登录成功')
while tag:
cmd = input('输入命令的编号>:')
if cmd == 'q':
tag = False
else:
print('命令{x}正在运行'.format(x=cmd))
else:
print('账号名或密码错误')
count += 1
输出结果如下:
①输错3次
②账号密码正确,编号错误(无限循环)
③账号密码编号均正确
username = 'egon'
password = '123'
count = 0
tag = True
while count < 3 and tag == True:
inp_name = input('请输入您的账号:')
inp_pwd = input('请输入您的密码:')
if inp_name == username and inp_pwd == password:
print('登录成功')
while tag:
cmd = input('输入命令的编号>:')
if cmd == 'q':
tag = False
else:
print('命令{x}正在运行'.format(x=cmd))
else:
print('账号名或密码错误')
count += 1
if count >= 3:
print('输错3次,退出')