Python中的for循环用法详解,一文搞定它

简介: Python中的for循环用法详解,一文搞定它

for循环

在Python中,for循环是一种迭代结构,用于遍历可迭代对象(如列表、元组、字符串、字典、集合等)中的元素。

for循环可以解决while循环的局限性

#while循环在遍历数据时的局限性

如下for循环可以实现

lst = [1,2,3,4,5]  # ok
i = 0
while i < len(lst):
    print(lst[i])
    i+=1

用while循环无法实现:

setvar = {"a","b","c"} # not ok
i = 0
while i < len(setvar):
    print(setvar[i])
    i+=1


1.for循环的基本语法

Iterable 可迭代性数据:1.容器类型数据 2.range对象 3.迭代器

for 变量 in Iterable:
    code1
#字符串
container = "北京和深圳温差大概20多度"
#列表
container = [1,2,3,4,4,5]
#元组
container = ("孙开洗","孙健","孙悟空")
#集合 
container = {"陈璐","曹静怡","王志国","邓鹏","合力"}
#字典
container = {"cl":"风流倜傥","cjy":"拳击选手","wzg":"寻花问柳","dp":"帅气,祖国的栋梁","hl":"你是个好人"}

#遍历数据

for i in container:
    print(i)

(1)遍历不等长多级容器

container = [1,2,3,4,("嗄","234",{"马春配","李虎凌","刘子涛"})]
for i in container:
    # 判断当前元素是否是容器,如果是,进行二次遍历,如果不是,直接打印
    if isinstance(i,tuple):
        # ("嗄","234",{"马春配","李虎凌","刘子涛"})
        for j in i:
            # 判断当前元素是否是集合,如果是,进行三次遍历,如果不是,直接打印
            if isinstance(j,set):
                # j = {"马春配","李虎凌","刘子涛"}
                for k in j :
                    print(k)
            else:
                print(j)
                
    # 打印数据
    else:
        print(i)

(2)遍历不等长多级容器

container = [("刘玉波","历史源","张光旭"), ("上朝气","于朝志"),("韩瑞晓",)]
for i in container:
    for j in i:
        print(j)

(3)遍历等长的容器

container = [("马云","小马哥","马春配") , ["王健林","王思聪","王志国"],{"王宝强","马蓉","宋小宝"}]
for a,b,c in container:
    print(a,b,c)

2.变量的解包

a,b,c = "poi"
a,b = (1,2)
a,b = 1,2
a,b,c = [10,11,12]
a,b = {"林明辉","家率先"}
a,b = {"lmh":"林明辉","jsx":"家率先"}
a,b,c = ("马云","小马哥","马春配")
print(a,b,c)

3.for…else【详细讲解】

for 临时变量 in 序列:
    重复执行的代码
    ......
else:
    循环正常结束后要执行的代码

所谓else指的是循环正常结束后要执行的代码,即如果是break终止循环的情况。else下方缩进的代码将不执行。

4.range对象

range([开始值,] 结束值 [,步长])

取头舍尾,结束值本身获取不到,获取到它之前的那一个数据

#range(一个值)  默认从0开始
for i in range(5): # 0 ~ 4
    print(i)

#range(二个值)
for i in range(3,8): # 3 4 5 6 7 
    print(i)

#range(三个值) 正向的从左到右
for i in range(1,11,3): # 1 4 7 10 
    print(i)

#range(三个值) 逆向的从右到左
for i in range(10,0,-1): # 10 9 8 7 ... 1 
    print(i)


5.总结

while 一般用于处理复杂的逻辑关系

for 一般用于迭代数据

部分情况下两个循环可以互相转换;

i = 1
while i <= 9:
    j = 1
    while j <= i:
        print("%d*%d=%2d " % (i,j,i*j) ,end="" )
        j+=1
    print()    
    i +=1

for i in range(1,10):
    for j in range(1,i+1):
        print("%d*%d=%2d " % (i,j,i*j) ,end="" )
    print()

for循环乘法口诀

方向二:

方向三:

方向四:

6.打印 1 ~ 10 跳过5

i = 1
while i <= 10:    
    if i == 5:
        i += 1
        continue
    print(i)
    i +=1
    
for i in range(1,11):
    if i == 5:
        continue
    print(i)

7.打印菱形小星星

     *
    ***
   *****
  *******
 *********
***********
***********
 *********
  *******
   *****
    ***
     *

空格 + 星星 + 换行


总行数:

对于最大行任意个星星n ,总行数: n // 2 + 1

13 -> 7

11 -> 6

9 -> 5

7 -> 4

空格:

对于当前行i , 空格数量 = 总行数 - 当前行

1 => 5

2 => 4

3 => 3

4 => 2

5 => 1

6 => 0

星星:

对于当前行i , 星星数量 = 2 * 当前行 - 1

1 => 1

2 => 3

3 => 5

4 => 7

n = 13
hang = n // 2 + 1
i = 1
while i <= hang:
    # 打印空格
    kongge = hang - i
    print(" " * kongge, end="")

    # 打印星星
    xingxing = 2 * i - 1
    print("*" * xingxing, end="")

    # 打印换行
    print()
    i += 1

i = hang
while i >= 1:
    # 打印空格
    kongge = hang - i
    print(" " * kongge, end="")

    # 打印星星
    xingxing = 2 * i - 1
    print("*" * xingxing, end="")

    # 打印换行
    print()
    i -= 1


方法二:

#打印菱形

     *
    ***
   *****
  *******
 *********
***********
***********
 *********
  *******
   *****
    ***
     *

最大行星星数n

n = 2*hang - 1
kongge = hang - i
xingxing = 2*i -1
n = 13
hang = int((n + 1) / 2)
i = 1
while i <= hang:
    kongge = hang - i
    print(" " * kongge,end='')
    xingixng = 2*i - 1
    print(f"*"* xingixng,end='')
    print()
    i += 1


i = hang
while i >= 1:
    kongge = hang - i
    print(" " * kongge,end='')
    xingixng = 2*i - 1
    print(f"*"* xingixng,end='')
    print()
    i -= 1

菱形二

   *
  * *
 * * *
* * * * 
* * * * 
 * * *
  * *
   *

行数 n 星星 n

kongge = n - i

hang = 5
i = 1
while i <= hang:
    kongge = hang - i
    print(f" " * kongge,end='')
    xingxing = i
    if i == 1:
        print("*",end='')
    else:
        j = 1
        while j <= 2*i -1:
            if j % 2 == 1:
                print("*",end='')
            else:
                print(" ",end='')
            j += 1
    print()
    i += 1

i = hang
while i >= 1:
    kongge = hang - i
    print(f" " * kongge,end='')
    xingxing = i
    if i == 1:
        print("*",end='')
    else:
        j = 1
        while j <= 2*i -1:
            if j % 2 == 1:
                print("*",end='')
            else:
                print(" ",end='')
            j += 1
    print()
    i -= 1


相关文章
|
2月前
|
Go 调度 Python
Golang协程和Python协程用法上的那些“不一样”
本文对比了 Python 和 Go 语言中协程的区别,重点分析了调度机制和执行方式的不同。Go 的协程(goroutine)由运行时自动调度,启动后立即执行;而 Python 协程需通过 await 显式调度,依赖事件循环。文中通过代码示例展示了两种协程的实际运行效果。
105 7
|
5月前
|
人工智能 数据库连接 API
掌握Python的高级用法:技巧、技术和实用性示例
本文分享了Python的高级用法,包括生成器、装饰器、上下文管理器、元类和并发编程等。生成器通过`yield`实现懒加载序列;装饰器用于增强函数功能,如添加日志或性能分析;上下文管理器借助`with`语句管理资源;元类动态定制类行为;并发编程利用`threading`和`asyncio`库提升任务执行效率。掌握这些高级概念可优化代码质量,解决复杂问题,提高程序性能与可维护性。
113 6
|
5月前
|
机器学习/深度学习 算法 关系型数据库
Python循环进阶:嵌套与控制的深度解析
本文深入探讨Python中嵌套循环的原理与应用,从数学模型到工程实践全面解析。内容涵盖嵌套循环的本质(如笛卡尔积实现、变量作用域)、精细控制技巧(如break/continue、迭代器协议、异常处理),以及性能优化策略(预计算、向量化等)。同时结合树形结构遍历、动态规划、游戏开发等典型场景,提供最佳实践建议。掌握这些技巧,助你突破编程瓶颈,实现复杂问题的优雅解决。
165 6
|
6月前
|
Python
Python教程:os 与 sys 模块详细用法
os 模块用于与操作系统交互,主要涉及夹操作、路径操作和其他操作。例如,`os.rename()` 重命名文件,`os.mkdir()` 创建文件夹,`os.path.abspath()` 获取文件绝对路径等。sys 模块则用于与 Python 解释器交互,常用功能如 `sys.path` 查看模块搜索路径,`sys.platform` 检测操作系统等。这些模块提供了丰富的工具,便于开发中处理系统和文件相关任务。
237 14
|
6月前
|
存储 Shell 开发者
Python用户输入与While循环
本文介绍了Python中用户输入与while循环的结合使用,通过`input()`函数获取用户输入,并利用while循环实现重复操作,如创建交互式程序或用户驱动的循环。示例代码展示了如何让用户输入数字并计算总和,直到输入指定退出命令。这种组合能帮助开发者构建强大的交互式Python应用。
149 1
|
7月前
|
SQL Oracle 关系型数据库
【YashanDB知识库】共享利用Python脚本解决Oracle的SQL脚本@@用法
【YashanDB知识库】共享利用Python脚本解决Oracle的SQL脚本@@用法
|
7月前
|
SQL Oracle 关系型数据库
【YashanDB知识库】共享利用Python脚本解决Oracle的SQL脚本@@用法
本文来自YashanDB官网,介绍如何处理Oracle客户端sql*plus中使用@@调用同级目录SQL脚本的场景。崖山数据库23.2.x.100已支持@@用法,但旧版本可通过Python脚本批量重写SQL文件,将@@替换为绝对路径。文章通过Oracle示例展示了具体用法,并提供Python脚本实现自动化处理,最后调整批处理脚本以适配YashanDB运行环境。
|
11月前
|
Python
Python三引号用法与变量详解
本文详细介绍了Python中三引号(`&quot;&quot;&quot;` 或 `&#39;&#39;&#39;`)的用法,包括其基本功能、如何在多行字符串中使用变量(如f-string、str.format()和%操作符),以及实际应用示例,帮助读者更好地理解和运用这一强大工具。
943 2
|
11月前
|
开发工具 Python
[oeasy]python043_自己制作的ascii码表_循环语句_条件语句_缩进_indent
本文介绍了如何使用Python制作ASCII码表,回顾了上一次课程中`print`函数的`end`参数,并通过循环和条件语句实现每8个字符换行的功能。通过调整代码中的缩进,实现了正确的输出格式。最后展示了制作完成的ASCII码表,并预告了下一次课程的内容。
119 2
|
11月前
|
Python
在 Python 中实现各种类型的循环判断
在 Python 中实现各种类型的循环判断
189 2

推荐镜像

更多