当前位置: 首页 > news >正文

Python学习笔记(四)流程控制方法

流程控制有三种方法:分支、循环、跳出

流程的控制通过布尔值来实现,分支和循环都需要对一定的条件进行判断,根据判断结果(布尔值)决定下一步要做什么
布尔值通过比较运算符、逻辑运算符来进行判断是True还是False

不需要判断直接得到True——数字1,非空数据类型与结构,如非空list,非空string,非空set等
不需要判断直接得到False——数字0,空数据类型与结构

分支

分支是根据条件,让有些代码可以被执行或不被执行
分支关键字有:if、else、elif、pass

#if
var = 123
if var == '111':  #条件不满足print('123123123')   #条件不满足,不会执行
print('over')    #if外的语句,输出over
#over#else二选一:条件不满足则执行,条件满足则不执行,else和if都只能出现一次
var = 123
if var == '111':  #条件不满足print('123123123')   #条件不满足,不会执行
else:print('ws')  #条件不满足,可以满足else,输出ws
print('over')    #if外的语句,输出over
#ws
#over#elif:多分支,但要注意条件必须递增
var = 68
if var >= 80:print('优秀')
elif var >= 70:print('良好')
elif var >= 60:print('及格')
else:print('不及格')
print('over')
#及格
#over#分支嵌套
dict1 = {'ws':'1111','xhy':'2222'} #创建一个包含密码的字典
name = input('username:')
if name in dict1.keys(): #判断输入的username是否在字典的key中pwd = input('password:')  if pwd == dict1[name]: #判断输入的password是否是字典中username的key对应的valueprint('success')  #成功输出successelse:print('error') #失败输出error
else:print('no such username')#pass占位语句,保证语法结果的完整性,不然会报错,最后再对pass部分进行修改
dict1 = {'ws':'1111','xhy':'2222'} 
name = input('username:')
if name in dict1.keys(): pwd = input('password:')  if pwd == dict1[name]: pass #满足条件则 跳过这部分,什么都不执行else:print('error')
else:print('no such username')#三目运算符————简化分支结构的写法 -只能提供二选一
var = int(input('soure:'))
print('good' if var >= 60 else 'bad') #"真" if 条件判断 else "假"
#good
等同于:
if var >= 60:print('good')
else:print('bad')

循环

让某些代码重复执行
关键字包括for、while

# while循环
list1 = [] #给列表添加元素
i = 1
while i <= 10: #判断条件list1.append(i)i += 1
print(list1)
#[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]#for循环,一般而言是对序列、字符串等对象进行遍历操作时使用for
#for循环不需要指定退出条件
list1=[1,2,3,4,5]
for i in list1:     #按顺序访问序列print(f'{i}')   #输出这个i,次数为序列的元素数i += 1
#for对字符串进行操作
str='wsxhy'
for i in str:print(f'{i}') #依次输出#for解包:
#如果遍历的序列每一项元素都包含若干个子元素
#在循环时可以设置固定数量变量来接受
var=[(1,2,3),(4,5,6),(7,8,9),(10,11,12)]
for v1,v2,v3 in var:print(f'{v1},{v2},{v3}')
#1,2,3
#4,5,6
#7,8,9
#10,11,12#for封包
var=[(1,2,3),(4,5,6),(7,8,9),(10,11,12)]
for i in var:print(i) #直接得到元组
#(1, 2, 3)
#(4, 5, 6)
#(7, 8, 9)
#(10, 11, 12)#读取字典
dict1={'ws':1,'xhy':'qwe','esq':'12w'}
for i in dict1.items():print(f'{i}')  #分组读出key和value
#('ws', 1)
#('xhy', 'qwe')
#('esq', '12w')#循环嵌套循环,先执行里层循环,再执行外层循环
a = 0
while a <= 10:for i in range(3):print(i)       #先执行a += 1   #跑完了i的循环,才会跑这条命令#列表推导式——通过循环快速生成列表
list1=[i for i in range(1,21)]
print(list1)
#[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
等同于
list1 = []
i = 1
while i <= 20:list1.append(i)i += 1
print(list1)
#步长为2
list1=[i*2 for i in range(1,21)]
#结合三目运算符,挑选偶数(i % 2 ==0)
list1=[i for i in range(1,21) if i % 2 == 0]

跳出

跳出循环的方法,有break与continue

#break跳出循环
i =1
list1 = []
while i <= 20:if i == 5: break  #遇到break则直接跳出循环list1.append(i)i += 1
print(list1)
#[1, 2, 3, 4]#continue跳过当前循环,最好用在for中,用在while会容易出问题
list1 = []
for i in range(1,8): #在for中没有自增概念if i == 5:continue  #在i=5的时候不执行这次循环list1.append(i)
print(list1)
#[1, 2, 3, 4, 6, 7]#for else——for跑完后执行else语句,如果break了则不执行
#即两个要么都执行,要么都不执行
for i in range(1,10):pass
else:pass
#找不到则提示error
user_list={'ws':'1','xhy':'2','qwe':3}
name =input('name:')
for i in user_list:if i == name:break
else:print('error')
#如果不使用这种方法,则需要单独定义一个变量来存储布尔值,来为后面判断依据
name = input('name:')
find=''
for i in user_list:if i == name:find = Truebreakfind = False
if find is False:print('error')# while else——返回True时else不被执行,返回False则执行else
#即只执行一个
while True:pass
else:    #False则执行pass
#练习
users=[{'ws':'ws111'},{'xhy':'xhy111'},{'qwe':'qwe111'}]
#判断用户输入是否存在
#如果有,则输入密码,检测密码是否正确
#正确则登录成功name=input('username:')
for v1 in users:  #对这个列表进行解包,解包为三个单独的字典if name in v1.keys(): #判断有无用户名password=input('password:')if password in v1.values(): #判断输入的密码是否为字典对应key的valueprint('login successful')breakelse:print('password incorrect')break
else:print('no such username')

http://www.lryc.cn/news/274430.html

相关文章:

  • 【Qt- C++ Qml 交互】
  • ubuntu 20.04 自由切换 python 的版本
  • 程序性能优化全能手册
  • LiveSIPB流媒体国网B接口功能-国网B接口服务安装使用说明
  • 利用小红书笔记详情API:为内容运营提供强大的支持
  • 地理空间分析1——入门Python地理空间分析
  • 哈尔滨爆火的背后有什么值得我们学习的,2024普通人如何创业/2024风口行业
  • element中Tree 树形控件实现多选、展开折叠、全选全不选、父子联动、默认展开、默认选中、默认禁用、自定义节点内容、可拖拽节点、手风琴模式
  • 数据结构OJ实验15-插入排序与交换排序
  • 鹿目标检测数据集VOC格式500张
  • 静态网页设计——电影推荐网(HTML+CSS+JavaScript)
  • ARM CCA机密计算架构软件栈简介
  • C#编程-使用集合
  • linux 设备模型之设备
  • 电源滤波可采用 RC、LC、π 型滤波。电源滤波建议优选磁珠,然后才是电感。同时电阻、电感和磁珠必须考虑其电阻产生的压降。
  • STM32通用定时器-输入捕获-脉冲计数
  • Flutter GetX 之 路由管理
  • 基于单片机的农田灌溉系统(论文+源码)
  • 分布式缓存 -- 基础
  • 云计算复习笔记--期末
  • 【WPF.NET开发】WPF中的焦点
  • 【计算机设计大赛作品】豆瓣电影数据挖掘可视化—信息可视化赛道获奖项目深入剖析【可视化项目案例-22】
  • VS2019启动编辑并继续不起作用(.NET)
  • FFmpeg处理音视频的常用API及一般流程
  • Kotlin协程学习之-01
  • 214.【2023年华为OD机试真题(C卷)】测试用例执行计划(排序题-JavaPythonC++JS实现)
  • 数一下 1到 100 的所有整数中出现多少个数字9并输出这些数字
  • 07. HTTP接口请求重试怎么处理?
  • 分割数组的最大差值 - 华为OD统一考试
  • 基于 Python+Django 技术栈,我开发了一款视频管理系统