循环结构:for,in,while,break,continue,else
循环的类型:for-in循环,while循环,嵌套循环,for-else循环(不常用),while-else循环(鲜少使用)
一、for-in循环
案例:计算1-100的和
'''
for 变量(不一定是一个变量,大部分场景下是一个) in 容器:
代码块
执行顺序:
for-in循环执行次数取决于容器中元素个数,每循环一次,
按照容器元素的顺序从头到尾依次获取一个元素给变量
然后代码块执行,代码块执行完进入下一次循环,每次循环执行完再回到for-in,
判断是否还有介意获取的元素
'''
total = 0
for i in range(1, 100):
# print(i)
total += i
print(total)
二、range方法
-
作用:可以生成组成等差数列的整数
-
语法: range(start,end,step)
-
1.range是左闭右开区间;[start,end)
-
2.start可以省略不写,默认为0
-
3.step默认不写,默认为1
-
4.下一次获取的数字=当前获取的数字+step
-
5. step是整数,不能为0,step如果是>=1,start需要小于end,step<=-1,start需要大于end
-
6.如果写了step,start坚决不能省略
for i in range(1,10,2): #规则4 for i in range(1,10): #规则1、3 for i in range(100,3): #如果100为start,3为end,不符合规则6 #如果100为start,3为end,不符合规则5 for i in range(5): #规则2 print(i)
输出-2,-4,-6,-8
for i in range(-2,-9,-2):
print(i)
练习:找到1-1000所有的偶数求和
a = 0
for i in range(1001):
if i % 2 == 0:
a += i
print(a)
b = 0
c = 0
while b <= 1000:
c += b
b += 2
print(c)
print(sum([i * 2 for i in range(501)]))
print(sum([i for i in range(0, 1001, 2)]))
e = [i % 2 == 0 for i in range(1001)]
print(sum([i for i, j in enumerate(e) if j]))
for-in循环适合循环确定的循环
while循环
while循环一般用来不确定循环次数的问题中
from random import randint
random:随机模块
randint:从指定范围(闭区间)中随机返回一个整数
number = randint(1,100)
print(number)
while i:
x=int(input('输入:'))
if x>number:
print('猜大了')
elif x<number:
print('猜小了')
else:
print('猜中了')
i=0
九九乘法表
外层循环控制行
for row in range(1,10):
# 内层循环控制每行公式列数
for col in range(1,row+1):
result=f'{row}*{col}={row*col:>2}'
print(result,end=' ')
# 无论任何时候,print中end永久生效
print()
break:break一旦被触发,立刻结束当前所在的循环
continue:continue一旦被触发,立即结束掉所在循环的本次循环进入下一次循环
break和continue只能用于循环内
如果for循环中的变量没有用到,可以用到下划线代替
ptrhon
for _ in range(3):
for i in range(1,6):
if i==4:
print('=====')
# break
continue
print('****')
else:
print(i)'''
# 一次循环结束的标志位该循环内部代码块测地执行完
# 练习:使用while循环计算1-100的阶乘
i = 100
k = 1
while i > 0:
k *= i
i -= 1
print(k)
a = 0
c = []
while a < 100:
a += 1
b = 1
d = a
while d > 0:
b *= d
d -= 1
c.append(b)
print(c)
'''
语法:
while 条件:
代码块
执行流程:
while每次执行,先判断条件是否为真,条件为真,代码块执行;代码块执行完,再回到while继续
判断条件是否仍然为真,如果为真,继续,反之结束循环
'''
素数:判断100以内哪些数字是素数
for num in range(1, 100):
if num == 2:
print('2是素数')
elif num == 1:
continue
else:
# 排除1和本身,检查其他数字是否有因子存在
for i in range(2, num):
if num % i == 0:
break
else:
print(f'{num}是素数')
for-else:
-
for循环正常循环结束,触发else语句
-
for循环非正常结束,else语句不会触发
-
for-else应用场景
-
必须将所有可能性考虑到以后才能下结论时可以使用for-else语句