# encoding=utf-8
"""
循环结构用来重复执行一条或多条语句
循环体里面的语句至少应该包含改变条件表达式的语句,以使循环趋于结束;否则,就会变成一个死循环
如果符合条件,则反 复执行循环体里的语句。在每次执行完后都会判断一次条件是否为 True,如果 为 True 则重复执行循环体里的语句
一个循环体内可以嵌入另一个循环,一般称为“嵌套循环”,或者“多重循环”。
break 语句可用于 while 和 for 循环,用来结束整个循环。当有嵌套循环时,break 语句只 能跳出最近一层的循环。
continue 语句用于结束本次循环,继续下一次。多个循环嵌套时,continue 也是应用于最 近的一层循环。
while、for 循环可以附带一个 else 语句(可选)。如果 for、while 语句没有被 break 语句 结束,则会执行 else 子句,否则不执行
循环代码优化 三个原则可以大大提高运行效率,避免不必要的低效计算:
1. 尽量减少循环内部不必要的计算
2. 嵌套循环中,尽量减少内层循环的计算,尽可能向外提。
3. 局部变量查询较快,尽量使用局部变量
其他优化手段
1. 连接多个字符串,使用 join()而不使用+
2. 列表进行元素插入和删除,尽量在列表尾部操作
#循环代码优化测试
import time
start = time.time()
for i in range(1000):
result = []
for m in range(10000):
result.append(i*1000+m*100)
end = time.time()
print("耗时:{0}".format((end-start)))
start2 = time.time()
for i in range(1000):
result = []
c = i*1000
for m in range(10000):
result.append(c+m*100)
end2 = time.time()
print("耗时:{0}".format((end2-start2)))
使用 zip()并行迭代
我们可以通过 zip()函数对多个序列进行并行迭代,zip()函数在最短序列“用完”时就会停止。
names = ("高淇","高老二","高老三","高老四")
ages = (18,16,20,25)
jobs = ("老师","程序员","公务员")
for name,age,job in zip(names,ages,jobs):
print("{0}--{1}--{2}".format(name,age,job))
1、while基本格式
(1)初始条件设置:通常是一个计数器,来控制条件表达式是否成立
(2)基本格式
初始条件设置
while 条件:
条件成立时重复执行的代码(一行或多行)
改变条件的值
(3)else基本格式
初始条件设置
while 条件表达式:
条件成立时执行的代码
改变条件的值
else:
条件不成立时执行的代码
(4)流程
如果条件表达式成立,执行执行循环体中的代码块
执行完循环体中的代码后,继续判断条件表达式是否成立
如果成立继续执行循环体,直到条件表达式为False后程序继续往下执行
(5)使用场景:不确定循环次数,或者已知是一个条件
(6)计数问题,一般需要定义一个计数器:就是使用一个数值使其每次循环增加一定的值,实现计数的功能
2、循环中断关键字
(1)break:结束一个循环,执行循环后的代码
A、用于完全结束一个循环,跳出循环体执行循环后面的语句
B、强制结束循环,不会执行while连用的else里面的内容
C、应用场景,在学生管理系统项目中,退出系统时就可以使用break关键字
(2)continue:结束本次循环(循环体中continue后代码不再执行),执行下一次循环
A、只终止本次循环,接着还执行后面的循环
B、跳过当前的循环,会继续执行while连用的else里面的内容
C、应用场景,只打印0-10之间的奇数,可以用continue语句跳过某些循环
(3)else:循环结束后,一定会执行的结束的语句(非强制结束时,最终都会执行<一次>else代码)
A、在条件语句为false时执行else的语句块
B、循环语句正常结束后,执行else代码块中的内容
C、如果没有正常执行完(有break),则不执行else
D、如果while中执行了break语句,那么else就不执行,反之,就执行
E、执行过程:先执行while循环,当循环能够正常结束时,才会执行else里面的代码,如果循环内容里碰到break,就不执行else
3、循环结束的两种方式:
(1)根据判定条件不成立,结束
(2)通过break关键字强制结束循环
4、pass语句
(1)pass是空语句,是为了保持程序结构的完整性
(2)pass不做任何事情,一般用做占位语句
(3)if-pass
if 条件表达式:
pass
(4)while-pass
while 条件表达式:
pass
(5)for-pass
for 临时变量 in 可迭代对象:
pass
5、死循环:循环永不停止
(1)基本格式
while True:
重复执行的代码(一行或多行代码)
(2)特点:一直在循环,永远满足循环条件,不能跳出循环
(3)条件:如果条件判断语句永远是 True, 循环体一直执行,这时的循环就变成了死循环
(4)执行过程:表达式的结果是True,才会执行循环内容,如果结果一直是True,会一直循环下去
(5)应用场景:游戏循环,要使用死循环一直让游戏保持运行
6、for循环可以遍历任何有序的序列对象内的元素
(1)应用:主要用于迭代一个对象或明确循环次数
(2)特点:不需要计数器,能够自行结束,循环次数
(1)可用于字符串、列表、元组、其他内置可迭代对象及能够通过类所创建的新对象
(2)遍历: 依次获取容器中的每一个元素
(3)遍历字符串: 依次获取这个字符串中的每一个字符元素
7、for循环结构
for 临时变量 in 可迭代对象:
要循环执行的代码
8、for循环执行流程
将可迭代对象中的数据依次取出,赋值给临时变量,然后执行循环体
当可迭代对象中的元素全部遍历完后for循环停止运行
9、for-else
for 临时变量 in 可迭代对象:
要循环执行的代码
else:
循环正常结束执行的代码
10、range(start,stop,step):构造一个从start开始到stop结束的步长为step的一个数列
(1)功能: 函数产生一个满足要求的整数序列
(2)start:表示整数的开始位置,可以省略,默认为0,包含在内
(3)stop:表示整数的结束位置,不可省略,不包含在内
(4)step:表示步长,可以省略,默认为1:next = cur+ step
11、循环嵌套
(1)在一个循环体语句中又包含另一个循环语句
(2)允许在一个循环体里面嵌入另一个循环
12、嵌套循环可能有多层,但一般实际开发最多两层就可以(99%的情况)
(1)for-for循环嵌套
for 临时变量1 in 可迭代对象1:
for 临时变量2 in 可迭代对象1:
需要循环执行的代码
(2)while-while循环嵌套
while 条件表达式1:
while 条件表达式2:
需要循环执行的代码
(3)while-for循环嵌套
while 条件表达式:
for 临时变量 in 可迭代对象:
需要循环执行的代码
(4)for-while嵌套循环
for 临时变量 in 可迭代对象:
while 条件表达式:
需要循环执行的代码
"""
import os
import time
import random
import requests
from sys import stdout
from utils import myPrint
myPrint("while循环")
# ticket ~ 票;整数表示票的号码
ticket = 1
# 循环卖票
while ticket <= 10:
print("卖出了一张票:", ticket, "号票")
ticket += 1 # 票的号码~增加1
print("所有的票都卖完啦~ 下班下班,回家老婆孩子热炕头")
myPrint("while循环+if判断")
# 输出1-100的所有数字
print("\n输出1-100的所有数字:", end=" ")
# 记录数字的和
sum = 0
# 记录偶数数字的和
even = 0
# 记录奇数数字的和
odd = 0
# 控制次数,构造输出的数字
i = 1
while i <= 10:
print(i, end=",")
sum = sum + i
if i % 2 == 0:
even = even + i
else:
odd = odd - i
i += 1
print("\n输出1-100的和:", sum)
print("\n输出1-100的所有偶数和是:", even)
print("\n输出1-100的所有偶数和与奇数和之差是:", even-odd)
myPrint("while循环+break关键字")
# 当前还剩10张票,当剩3张时,不再卖票
print("\n剩10张票,剩3张时,停卖:", end="")
i = 10 # 票
while True:
if i == 3:
print("反恐演练,终止售票,提前下班")
break
print("成功售出",ticket,"号票")
i -= 1
# 不论while的条件是否为true,有else关键字时,只要不执行break,这里的代码就会执行一次
else:
print("售票完成,下班回家")
myPrint("while循环+continue关键字")
# 当前还剩10张票,第五张票不卖,其他票卖光为止。
print("\n剩10张票,第5张不卖,其余卖完:", end="")
i = 11 # 票
while i > 1:
i -= 1
if i == 5:
continue
print(f"卖第{i}张", end=",")
# 买票中途,要求预留6号和8号票
# 票的号码
ticket = 1
print()
while ticket <= 10:
print("准备售出",ticket,"号票")
# 预留6|8号票
if ticket == 6 or ticket == 8:
print("这是预留票,不能出售")
else:
print("成功售出", ticket, "号票")
ticket += 1
print("售票完成,下班回家")
# 火车站卖票,买到一半不卖了
a = 0
while a <10 :
a+=1
print("正在售出第",a,"张票")
if a>6:
print("提前下班了,停止卖票~")
print("结束一天的工作,高高兴兴的回家了~~")
myPrint("while循环+else分支")
# 练习:某人买了10张彩票,需要一一刮开,当中奖后就兴奋把剩余的彩票扔掉了,如果没有中奖就一直刮
ticket = 11
key = 8 # 模拟中奖号码
while ticket>1:
num = random.randint(1,10) # 刮开的数字
if key == num:
print("第",11-ticket,"张彩票中奖了")
print("我中奖了~~~,其他彩票不要了")
break
ticket -= 1 # 彩票数量减少
else:
print("呜呜呜~全没中奖!!!次日,新闻报道一男子因彩票没中奖,跳楼了~~~")
# while-break-else循环
a = 0
while a < 10:
print("break不执行")
if a == 6:
break
a = a + 1
print(a)
else:
print('else下的代码')
# while-continue-else循环
a = 0
while a < 10:
print("continue执行")
a = a + 1
if a == 6 or a == 7:
continue
print(a)
else:
print('else下的代码')
# 执行10次后退出程序
print("\n执行10次后退出程序:", end="")
i = 0 # 次数
while True:
print(f"第{i}次", end=",")
i += 1
if i == 10:
break
myPrint("for循环结构")
# 迭代字符串
s = "hello world"
for i in s:
print(i,end='/')
# 从0开始到9,步长为1
print("获取10以内的数列对象:",range(10))
print("range的数列类型:",type(range(3))) # 可迭代对象
# range低层原理:是可迭代的(不是迭代器)
R = range(1,10,2)
from collections import Iterable,Iterator
print(R,type(R),isinstance(R,Iterable),isinstance(R,Iterator))
# 判定数字是否是质数(除1和本身,无其他因数)
# for-for循环方法
for i in range(2,100):
for j in range(2,i):
if i%j == 0:
break
else:
print(i)
# while-while循环方法
c = 0
while c<200:
c += 1
a = c
i = 2
while i < a:
if a % i == 0:
# print("不是质数")
break
i += 1
else:
print(a,"是质数")
myPrint("死循环")
# 死循环
a = 2
while a < 3:
print('我是一个死循环...我永远不会结束...')
py语法基础008_for循环
最新推荐文章于 2025-11-14 14:30:39 发布
本文详细介绍了Python中的循环结构,包括while和for循环的基本语法、嵌套循环、循环控制语句(break和continue)以及else子句的用法。同时,强调了循环代码优化的三个原则,并通过实例展示了如何提高循环效率。最后,讨论了死循环的概念及其应用场景。
3609

被折叠的 条评论
为什么被折叠?



