Day8 while 循环
文章目录
1、逻辑运算符知识补充
1.1、and
print(1 and True)
>>>True
print(1 and 2)
>>>2
# and 连接从左往右,结果成立的决定权在最后一个条件。
print(0 and False)
>>>0
print(1 and False)
>>>False
# 判断结果不成立的决定权在从左往右第一个条件
- 当决定权的那个条件为布尔值时 打印的就是布尔值 为整数 打印的也是整数
1.2、or
print(True or 0)
>>>True
print(False or 1)
>>>1
# or 连接同样从左往右 结果成立的决定权在第一个
print(False or 0)
>>>0
print(0 or False)
>>>False
# 当判断结果不成立时 or的决定权 在最后一个
- 作为决定权 的那个值是什么值打印什么值, 比较运算都算布尔值
1.3、混合
print(0 and True and 1)
>>>0
print(0>2 and 0)
False
#当多种运算时 比较运算与逻辑运算等作为运算条件时 我们都当作布尔值
print(0 and True or 1 and 2)
>>>2
print(0==1 or 1 and 4>3)
>>>True
- 运算优先级(),not,and,or
- 所以当多个运算时我们先算and两边的,再算or两边的
2、while循环
- 当 符合while循环条件时,进入循环,执行循环下的子代码,执行完子代码再次进入到循环条件判断
当循环条件再次符合再次进入子代码以此重复
while +循环条件 :
子代码...
#可以通过子代码中计数器来使循条件不成立
a=0
while a<3:
print('您好',end=' ')
a+=1
>>>您好 您好 您好
2.1、while break
- 循环结束方式:
- 除了代码中自增变量使循环条件不成立外还有 强制结束循环
- 强制结束本层循环 break
- 在循环下的子代码中 执行break 将直接结束本层循环
while True:
print('您好')
if input('输入stop停止:')=='stop':
print('结束')
break
>>>
您好
输入stop停止:ad
您好
输入stop停止:stop
结束
break 嵌套循环的使用
- break 只能够停止本层循环,不能停止循环外的循环,当我们需要将外层循环也停止时就需要用到两个break
- 外层循环停止对应的break要写在他子代码同级的缩进
while True:
print('我是外层的循环')
while True:
print('我是内层的循环')
break
break
2.2、while continue
- continue是停止本次循环,并继续下次循环。
- 与break的区别主要就是 break直接停止了循环,但是continue只是将本次循环停止到这里
- 但会继续判断while的循环条件再次判断是否进行下次循环
a = 0
while a < 1:
print('您好')
a += 1
if input('是否跳过本次循环(y/n)') == 'y':
continue # 当你输入y 执行continue,那他就永远借不到钱
print('借我点钱')
>>>
您好
是否跳过本次循环(y/n)y
2.3、while+else
- while…else 只有当while正常执行结束后会执行elese
- 被break中断不会执行
a = 0
while a < 3:
print('您好')
a += 1
else:
print('借点钱')
>>>
您好
您好
您好
借点钱
a = 0
while a < 3:
print('您好')
a += 1
if a==2:
break # 这里被中断
else:
print('借点钱') # 没有执行
>>>
您好
您好
2.3、死循环与全局标志位
死循环指的是,进入循环后执行代码中没有强制停止或者自主停止的逻辑代码的循环程序
死循环:
b=2
a=1
c=1
while a<3 :
b=b*1000 # 一直循环,给cpu压力
c+=1
print(b,f'第{c}次')
虽没有主动停止代码,但是有输入暂停程序运行
b=2
a=1
c=1
while a<3 :
b=b*1000
c+=1
input('进行下一次') #有等待时间,没事
print(b,f'第{c}次')
全局标志
(可用可不用)
flag = True
while flag:
print(123)
while flag:
print(321)
while flag:
print(222)
flag = False
作业
1、准确说出下列判断的结果(不要执行代码)
V1 = 1
V2 = 3
V3 = 0
V4 = 1
v5 = 1
v6 = False
2、编写一个用户登录程序
用户如果登录失败 则只能尝试三次,用户如果登录成功 则直接结束程序
#设定账号密码
user_name = 'kk'
user_password = '123'
data1 = 1
while data1 <= 3: # 设定循环条件 不超过三次
name_1 = input('请输入您的用户名:').strip() # 接收账号密码
password_1 = input('请输入您的密码:').strip()
if name_1 == user_name and password_1 == user_password: # 比对判断账户密码
print('恭喜你登录成功')
break
else:
if data1 < 3: # 提示用户输错次数
print('登录失败,您还能尝试%i次' % (3 - data1))
else:
print('登录失败三次,程序已关闭')
break
data1 += 1 # 循环条件变量
3、编写一个用户登录程序
用户如果登录失败 可以无限制尝试
用户如果登录成功 则进入内层循环 获取用户输入的指令
# 设定账号密码
user_name = 'kk'
user_password = '123'
while True:
name_2 = input('请输入您的用户名:') # 接收账号密码
password_2 = input('请输入您的密码:')
if name_2 == user_name and password_2 == user_password: # 判断
print('登录成功')
while True: # 直接进入循坏 保证无限制打印
data2 = input('请输入您的指令(退出请输入:q):')
print(f'正在执行你的指令:{data2}') # 保证先打印后执行
if data2 == 'q':
print('退出成功')
break
break # 退出外层循环
else:
print('账号或密码错误')
4、编写猜年龄的游戏(拔高练习 尝试编写)
用户有三次猜测的机会 如果用完则提示用户是否继续尝试
用户输入y则继续给三次机会 如果用户输入q则直接结束程序
# # 4、猜年龄
import random # 引用random模块
item = input('游戏请按1\n退出请按2\n请输入:') # 启动选项
while item == '1':
ming_age = (random.randint(1, 100)) # 在1至100中随机取值 作为年龄
print(ming_age)
data3 = 1 # 初始猜测次数为1
while data3 <= 3:
user_guess = (input('猜猜小明几岁了:'))
if user_guess.isdigit(): # 判断字符串中是否是纯数字
user_guess = int(user_guess) # 将字符串数子转为整型 为了做比较运算
else:
print('给我打数字')
continue # 提示用户打数字 并重新开始本次循环
if user_guess == ming_age: # 答案比对
print('恭喜你猜对了')
break
elif user_guess < ming_age:
print('猜小了')
else:
print('猜大了')
if data3 == 3: # 直接锁定第三次程序末尾来询问 是否再猜三次
data4 = input('你已猜错三次啦,是否再来三次(y/q):')
if data4 == 'y':
data3 = 0 # 因后续还有 变量赋值运算+1,所以这里初始值直接设零
else:
break
data3 += 1
print('游戏结束')
item = input('重新游戏请按1\n关闭请按2\n请输入:') # 游戏结束选项
else:
print('游戏已关闭')