04 循环结构

循环结构 - 让代码重复执行(代码只写一遍,重复执行多次)

工具:for、 while

1.for循环

  1. 语法:
for 变量 in 序列:
    循环体
  1. 说明
    for、in - 关键字 固定写法
    变量 - 合法变量名
    序列 - 容器型数据类型对应的数据,例如:字符串、列表、字典、元组、集合、迭代器、生成器、range等
    : - 固定写法
    循环体 - 结构上,和for保存一个缩进的一天或者多条语句(至少一条);
    逻辑上,需要重复执行的代码

  2. 执行过程:
    让变量去序列中取值,一个一个的取,取完为止,每取一个值就执行一次循环体。(for循环循环次数有序列中的元素个数决定)

for x in 'abc':
    print(x,'你好')

打印结果:

# 第1次:
# x = 'a': print(x,'你好') -> print('a','你好')
# 第2次:
# x = 'b': print(x,'你好') -> print('b','你好')
# 第3次:
# x = 'c': print(x,'你好') -> print('c','你好')
# 第4次:(循环结束)

a 你好
b 你好
c 你好

案例:求列表中的和

nums = [10,89,45,23]
for i in nums:
    print(i * 10)

2.while循环

  1. 语法:
while 条件语句:
    循环体
  1. 执行过程:
    不断判断条件语句是否为True,为True就执行循环体。直到条件语句的结构是False,整个循环直接结束!
    (先条件语句是否为True,为True执行循环体,执行完循环体再判断条件语句是否为True,为True再执行循环体,…一次类推,直到条件语句为False,整个循环结束)
x = 0
while x < 10:
    print('hello world')
    x += 1

案例1:求1+2+3+4+…+100的和

sum1 = 0
num = 1
while num < 101:
    sum1 += num
    num += 1
print(sum1)

案例2: 统计100 ~ 200中能被7整除的偶数个数

count = 0
num = 100
while num <= 200:
    if num % 7 == 0:
        count += 1
    num += 2
print(count)

区别:for循环和while循环的选择

基本原则: 能用for循环解决的问题都使用for循环,for循环解决不了的才使用while循环
for循环解决不了的问题:循环次数不确定(程序员在写代码的时候无法确认循环次数 - 次数由使用者决定)

password = '123456'
value = None
while value != password:
    value = input('请输入密码:')

3.continue和break

注意:continue和break是关键字,只能在循环体中使用

1)continue - 结束一次循环

执行循环体的时候遇到了continue,那么这次循环结束,直接进入下一次循环

for i in range(5):
    print('======')
    print('------')
    print('++++++')
for i in range(10):
    if i % 2 == 0:
        continue
    print(i)

i取值:0、1、2、3、4、5、6、7、8、9
i = 0: if 0 % 2 == 0 -> if True: continue
i = 1: if 1 % 2 == 0 -> if False->print(i)

2)break - 结束整个循环

执行循环体的时候如果遇到break,整个循环直接结束

for i in range(5):
    print('======')
    break
    print('------')
    print('++++++')

for i in range(10):
    if i == 3:
        break
    print(i)

3.当while遇上break

while循环使用的固定结构:

while True:
    需要重复执行的操作
    if 循环结束条件:
        break
password = '123456'
while True:
value = input('请输入密码:')
if value == password:
	break

练习:猜数字游戏

系统随机产生一个0~100的整数,然后提示用户输入数字,直到输入正确为止。当输入错误的时候给出相应的提示。

假设随机数是:48
请输入一个整数(0~100):50
大了,再小点儿!
请输入一个整数(0~100):25
小了,再大点儿!
请输入一个整数(0~100):30
小了,再大点儿!

请输入一个整数(0~100):48
恭喜你,猜对了!
(结束)

# 导入随机数random模块
from random import randint
count = 0
value = randint(0,100)
while True:
    print(f'第{count + 1}次')
    num = int(input('请输入数字:'))
    count += 1
    if num == value:
        print('恭喜你,猜对了!')
        break
    elif num < value:
        print('小了,再大点儿!')
    else:
        print('大了,再小点儿')
print(f'一共{count}次')

4.循环的else

完整的循环结构

  1. 完整的for循环
for 变量 in 序列:
    循环体
else:
    代码段
  1. 完整的while循环:
while 条件语句:
    循环体
else:
    代码段

else的作用:

  1. else的存在不会影响原来循环的执行
  2. 如果前面的循环是自然死亡,在循环结束后会执行else中的代码段;如果循环是因为遇到break而结束,else中的代码段不会执行
for i in range(5):
    print('======')
    print('++++++')
    print('------')
else:
    print('!!!!!!')
sum1 = 0
for i in range(10):
    sum1 += i
    if i == 5:
        break
    print(i)
else:
    print('!!!!!!')
print(sum1)

拓展

01 range函数 - 创建一个等差数列

例如:
1 2 3 4 5 6 - 差1
3 6 9 12 - 差3
50 40 30 20 - 差-10

形式:

  1. range(N) - 产生[0,N)的等差数列,差是1; range(5) -> 0,1,2,3,4
  2. range(M,N) - 产生[M,N)的等差数列,差是1; range(5,15) -> 5,6,7,8,9,10,11,12,13,14
    range(-3,3) -> -3,-2,-1,0,1,2
  3. range(M,N,step) - 产生[M,N)的等差数列,差是step;range(3,13,3) -> 3,6,9,12 range(50,19,-10) -> 50,40,30,20

问题:打印’hello world’100次?

for i in range(50,19,-10):
print(i)

02 求和和统计个数的套路

1.累积求和

求和套路:
第1步:在循环外面定义变量来保存最后的和(变量默认值是0)
第2步:通过循环依次获取所有需要求和的对象
第3步:在循环体中获取到一个求和对象,就往保存和的变量中加一个数据(+=)
最后:循环结束的时候保存和的变量中的数据就是最后的和

案例1:求1+2+3+4+…+100的和
sum1 = 0
for i in range(1, 101):
    sum1 += i
print(sum1)
案例2:求100到200中所有偶数的和(包含100和200)
# 方法1:
sum2 = 0
for i in range(100, 201, 2):
    sum2 += i
print(sum2)
# 方法2:
sum2 = 0
for i in range(100,201):
    if i % 2 == 0:
        sum2 += i
print(sum2)
练习:求100以内所有能被3整除但是不能被5整除的数的和
# 方法1:
sum = 0
for i in range(0, 101):
    if i % 3 == 0 and i % 5 != 0:
        sum += i
print(sum)
# 方法2:
sum = 0
for i in range(0, 101, 3):
    if i % 5 != 0:
        sum += i
print(sum)
案例3:求scores中所有分数
scores = [89, 56, 78, 99, 70]
sum3 = 0
for i in scores:
    sum3 += i
print(sum3)

2.统计个数

案例1: 统计scores中不及格的人数
scores = [89, 56, 89, 99, 70, 48, 79, 30]
count = 0
for i in scores:
    if i < 60:
        count += 1
print(count)
练习: 统计100 ~ 200中能被7整除的偶数个数
count = 0
for i in range(100, 201, 2):
    if i % 7 == 0:
        count += 1
print(count)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值