if判断
(1)if条件
if 条件:
代码体
code1
code2
code3
语法记忆方法
if+空格+条件+冒号
tab缩进代码体
tab缩进代码体
tab缩进代码体
代表电脑需要一个条件进行判断
冒号可以理解成计算机要说话了
通过tab横向换行确定计算机要说的话
例:1
tag = True
if tag:
print('条件满足')
else:
print('条件不满足')
例2:
tag1 = False
if tag1:
print('条件满足')
else:
print('条件不满足')
例3:
tag2 = 1==1
if tag2:
print('条件满足')
else:
print('条件不满足')
(2)if判断加上逻辑运算符
cls = 'zhangxi'
sex = 'female'
age = 35
if cls == 'zhangxi' and sex == 'female' and age > 20 and age <25:
print('开始表白...以下省略一万字')
else:
print('姐姐好')
(3)三目运算
一行代码写if else
满足条件的结果 if 条件 else 不满足条件的结果
只能对if…else
a = 9
print('满足条件') if a>6 else print('不满足条件')
(4)多分枝
强调:if的多分枝 但凡有一个条件成立,就不会再往下判断其他条件了
elif可以有无限个
if 条件1 :
code1
code2
code3
…
elif 条件2 :
code1
code2
code3
…
elif 条件3 :
code1
code2
code3
…
…
else:
code1
code2
code3
…
优先级if最高 elif 依次往下 else
注意必须要有if
例:
如果成绩>=90 那么优秀
如果成绩>=80且<90 那么良好
如果成绩>=70且<80 那么普通
其他情况 很差
一个语法if ...elif...elif...else
score = int(input('>>>'))
if score >=90:
print('优秀')
elif 90> score >=80: #90>可不写 if优先级最高 输入分数后会先考虑if在考虑elif
print('良好')
elif 80> score >=70: #80>可不写
print('普通')
else:
print('很差')
(5)if嵌套
if 条件:
code1
code2
code3
if 条件:
code1
code2
code3、
else:
code1
code2
code3
else:
code1
code2
code3
cls = 'zhangxi'
sex = 'female'
age = 22
if cls == 'zhangxi' and sex == 'female' and age > 20 and age <25:
print('开始表白...以下省略一万字')
is_success = input('女孩输入是否愿意').strip()
if is_success =='我愿意':
print('在一起')
else:
print('我逗你玩的')
else:
print('姐姐好')
逻辑运算符 and or not
(1)and
and 与 连结左右两个条件
只有在两个条件同时成立的情况下最终结果才为True
全部都是and的情况下,如果判断到位假后面都是and就没必要看了 就是假
要求全部都是真才是真
例:
name = 'zhangxi'
num = 22
print(num>=22 and num <=30 and 1<3) #返回True
print(num>=22 and num <=20 and 1<3) #返回False
(2)or
or 或 连接左右两个条件 但凡一个条件成立最终结果为True
全部都是or的情况下 如果判断到位真后面都是or就没必要看了 就是真
全是假才是假
例:
print(1>3 or 1==1) #返回True
print(1>3 or 1==1 or 'x'=='y'or 2>1) #返回Ture
(3)not
not 非
例:
print(not 1>3) #返回True
(4)and or not三者优先级关系
not的优先级最高 就是把紧随其后的那个条件结果取反 所以not与紧随其后的条件不可分割
如果语句中全部都是用and连接 或者全部用or连接 那么按照从左到有的顺序依次计算即可
如果语句中既有and也有or 那么先用括号的左右两个条件给括起来 然后在进行运算
例:
#是先判断not 后判断and or
print(not 3>1 or 3>1) #返回True
res = not False and True or False or False or True #返回Ture
print(res)
#最好使用括号来区别优先级,这样别人容易读懂你的代码
res1 = (3>4 and 4>3)or (1==3 and ('x'=='x' or 3>3)) #返回False
print(res1)
if并列
四个if语法
elif与if并列的区别:
if并列是每个if都是独立的 也就是说每一个if条件都是独立的
而elif的条件 是在上一个if或者上一个elif不满足的条件下执行的条件
例:
如果成绩>=90 那么优秀
如果成绩>=80且<90 那么良好
如果成绩>=70且<80 那么普通
其他情况 很差
##not in
A_parent = ['工程师','医生','警察''歌手']
B_parent = ['工程师']
C_parent = []
chose = input('招聘>>>')
if chose in A_parent:
print('小孩A成为了%s' %chose)
if chose in B_parent:
print('小孩B成为了%s' %chose)
if chose not in C_parent:
print('小孩C成为了%s' %chose)
while循环
1.什么是循环
循环就是一个重复的过程
2.为何要有循环
人可以重复的去做某一件事 程序中必须要有一种机制能够控制计算机像人一样重复的去做某一件事
3.如何用循环
语法
while 条件:
code1
code2
code3
条件为满足 则一直循环
(1)while + True的情况
while + True的情况
所有的数据类型都自带布尔值
None,0,空(空字符串,空列表,空字典)三种情况下布尔值为False,其余全为真
一直循环下去
while True:
print(111)
print(222)
在登录的情况需要循环 还有判断
db_user = 'zhangxi'
db_pwd = '123'
while True:
input_user = input('请输入用户名')
input_pwd = input('请输入密码')
if input_user == db_user and input_pwd == db_pwd:
print('登录成功')
break #结束本循环 放在if后else前
else:
print('登录失败')
(2)while + 一个条件范围
不满足这个条件范围就会跳出循环
通过代码体可以结束循环
例:
start = 0
while start < 8: #满足一直循环 不满足结束循环
#循环到7
start += 1
print(start)
print(start)
print(start)
(3)while + continue
continue代表结束本次循环
本次循环continue之后的代码不在运行 直接进入下一次循环
强调:continue一定不要作为循环体的最后一步代码
例:
start = 0
while start < 8:
#循环到7
start += 1
if start == 4:
continue
#跳过本次循环
#后面的代码不走了 直接走下一次循环
#没有打印4
print(start)
(4)while + else
了解
n = 0
while n <6:
n += 1
#if n==6
print(n)
else:
#else的代码会在while循环没有break打断的情况下最后运行
print('============')
#和本循环没有任何关系
print('--------------')
if和while循环的结合
例:
###登录取款程序
user = 'zhangxi'
pwd = '123'
balance = 5000
tag = True
while True:
while tag:
user1 = input('请输入用户名')
if user != user1:
print('用户名输入错误,请重新输入')
continue
pwd1 = input('请输入密码')
if pwd == pwd1:
print('登陆成功')
break
else:
print('密码错误')
tag = False
#取款
money = int(input('请输入您的取款金额'))
if balance > money:
balance = balance - money
print('恭喜您取出了%s' %money)
print('您的余额为%s' %balance)
break
else:
print('您的余额不足')
for循环
(1)while遍历列表
names = ['zhangxi','xuwei','yangzuofan','haokangnign']
i = 0
while i < len(names): #names的长度
print(names[i])
i +=1
(2)for循环遍历列表
names = ['zhangxi','xuwei','yangzuofan','haokangnign']
for i in names: #将列表中的值依次赋值给i
print(i)
(3)for循环遍历字典
#默认遍历key值
<class 'range'>
for i in names:
print(i)
#第二种遍历key值
names = {'name1':'zhangxi','name2':'xuwei','name3':'yangzuofan'}
for i in names.keys():
print(i)
#for循环遍历value值
names = {'name1':'zhangxi','name2':'xuwei','name3':'yangzuofan'}
for i in names:
#i就是names的key
#每次取一个
print(names[i])
#直接取遍历values
names = {'name1':'zhangxi','name2':'xuwei','name3':'yangzuofan'}
for i in names.values():
print(i)
#遍历键值对
names = {'name1':'zhangxi','name2':'xuwei','name3':'yangzuofan'}
for i in names.items():
#元组
print(i)
print(type(i))
#取key
print(i[0])
#取value
print(i[1])
for可以不依赖于索引取值 是一种通用的循环取值方式
for循环次数是由被循环对象包含值的个数决定的 而while的循环次数是由条件决定的
(4)range
range (起始索引,结束索引,步长)
range (结束索引) 相当于起始索引是0
a = range(5)
print(a)
print(type(a)) #<class 'range'>
### 他是一个迭代器 顾头不顾尾
print(list(a))
# 不直接变成列表 是因为会浪费内存
print(range(0,1000000000000000000000000))
#一般和for循环连用 循环一次取一次
#range相当于母鸡下蛋 一次下一个 下了0 1 2 3 4 这5个鸡蛋
names = ['zhangxi','xuwei','yangzuofan','haokangnign']
for i in range(0,5):
print(i)
for i in range(0,5,2):
print(i)
#虽然结果一样但是列表浪费内存
#列表相当于一筐鸡蛋一次性就是0 1 2 3 4 这5个鸡蛋
for i in [0, 1, 2, 3, 4]:
print(i)
(5)for + break 或者 +continue
names = ['zhangxi','xuwei','yangzuofan','haokangnign']
for n in names:
if n =='xuwei':
continue #跳过'xuwei'这一元素
#break #到'xuwei'这一元素就不走了
print(n)
(6)for+else
了解
for i in range(0,9):
if i == 6:
# break
continue
print(i)
else:
print('===========')
(7)for循环的嵌套
例:
打印9*9乘法口诀表
i是乘数 j是被乘数
# print有一个参数end 默认是 \n
# print(1,end='\n')
# print(1,end='')
自己控制换行 空格
for i in range(1,10):
for j in range(1,i+1):
print('%s*%s=%s' %(i,j,i*j),end = ' ')
# 控制每一行出现的公式的个数
# 第一次范围是range(1,2) i 1 (1,2) j 1 只循环了一次
# 第二次范围是range(1,3) i 2 (1,3) j 1 j 2 只循环了二次
# 第三次范围是range(1,4) i 3 (1,4) j 1 j 2 j 3 只循环了三次
# 格式化输出
# 乘法口诀表是在小循环结束时换行
print()
(8)解决集合去重的局限性
集合去重
局限性
1.无法保证原数据类型的顺序
2.当某一个数据中包含的多个值全部为不可变的类型时才能用集合去重
info = [
{'name':'zhangxi','age':22},
{'name':'xuwei','age':23},
{'name':'haokangning','age':21},
{'name':'xuwei','age':23},
{'name':'dahai','age':21}
]
L = []
for i in info:
if i not in L:
L.append(i)
print(i)
info = L
print(info)
练习
#登录取款程序
user = 'zhangxi'
pwd = 123
balance = 5000
tag = True
while True:
while tag:
user1 = input('请输入您的用户名')
if user != user1:
print('您的用户名输入错误,请重新输入')
continue
pwd1 = int(input('请输入您的密码'))
if pwd == pwd1:
print('登陆成功')
break
else:
print('密码错误,请重新输入')
tag = False
#取款
money = int(input('请输入您的取款金额'))
if balance > money:
balance = balance - money
print('恭喜您取出了%s' %money)
print('您的余额为%s' %balance)
break
else:
print('您的余额不足')
#判断1到10之间的奇偶数,如果是奇数,就输出奇数,如果是偶数,就输出偶数
for i in range(1,11):
if i % 2 == 1:
print('结果为奇数%s' %i)
else:
print('结果为偶数%s' %i)