流程控制语句——循环结构

流程控制语句

循环结构

循环:周而复始,重复做同一件事。一直重复操作,没有终止,在编程里称为死循环。(避免死循环,容易卡死)

常见的循环结束状态:

  1. 循环满 N 次
  2. 循环达到某个条件

python提供的循环操作,有两个结构:

for - in 循环

适合于循环满 N 次的情景

本质上是在遍历(逐个获取)容器型数据,在遍历获取元素的过程中进行相应的逻辑判断。容器型数据中有几个元素,这个循环就执行几次。

语法:

for 变量名 in 容器型数据:

​ 循环体

解读:

in 可以理解成进入容器中拿元素数据

变量名 in 进入拿到数据之后,赋值给变量名

循环结束点:in 到容器中,没有数据可拿的时候,循环结束

s = 'hello'
# 逐个将字符串s中的元素取出来
for ch in s:
    print(ch)
# 获取字符串中小于l的字符
# 逻辑:获取到元素之后,要对其进行判断,判断是否是小于l的
for ch1 in s:
    if ch1 < 'l':
        print(ch1)

假如跑100圈,使用循环的时候,可以使用range快速生成一个等差数列

range 等差数列

range(stop)
    # 设定一个结束值, 等差数列是从0开始 步长为1 到stop[不包含]结束
        range(10) ====> 0 1 2 3 4 5 6 7 8 9 
    
range(start, stop)
    # 设定了起始值和结束值 等差数列是从start[包含]开始 步长为1 到stop[不包含]结束
        range(1, 11) ====> 1 2 3 4 5 6 7 8 9 10 
    
range(start, stop, step)	#开始,结束,步长

**step步长 **

正数 — 生成的是递增的等差数列 要求 起始值 < 结束值

负数 — 生成的是递减的等差数列 要求 起始值 > 结束值

stop结束位置(不包含)

start开始位置(包含)

​ range (1, 10, 2) ====> 1 3 5 7 9

​ range (10, 0, -2) ====> 10 8 6 4 2

range (100) ===> 0-99

for ele in range(1,101):
  print('跑第',ele,'圈')

for ele1 in range(0,100,5):
  print(ele1)

例:求1+2+3+…+100

产生一个容器,容器防着1-100的数据,遍历容器数值,取出来一个累加起来

注意:和随着取值会发生变化(定义一个变量,用来接受累加和的值),变量名使用等号进行赋值时,会把原本的数据覆盖

total = 0  # 放在循环外面,避免每次循环重置
for i in range(1, 101):
    total += i
    '''
    第一次 in 的时候  i = 1
        total += i ====> total = total + i = 1
    第二次 in 的时候  i = 2
        total += i ====> total = total + i = 1 + 2 = 3
    第三次 in 的时候  i = 3
        total += i ====> total = total + i = 3 + 3 = 6
    '''
print(total)

例: 求1-2+3-4+5-6+…-98+99-100

分析:奇数时相加的,偶数时相减的。获取数据时加还是减,需要判断拿到的数据是奇数还是偶数

total1 = 0
for y in range(1, 101):
    if y % 2 == 1:
        total1 += y
    else:
        total1 -= y
print(total1)

当循环结束的时候,把所有的数据都参与运算了,写的代码与for对其,代表已经出了循环。如果还是缩进的操作,代表还在循环中。

total2 = 0  # 定义一个变量,记录累加和
for k in range(1, 101):
# 不想使用分支判断,可以利用对-1求幂数。(-1)的奇数次幂结果是-1,(-1)的偶数次幂结果是1
    value = (-1) ** (k - 1) * k
    total2 += value
print(total2)

例:求1 ** 2+2 ** 2+3 ** 2+…+10 ** 2 结果

total3 = 0
for a in range(1,11):
    total3 += a ** 2
print(total3)

例:求1-100中能被3整除且个位数为5的数据的个数

count = 0   #需要一个变量作为计数器
for b in range(1,101):
    if b % 3 == 0 and b % 10 == 5:
        count += 1
print(count)

while循环

语法:

While 条件判断:

​ 循环体代码块

解读:

只要条件成立,程序一直循环,直到循环条件不成立

for循环思想

需要一个容器,容器中存放1-10

for i in range(1, 11):
print(i)

while 循环思想

  1. 重复做的操作时什么? 打印数据:每次打印都是一个数据

  2. 做这件事情的条件? 只要打印的数据没有到10,一直打印

num = 1
while num <= 10:	# 循环的操作
  print(num)
  num += 1		# 数据在原来基础上 +1
print('循环结束时,num的值', num)

例:1-10中的偶数 使用while打印

m = 1
while m <= 10:
  if m % 2 == 0:
    print(m)
  m += 1

例:使用while循环,完成1+2+3+…+100

num2 = 1
total = 0
while num2 <= 100:
  total1 += num2
  num2 += 1
print(total1)

例:求1-2+3-4+5-6+…-98+99-100

total = 0
num = 1
while num <= 100:
  if num % 2 == 1:
    total += num
  else:
    total -= num
  num += 1
print(total)

例:求1-100中能被3整除且个位数为5的数据的个数

count = 0		# 计数器
num = 1
while num <= 100:
  if num % 3 == 0 and num % 10 == 5:
    count += 1
  num += 1
print(count)

循环结束的场景

  1. 明确循环次数—— for-in 循环,遍历容器,容器中有几个数据,循环就执行几次

  2. 明确结束状态的—— while 循环

    while 循环条件:满足条件就执行

经过上面的代码演示,while也可以适用于明确循环次数,只不过while写起来麻烦,建议使用for-in

案例:有1023个桃子,猴子每天吃桃子剩余个数的一半多1个,问多少天能吃完(操作的时候,循环次数不明确,使用while循环)

  1. 重复做的事情是什么 桃子个数/2+1
  2. 结束做这件事情的状态(只要没有达到这个状态就不会结束) 桃子个数为0

需要准备的数据

  1. 需要一个变量名,接受桃子的个数,起始值是1023
  2. 计数器:记录吃的天数
peach_count = 1023	# 桃子的个数
day = 0		# 计数器(天数)
while peach_count > 0:
  peach_count = peach_count - (peach_count // 2 + 1)   # 记录每天吃完桃子的剩余个数
  day += 1		# 计数器 +1
print('1023个桃子猴子需要',day,'天吃完')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值