Python--- for循环

for 循环详解

for 循环语法结构

for 变量 in 可迭代对象:
    for 循环逻辑

从购物过程理解 for 循环

购物车

我们都有在超市购物的经历,将一件一件的商品放进购物车:

我们如果把购物车比做一个容器,例如学习过的列表,元组,字典等数据结构,那么里面的商品就可以看成是一个个元素,而且购物车中的元素是有固定数量的。

扫码结账

当我们去超时收银台扫码结账的时候,店员会将购物车中的商品一件一件的取出,然后扫描二维码。注意这里的过程是拿一件,扫一件。

又因为购物车中商品数量是有限的,所以扫描商品的次数也是有限次。比如,购物车中有5件商品,那么最后就会扫描 5 次。

案例:扫描商品 计算购物车商品总价 

# cart 表示购物车
cart = ["巧克力派", "鱿鱼丝", "碎冰冰", "Python从入门到入坟"]

# for 的逻辑:店员每次从 cart 中拿出一个 item 进行扫码
for item in cart:
    print("扫码: " + item)

total = 0
price = [11.88,10,18.88,99.99]
for dc in price:
    total += dc #total += 18.88  total += 10 ... total += 99.99
print("总价为:",total)

从上述代码可以看出,购物车cart中有5件商品,所以for中的print逻辑执行了5次。for一般用于指定次数的循环逻辑中,一般情况下,循环次数未知采用while循环,循环次数已知,采用for循环。在for关键字后面跟的这个item变量,变量名是可以根据变量命名规则更改的。

遍历以及迭代器

遍历

我们如果把店员将购物车商品一件一件取出进行扫码的过程,比喻成将某个容器中的元素一个个取出然后进行后续操作,这个过程就叫做遍历。、

遍历不仅限于列表,还适用于元组,字典和字符串类型。

可迭代对象

**概念:**一个实现了__iter__方法的对象是可迭代对象,一个实现next方法的对象则是迭代器。

**人话:**现阶段我们学过的可迭代对象有 字符串,列表,元组,集合,字典,range(),并且能被 for 循环的都是可迭代对象。

案例:遍历字符串

# 遍历字符串
str01 = "hello world"
for str_item in str01:
    print(str_item)

for 循环特性

break、continue、else

关键字作用
break结束当前循环
continue跳出当次循环,记住执行下次循环
else循环正常结束(非 break 退出),执行 else 逻辑

案例:打印列表中元素,遇到小于0的元素停止打印

break 应用

for item in [1, 2, 3, -4, 5, -6]:
    if item < 0:
        break
    print("item is: " + item)
print("for循环外部:打印完毕")

continue 应用

sum_for = 0
for item in [1, 2, 3, -4, 5, -6]:
	if item < 0:
        continue
	sum_for += item
    print("加了一次~")
print("for循环外部:计算完毕, sum: " + str(sum_for))

range 函数

range 函数是一个内建函数,它的返回值是一个半闭半开范围内的数字。for 循环常与range函数一起使用,range 函数为循环提供条件。

语法结构

案例

常规使用:

>>> tmp = range(1, 10)
>>> tmp
range(1, 10)
>>> len(tmp)
9
>>> list(tmp)
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> tmp01 = range(5)
>>> tmp01
range(0, 5)
>>> list(tmp01)
[0, 1, 2, 3, 4]

因为 range 函数的使用和切片比较类似,所以同样具有切片的使用特性:

>>> tmp = range(1, 10, 2)
>>> list(tmp)
[1, 3, 5, 7, 9]
>>> tmp01 = range(10, 1, -2)
>>> tmp01
range(10, 1, -2)
>>> list(tmp01)
[10, 8, 6, 4, 2]

与 for 循环一起使用

可以把 range 函数当成购物车,购物车中的商品是一个个范围内的数字,要想拿出里面的数字,就得遍历,所以 range 可以和 for 连用,可以控制循环次数。

作为序列的下标索引,获取元素

str01 = "hello world"
for item in str01:
    print("item:",item)
print("**********************************************************************")


for item in range(3):  #控制循环次数
    print("range item:",item)
list01 = ["zs","ls","ww","zl"] # 作为序列的下标索引,获取元素
for item in range(4):
    if item % 2 == 0:
        print(list01[item])

 

列表解析

它是一个非常有用、简单、而且灵活的工具,可以用来动态地创建列表

语法结构

说明

这个语句的核心是 for 循环,它遍历可迭代对象的所有条目

expr 表达式应用于序列的每个成员,最后的结果值是该表达式产生的列表。也就类似于我们从购物车中拿出1件商品,接下来要做的事情。

 列表解析式

list01 = [i for i in range(1, 11)]

列表解析式相对于for循环,只是变了一种结构,核心还是for循环,所以我们只需要关心语法即可。

list01 = []
for i in range(1,6):
    list01.append(i*2)
print("list01:",list01)
list02 = [i*2 for i in range(1,6)]
print("list02:",list02)

 

 

综合练习

练习:斐波那契数列

  1. 斐波那契数列就是某一个数,总是前两个数之和,比如 0,1,1,2,3,5,8
  2. 使用for循环和range函数编写一个程序,计算有10个数字的斐波那契数列
  3. 改进程序,要求用户输入一个数字,可以生成用户需要长度的斐波那契数列
#1
fib = [0,1]  # 定义列表,指定斐波那契数列的初始两个值
for i in  range(8):  # for循环执行8次,列表fib中的元素个数变为10【初始2个 + 新增
的8个】
    fib.append(fib[-1] + fib[-2])  # 列表追加,每次都是最后一个元素和倒数第二个>元素相加,产生新的元素
print(fib)  # 打印列表fib


#2
fib1 = [0,1]  #定义列表,指定初始值
n = int(input("长度:"))  #定义变量n,表示列表中的个数
# 因为本身有2个初始值,所以要用n-2,for循环执行n-2次,列表增加n-2个元素
for i in range(n-2):
    fib1.append(fib1[-1]+fib1[-2])
print(fib1)

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值