python的分支循环
知识内容:
1.if-else分支结构
2.while循环
3.for循环
4.循环结构综述
5.break和continue语句
一、if-else分支结构
1.单分支选择结构
if 表达式:
语句块
当表达式等价为True时表示条件满足,语句块将被执行
示例:
x = input("Input two numbers: ")
a, b = map(int, x.split())
if a > b:
a, b = b, a
print(a, b)
2.双分支选择结构
if 表达式:
语句块1
else:
语句块2
当表达式等价为True时表示条件满足,语句块1将被执行,否则语句块2将执行
示例:
x = input("Input two numbers: ")
a, b = map(int, x.split())
if a > b:
a, b = b, a
else:
pass # 在python中pass表示不做任何操作
print(a, b)
my_age = 21
if my_age > 50:
print("Too old! Time to retire!")
else:
print("还可以继续浪")
注: python中还有适用于简单表达式的二分支结构(也叫三元运算):
<表达式> if 条件 else 表达式2
eg:
guess = eval(input(">>>"))
print("猜{}了".format("对" if guess==99 else "错")) # guess为99输出对 否则输出错
3.多分支选择结构
if 表达式1:
语句块1
elif 表达式2:
语句块2
elif 表达式3:
语句块3
.
.
.
else:
语句块n
以上的elif是else if的缩写,示例如下:
# __author__ = "wyb"
# date: 2018/3/11 def f(score):
if score > 90:
print("A")
elif score > 80:
print("B")
elif score > 70:
print("C")
elif score > 60:
print("D")
else:
print("E") f(83) # 输出结果: B
4.以上选择结构的嵌套
示例: 3数比较大小
# __author__ = "wyb"
# date: 2018/2/24 # 输入三个整数,比较大小按从小到大的顺序输出 number1 = int(input(">>>"))
number2 = int(input(">>>"))
number3 = int(input(">>>")) if number1 < number2:
if number2 < number3:
print(number1, number2, number3)
elif number3 < number1:
print(number3, number1, number2)
else:
print(number1, number3, number2)
else:
if number1 < number3:
print(number2, number1, number3)
elif number2 < number3:
print(number2, number3, number1)
else:
print(number3, number2, number1)
注: 使用选择结构的嵌套一定要注意严格控制好不同级别的代码缩进量,因为不同的代码缩进量绝对了不同代码块的从属关系以及业务逻辑是否能很好地实现。
二、while循环
1.while循环语法
(1)普通的while循环
while 条件表达式:
循环体
当条件表达式等价为True时循环体一直运行,等价为False时直接退出循环体
(2)带else子句的while循环
while 条件表达式:
循环体
else:
代码块
上述循环中的else:
如果循环是从break终止,就跳出循环,不执行else中的代码块,如果循环正常结束就执行else中的代码块,for循环中的else
也是一样的原理
2.while循环示例
死循环:
while True:
print("我爱你啊")
写while循环要尽量避免上述的死循环,可以在while后面的条件表达式中设置退出条件或者在循环体中设置break语句来退出循环体
登陆验证:
# __author__ = 'wyb'
# date: 2018/3/11 user = "wyb"
pwd = ""
counter = 0
while counter < 3: # counter == 3 时退出循环体并执行else子句
# 输入用户名及密码:
username = input("Username:")
password = input("Password:")
# 用户名及密码正确:
if username == user and password == pwd:
print("Welcome %s login...." % user)
break # 跳出,中断
# 用户名及密码有任一项不正确或都不正确:
else:
print("Invalid username or password !")
counter += 1
# counter == 3 时用户选择是否继续
if counter == 3:
keep_going_choice = input("还想玩么?[y/n]")
if keep_going_choice == "y":
counter = 0 else:
print("要不要脸,臭流氓啊,小虎。")
三、for循环
1.for循环语法
(1)普通for循环
for 取值 in 序列或迭代对象:
循环体
枚举或遍历序列中的每一个值,或迭代对象中所有元素
(2)带else子句的for循环
for 取值 in 序列或迭代对象:
循环体
else:
代码块
上述循环中的else:
如果循环是从break终止,就跳出循环,不执行else中的代码块,如果循环正常结束就执行else中的代码块,while循环中的else
也是一样的原理
2.range函数
语法: range(end)或range(start, end)或range(start, end, step)
range函数根据给定的参数产生一系列整数,返回一个range对象,range对象类似于生成器,生成器利用了堕性计算的机制,不会一次性计算出所有的值,而是用多少就算多少。range函数一般都是与for循环连用。
start->起始值(包括,缺省时默认为0)
end->终止值(不包括,必须有的参数)
step->步长(默认为1)
# range函数示例
for i in range(10):
print(i, end=' ')
print() for i in range(3, 9):
print(i, end=' ')
print() for i in range(1, 10, 2):
print(i, end=' ')
print() for i in range(10, 0, -1):
print(i, end=' ')
print() for i in range(10, 0, -2):
print(i, end=' ')
print()
# 输出结果:
# 0 1 2 3 4 5 6 7 8 9
# 3 4 5 6 7 8
# 1 3 5 7 9
# 10 9 8 7 6 5 4 3 2 1
# 10 8 6 4 2
3.for循环示例
遍历列表输出所有元素:
mylist = [1, 'wyb', 'k', 666]
for item in mylist:
print(item, end=" ")
else:
print("正常结束") # 输出结果: 1 wyb k 666 正常结束
求100以内的所有奇数的和(2500):
# 求100以内所有奇数的和(2500):
sum_odd = 0
for i in range(1, 100, 2):
sum_odd += i
else:
print(sum_odd)
四、循环结构综述
1.while循环和for循环
关于while循环和for循环,while循环一般用于循环次数难以确定的情况下,当然也可以用于循环次数确定的情况,for循环一般用于循环次数确定的情况,尤其适用于
枚举或遍历序列或迭代对象中每一个元素的情况下,编程中建议多使用for循环,因为使用for循环可以对循环的起始和终止看的更清楚
2.循环结构的嵌套
另外相同或不同的循环结构之间也可以互相嵌套,也可以和选择结构嵌套使用,实现更复杂的逻辑
示例:
# __author__ = "wyb"
# date: 2018/3/11
# 交换运算符: x, y = y, x 直接交换两个变量的内容无需用到中间变量 # 实现从小到大排序
mylist = [4, 0, 3, -13, 5, 8, 31]
print("before sort:")
print(mylist) len_list = len(mylist)
for i in range(0, len_list-1):
for j in range(i+1, len_list-1):
if mylist[i] > mylist[j]:
mylist[i], mylist[j] = mylist[j], mylist[i] print("after sort:")
print(mylist)
3.循环结构的优化
(1)为优化程序以获得更高的效率和运行速度,在编写循环语句时,应尽量减少循环体内部不必要的计算,将与循环变量无关的代码尽量移到循环之外。对于使用了
多层循环嵌套的情况下,应尽量减少内层循环不必要的计算,尽可能地将循环往外提。
比如在以下的代码中,第二种明显比第一种的运行效率更高:
# __author__ = "wyb"
# date: 2018/3/11 import time
digits = [1, 2, 3, 4] result = []
start = time.time()
for v in range(1000):
for i in digits:
for j in digits:
for k in digits:
result.append(i*100+j*10+k)
print(time.time()-start)
print(result)
# __author__ = "wyb"
# date: 2018/3/11 import time
digits = [1, 2, 3, 4] result = []
start = time.time()
for v in range(1000):
for i in digits:
i = i * 100
for j in digits:
j = j * 10
for k in digits:
result.append(i+j+k)
print(time.time()-start)
print(result)
(2)在循环中尽量引用局部变量,因为局部变量的查询和访问速度比全局变量稍微快一点,另外在使用模块中的方法时可以通过将其转换成局部变量来提高运行速度
示例:
# __author__ = "wyb"
# date: 2018/3/11 import time
import math start = time.time()
for i in range(100000):
math.sin(i)
print("Time Used:", time.time()-start) loc_sin = math.sin
start = time.time()
for i in range(100000):
loc_sin(i)
print("Time Used:", time.time()-start)
五、break和continue语句
break -> 提前结束整个循环
continue -> 终止本次循环忽略continue语句之后的所有语句直接回到循环的顶端,开始新的一次循环
示例:
# __author__ = 'wyb'
# date: 2018/3/11 exit_flag = False for i in range(10):
if i < 5:
continue
print(i)
for j in range(10):
print("layer2", j)
if j == 6:
exit_flag = True
break
if exit_flag:
break
break与continue的区别:
break用于完全结束一个循环,直接跳出循环体执行循环体后面的语句
而continue和break有点类似,区别在于continue只是终止本次循环,接着还会执行后面的循环,break则完全终止循环
python的分支循环的更多相关文章
- Python入门-分支循环结构
编写代码的过程中,除了基本的变量,数据类型,在实际开发中,大量代码是根据判断条件,进而选择不同的的向前运行方式. 这些向前的运行方式基本分为两种:分支结构,循环结构 1.分支结构 if单分支结构 # ...
- 一文了解Python中的循环(for while break continue 嵌套循环...)
循环 目标 程序的三大流程 while 循环基本使用 break 和 continue while 循环嵌套 01. 程序的三大流程 在程序开发中,一共有三种流程方式: 顺序 —— 从上向下,顺序执行 ...
- python中的循环以及,continue和break的使用
循环 目标 程序的三大流程 while 循环基本使用 break 和 continue while 循环嵌套 01. 程序的三大流程 在程序开发中,一共有三种流程方式: 顺序 —— 从上向下,顺序执行 ...
- python基础之循环结构以及列表
python基础之编译器选择,循环结构,列表 本节内容 python IDE的选择 字符串的格式化输出 数据类型 循环结构 列表 简单购物车的编写 1.python IDE的选择 IDE的全称叫做集成 ...
- Python之 for循环\while循环
list或tuple可以表示一个有序集合.如果我们想依次访问一个list中的每一个元素呢?比如 list: L = ['Adam', 'Lisa', 'Bart'] print L[0] print ...
- Python进阶05 循环设计
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 在"循环"一节,我们已经讨论了Python基本的循环语法.这一 ...
- 第五篇:python基础之循环结构以及列表
python基础之循环结构以及列表 python基础之编译器选择,循环结构,列表 本节内容 python IDE的选择 字符串的格式化输出 数据类型 循环结构 列表 简单购物车的编写 1.pyth ...
- [Python笔记][第三章Python选择与循环]
1月28日学习 Python选择与循环 选择结构 多分枝选择结构 if 表达式 1: 语句块 1 elif 表达式 2: 语句块 2 elif 表达式 3: 语句块 3 ... else : 语句块 ...
- Python数据结构与循环语句
# Python数据结构与循环语句: 首先编程是一项技能,类似跑步,期初不必在意细节,能使用起来就行,等学的游刃有余了再回过头来关注细节问题也不迟. 关于买书: 学会python之后,才需要买书 ...
随机推荐
- 微信小程序开发过程中出现问题及解答
1.wx.uploadFile上传图片,控制台抛出错误"uploadFile:fail Error:Hostname/IP doesn't match certificate's altna ...
- (1)什么是socket(套接字)
什么是套接字socket socket把传输层以下的协议都封装成了简单的接口,我编写基于网络通信的软件只需要调用这些接口即可,写出的程序自然是遵循tcp/udp协议的.... 什么是互联网 互联网=物 ...
- LG2945 【[USACO09MAR]沙堡Sand Castle】
经典的贪心模型,常规思路:将M和B排序即可 看到没有人用优先队列,于是我的showtime到了 说下思路: 读入时将数加入啊a,b堆中,不用处理(二叉堆本来就有有序的性质) 读完后逐个判断,照题目模拟 ...
- 多个sshkey 指定key来clone仓库
Something like this should work (suggested by orip): ssh-agent bash -c 'ssh-add /somewhere/yourkey; ...
- USB gadget 驱动 printer.c 分析
1. modprobe g_printer idVendor=0x0525 idProduct=0xa4a8 modprobe后面也可以加模块参数 2. prn_example从stdout获取数据然 ...
- FastAdmin 插件的 Git 开发流程(简明)
FastAdmin 插件的 Git 开发流程(简明) cms zip 安装 包安装 删除 addons 里的 cms 使用 mklink 软链接到 cms 插件 Git 仓库 修改 cms 插件 gi ...
- vue-cli 打包报错:Unexpected token: punc (()
vue-cli 打包报错: ERROR in static/js/vendor.ed7d2353f79d28a69f3d.js from UglifyJs Unexpected token: punc ...
- springboot 知识点
---恢复内容开始--- 1springBoot项目引入方式, 1,继承自父 project (需要没有付项目才能用,一般我们的项目都会有 父 项目 所以 这种方式不推荐 ,记住有这种方式 就可以了) ...
- 百度,谷歌,360,搜狗,神马等蜘蛛IP段
https://www.imydl.com/wzjs/5971.html 记得3月份的时候明月分享过一篇[站长必备:百度.谷歌.搜狗.360等蜘蛛常见IP地址]的文章,好像一直都受到了众多站长们的关注 ...
- centos7 取消自动锁屏
CentOS7默认短时间会锁屏,这带来了一定的麻烦,比如看电影时,你不得不时不时的动动鼠标,才能防止锁屏.在网上查了一些资料,也没有找到相关的解决办法,不过最终还是找到了. 1.打开 applicat ...