循环
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/dad08b3aa3168aea0e4d0ed973070b35.jpeg#pic_center)
一、for循环和while循环
- Python提供了两种基本的循环结构语句——while和for。
- while循环一般用于循环次数难以提前确定的情况,也可以用于循环次数确定的情况。
- for循环一般用于循环次数可以提前确定的情况,尤其是用于枚举序列或迭代对象中的元素。
- 一般优先考虑使用for循环。
- 相同或不同的循环结构之间都可以互相嵌套,实现更为复杂的逻辑。
- for循环和while循环都可以带else。
二、表达式
1.while表达式
while条件表达式
循环体
else:
子句代码块
2.for表达式
for 取值 in 序列或迭代对象:
循环体
else:
else子句代码块
三、优化
- 为了优化程序以获得更高的效率和运行速度,在编写循环语句时,应尽量减少循环内部不必要的计算,将与循环变量无关的代码尽可能地提取到循环之外。对于使用多重循环嵌套的情况,应尽量减少内层循环中不必要的计算,尽可能地向外提。
例题1
优化前:
>>> digits = (1, 2, 3, 4)
>>> for i in range(1000):
>>> result = []
>>> for i in digits:
>>> for j in digits:
>>> for k in digits:
>>> result.append(i*100+j*10+k)
优化后:
>>> for i in range(1000):
>>> result = []
>>> for i in digits:
>>> i = i*100
>>> for j in digits:
>>> j = j*10
>>> for k in digits:
>>> result.append(i+j+k)
- 在循环中应尽量引用局部变量,因为局部变量的查询和访问速度比全局变量略块。另外,在使用模块中的方法时,可以通过将其直接导入来减少查询次数和提高运行速度。
例题2
import time
import math
start = time.time() #获取当前时间
for i in range(10000000):
math.sin(i)
print('Time Used:', time.time()-start) #输出所用时间
loc_sin = math.sin
start = time.time()
for i in range(10000000):
loc_sin(i)
print('Time Used:', time.time()-start)
三、break和continue语句
(1) 语句在while循环和for循环中都可以使用,一般与选择结构结合使用,一旦break语句被执行,将使得整个循环提前结束。
(2) continue语句的作用是终止当前循环,并忽略continue之后的语句,然后回到循环的顶端,提前进入下一次循环。
(3) 除非break语句让代码更简单或更清晰,否则不要轻易使用。
例题3:计算小于100的最大素数,注意break语句和else子句的用法。
>>> for n in range(100, 1, -1):
for i in range(2, n):
if n%i == 0:
break
else:
print(n)
break
97
例题4:计算小于100的所有素数
>>> for n in range(100, 1, -1):
for i in range(2, n):
if n%i == 0:
break
else:
print(n, end=' ')
97 89 83 79 73 71 67 61 59 53 47 43 41 37 31 29 23 19 17 13 11 7 5 3 2
例题5:永不结束的死循环
>>> i=0
>>> while i<10:
if i%2==0:
continue
print(i)
i+=1
解决办法:
>>> for i in range(10):
if i%2==0:
continue
print(i, end=' ')
1 3 5 7 9
今日份学习结束啦~~~下面就讲讲例题了
吼吼吼!!!!!!