while 控制循环
1.whlie语法:
while 条件语句: #逻辑、成员、比较、空数据,空数据=False,非空数据=True、布尔值 代码块(子语句)
2.执行规律
首先判断while后面的条件表达式是否成立 如果True 那就执行代码块,执行完毕后返回while继续判断,如果是True就继续执行代码块,反复循环,直到对表达式的判断为false为止 如果False,则不进入内部执行代码块
3.死循环
死循环:一直循环,不会结束
while True:
print('进入死循环')
4.如何解决死循环
防止代码进入死循环:添加一个变量来控制循环次数
a = 1 #初始值
while a <= 10: #通过变量限制循环次数
print('循环次数:{0}'.format(a))
print('添加变量防止进入死循环')
a += 1 # 每循环一次 +1
练习:
利用while循环,实现1-100的整数相加
a = 1
sum = 0
while 1 <= a <= 100:
sum = sum + a
a += 1
print(sum)
5.while和if打匹配使用用到break和continue,如下:
一个足球队在寻找年龄在10岁到12岁的小女孩(包括10岁和12岁)加入。编写一个程序,询问用户的性别(m表示男性,f表示女性)和年龄,然后显示一条消息指出这个人是否可以加入球队,询问10次后,输出满足条件的总人数。 解题思路:利用break continue控制死循环,while和if搭配使用
i = 10 # 询问统计次数
count = 0 # 统计复合条件的次数
while True:
sex = input('性别:')
if sex == 'f':
i -= 1 # 询问一次减一次
age = int(input('年龄:'))
if 10 <= age <= 12:
print('符合')
count += 1 # 通过一次加一次
else:
print('遗憾')
else:
print('遗憾')
i -= 1 # 询问一次减一次
if i == 0:
break # 结束/跳出循环
else:
continue # 结束本次循环,进入下一轮循环
练习:万科笔试题 例如:passwd = {"admin": "123321", "user1": "123456"} 1、设计一个登陆程序,不同的用户名和对应密码存在一个字典里面,输入正确地用户和密码去登陆; 2、首先输入用户名,如果用户名不存在或者为空,则一直提示输入正确的用户名; 3、当用户名正确地时候,提示去输入密码,如果密码跟用户名不对应,则提示密码错误请重新输入; 4、如果密码输入错误超过三次,中断程序运行; 5、当输入密码错误时,提示还有几次机会; 6、用户名和密码都输入成功的时候,提示登陆成功!
passwd = {"admin": "123321", "user1": "123456"}
count = 3 # 控制输入密码的次数
while True:
u_name = input('请输入用户名:')
if u_name in passwd.keys(): # 此处取字典中的key值 》字典名.keys()
while count > 0: # 循环控制输入密码的次数
pwd = input('请输入密码:')
if pwd == passwd[u_name]: # 此处的密码要取输入的对应的字典中的键值对,字典的取值 》字典名[key]
print('登陆成功')
break # 跳出登陆成功的循环
else:
print('密码错误请重新输入:')
count -= 1 # 输入密码后 减1
print('您还有{0}次机会!'.format(count)) # 格式化输出,提示语
break # 跳出密码错吴的循环
elif u_name not in passwd.keys() or u_name == '': # 用户名不存在或为空的情况
print('请输入正确的用户名:')