昨日作业解题思路概念图
age = 28
height = 175
weight = 99
is_beautiful = True
if 18 <= age < 22 and height > 170 and weight < 100 and is_beautiful:
print('加微信吧')
else:
print('不好意思 认错人了!')
# 1.获取用户名
name = input('name>>>:')
# 2.判断用户身份
if name == 'jason':
print('超级管理员')
elif name == 'tom':
print('普通管理员')
elif name == 'jack' or name == 'rain': # 正确写法
print('业务主管')
else:
print('普通用户')
# 1.先定义出黑名单用户
black_user_list = ['jason', 'kevin', 'tony']
# 2.获取用户的用户名
username = input('username>>>:')
# 3.判断用户名是否在黑名单中
if username not in black_user_list:
# 4.让用户输入密码
password = input('password>>>:')
# 5.判断用户名和密码是否正确
if username == 'oscar' and password == '123':
print('欢迎oscar大驾光临')
else:
print('用户名或密码错误')
else:
print('你永久拉黑了 滚蛋吧')
今日内容
- and
eg:
print(1 == 2 and 3)
# Flase
因为运算符左边不成立为Flase,所以后面都不用看了,直接为Flase
eg:
print(1 == 1 and 3)
# 3
这里就会想为什么输出的不是True呢?
因为运算符and的左边是成立的,为True;然后还需要看右边,但是右边为一个具体的数据值,当运算符中输出条件为具体的数据值的时候,这个时候打印出来的就是这个数据值- or
eg:
print(1 == 1 or 3)
# True
因为根据or的运算法,这里当左边已经成立的时候,后面就已经不用看了,因为左边不是一个具体的数据值,而是带有比较的条件,所有直接输出True
eg:
print(1 or 10 > 20)
# 1
这里因为左边数据值1对应的布尔值为True,所以可以直接输出,但是1是一个具体的数据值,所以直接打印1.- not
这个就比较简单
结果就是对应的布尔值。
循环结构之while循环
格式:
while 条件:
满足条件执行的子代码
可以通过以下步骤进行理解:
1.当我们输入一个信息的时候,在输出的时候给几个条件判断。
2.当满足条件一的时候,代码进行,但是如果不满足第二条件的时候,会打回重新整。
3如果一直不满足,就会一直打回重整。
4.知道满足要求了,才算结束。
data = ['jason', 'tom', 'kevin']
name = input("name>>>:")
while name in data:
pwd = input("pwd>>>:")
if pwd == "123" and name == 'jason':
print("登录成功!")
代码解释:
当我们输入列表data以外的的用户名的时候,会直接结束;当我们输入列表里的用户名的时候,会提示我们输入正确的密码
如果我们密码输入错误,就会一直循环输入密码的过程,只有当我们输入正确的密码之后才会进行下一步,输出"登录成功!"
当我们要设定循环次数的时候,我们可以这样:
data = 1
while data < 4:
print('123')
data += 1
代码解释:
当我们设定初始值为1的时候,开始往下进行,1满足条件data < 4,然后继续往下进行,输出123,然后data
值加1为2;没有结束的命令,然后回到while data < 4:这一步,因为满足条件,继续执行,这样重复进行。
当data值加到4的时候,回到while data < 4:时,已经不满足条件了,所以就不会进入循环了,直接输出结果。
循环结构之while+break
格式:
while 条件:
满足条件执行的子代码
break
当我们想直接结束循环的时候,这个时候我们就可以用到break语句
我们想自己结束循环的时候,使用break
data = ['jason', 'tom', 'kevin']
name = input("name>>>:")
while name in data:
pwd = input("pwd>>>:")
if pwd == "123" and name == 'jason':
print("登录成功!")
break
代码解释:
根据代码测试,如果这里不加break,就会一直提示你输入密码,就算是你密码输入正确,因为这里进入的条件为
name,但是你输入的名字是已经满足条件才会进入循环的,当返回密码的时候与条件无关,所以会无限循环,但
是,我们加了一个break的时候,就会强制性的结束循环。
**注意
一个break只能强制结束同级的while循环
循环结构之while+continue
格式:
while 条件:
满足条件执行的子代码
continue
continue命令就是跳过本次循环,直接进行下次循环
当我们想在数字1~10中我不想得到数字7,这个时候我们就可以用到continue
data = 1
while data < 11:
if data == 7:
data += 1
continue
print(data)
data += 1
输出结果:
D:\python.3.6.4\python36.exe "D:/pythonProject/day05/01 循环结构.py"
1
2
3
4
5
6
8
9
10
Process finished with exit code 0
代码解释:
当初始值为1,然后进行循环,前6都可以正常输出,但是当data值为7的时候,然后自增1,变成8;跳过此次循环,不输出结果,然后data值为8继续循环。
注意
continue也只能影响同级情况下的循环
循环结构之while+else
格式:
while 条件:
满足条件执行的子代码
else:
不满足条件执行的子代码
当我们输入一个条件信息的时候,如果这个条件满足while循环的条件,则进入循环;但是如果不满足,则输出else下的子代码。
data = input('请输入大小:')
data = int(data)
while data < 11:
if data == 7:
break
print(data)
data += 1
else:
print('数据太大')
代码解释:
当我们输入值小于11的时候,就会进入循环去执行结果,但是当我们输入的数值大于11的时候,就会输出else下的子代码结果。
死循环与全局标志位
这里希望大家都不要去写死循环,因为这个死循环会让CPU一直工作,如果多几个死循环,你的CPU很有可能会受不了,会”累死的“。
eg:
data = 1
while data < 11:
print(data)
今日作业
1.准确说出下列判断的结果(不要执行代码)
v1 = 1 or 3 # 1
v2 = 1 and 3 # 3
v3 = 0 and 2 and 1 # 0
v4 = 0 and 2 or 1 # 1
v5 = 0 and 2 or 1 or 4 # 1
v6 = 0 or False and 1 # False
2.编写一个用户登录程序
用户如果登录失败 则只能尝试三次
用户如果登录成功 则直接结束程序
代码:
a = 1
while a < 4:
name = input("请输入你的名字:")
pwd = input("请输入你的密码:")
if name == "李智强" and pwd == "123":
print("登录成功")
break
else:
print("登录失败!")
a += 1
else:
print("今日输入次数你已经用完了,请明天再试!")
3.编写一个用户登录程序
用户如果登录失败 可以无限制尝试
用户如果登录成功 则进入内层循环 获取用户输入的指令 并打印该指令
eg: 用户输入cmd指令 则程序打印’正在执行您的指令:cmd’
给用户提供一个退出命令 用户一旦输入则退出这个程序
eg: 用户输入q指令 则程序先打印该指令再结束
代码:
while True:
name = input("请输入你的名字:")
pwd = input("请输入你的密码:")
if name == "李智强" and pwd == "123":
print("登录成功")
while True:
name = input("请输入你的指令:")
print("正在执行您的指令: %s" % name)
if name == "q":
print("你输入的指令为退出")
break
break
else:
print("登录失败!")
4.编写猜年龄的游戏(拔高练习 尝试编写)
用户有三次猜测的机会 如果用完则提示用户是否继续尝试
用户输入y则继续给三次机会 如果用户输入q则直接结束程序
代码:
data = 1
while data < 4:
age = input("请输入你的猜想>>>:")
if age == '18':
print("猜对啦")
break
else:
print("猜错啦")
data += 1
if data == 4:
visit = input("是否再来三次机会(y/q)")
if visit == "y":
data = 1
if visit == "q":
break