一篇带你参透 Python 循环

Posted 忆想不到的晖

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一篇带你参透 Python 循环相关的知识,希望对你有一定的参考价值。

引言

Python 语法中有两类循环

  • while 循环
  • for 循环

并介绍关键字 continuebreak 在循环中的作用。


程序的基本结构

在程序开发中,一共有三种基本结构:

  • 顺序 —— 从上向下,顺序执行代码
  • 分支 / 选择 —— 根据条件判断,决定执行代码的 分支
  • 循环 —— 让 特定的代码重复 执行

程序的基本结构


while 循环基本使用

  • 循环的作用就是让 指定的代码 重复的执行
  • while 循环最常用的应用场景就是 让执行的代码 按照 指定的次数 重复 执行

while 语句基本语法


while 判断条件:
    循环体语句
    

注意:while 语句以及缩进部分是一个 完整的代码块


while 循环流程图

True
False
开始
判断条件
重复执行的代码
结束

while 循环案例

打印 5 遍 Hello Python

In [22]: 
In [23]: i = 1	# 定义重复次数计数器

In [24]: while i <= 5:
    ...:     print('Hello Python')
    ...:
    ...:     # 处理计数器 i
    ...:     i = i + 1
    ...:
Hello Python
Hello Python
Hello Python
Hello Python
Hello Python    

打印小星星

需求

  • 在控制台连续输出五行 *,每一行星号的数量依次递增
*
**
***
****
*****
  • 使用字符串 * 打印
#!/usr/bin/python3
# -*- coding:utf-8 -*-

# 定义一个计数器变量,从数字1开始,循环会比较方便
row = 1

while row <= 5:

    print("*" * row)

    row += 1


Python 中的计数方法

常见的计数方法有两种,可以分别称为:

  • 自然计数法(从 1 开始)—— 更符合人类的习惯
  • 程序计数法(从 0 开始)—— 几乎所有的程序语言都选择从 0 开始计数

作为程序员的我们,在编写程序时,尽量养成习惯:除非需求的特殊要求,否则 循环 的计数都从 0 开始


while 循环嵌套

while 嵌套就是:while 里面还有 while


基本语法

while 条件 1:
    外层循环体
    ...
    
    while 条件 2:
        内层循环体
        ...
   
	外层循环体
    ...

假设 Python 没有提供 字符串的 * 操作 拼接字符串

需求

  • 在控制台连续输出五行 *,每一行星号的数量依次递增
*
**
***
****
*****

开发步骤

  • 1)完成 5 行内容的简单输出
  • 2)分析每行内部的 * 应该如何处理?
    • 每行显示的星星和当前所在的行数是一致的
    • 嵌套一个小的循环,专门处理每一行中 的星星显示
#!/usr/bin/python3
# -*- coding:utf-8 -*-

row = 1

while row <= 5:

    # 假设 python 没有提供字符串 * 操作
    # 在循环内部,再增加一个循环,实现每一行的 星星 打印
    col = 1

    while col <= row:
        print("*", end="")

        col += 1

    # 每一行星号输出完成后,再增加一个换行
    print()

    row += 1

print() 函数加强

  • 在默认情况下,print 函数输出内容之后,会自动在内容末尾增加换行
  • 如果不希望末尾增加换行,可以在 print 函数输出内容的后面增加 , end=""
  • 其中 "" 中间可以指定 print 函数输出内容之后,继续希望显示的内容
  • 语法格式如下:
# 向控制台输出内容结束之后,不会换行
print("*", end="")

print("*", end="  ")	# 末尾增加两个空格, 不换行

print("*", end="\\t")	# 末尾增加一个制表符位(tab), 不换行

# 单纯的换行
print()

print() 函数中 end="" 表示向控制台输出内容结束之后,不会换行


死循环

由于程序员的原因,忘记 在循环内部 修改循环的判断条件,导致循环持续执行,程序无法终止!

# 一直输出 hello
i = 0
while i <= 10:
    print('hello')
    
    # i = i + 1

在控制台中可以按 Ctrl + C 来进行强制退出死循环。


for 循环基本使用

Pythonfor 循环可以遍历一切 可迭代对象(Iterable),例如一个列表、字符串等。

可迭代对象,在【Python 高级进阶】专栏有详细介绍,大家如果想具体了解,可以先移步到 Python 迭代器 查看


for 语句基本语法


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

for 循环流程图

True
False
开始
是否还有元素?
重复执行的代码
结束

for 循环实例

遍历编程语言列表

In [1]: languages = ['C', 'Python', 'Java', 'C++', 'php']

In [2]: for lang in languages:
   ...:     print(lang)
   ...:
C
Python
Java
C++
Php

In [3]:

遍历字符串

In [3]: message = '人生苦短,我用Python'

In [4]: for msg in message:
   ...:     print(msg)
   ...:
人
生
苦
短
,
我
用
P
y
t
h
o
n

In [5]:

遍历 range() 生成的数字序列

range() 语法

range(start, stop[, step])

参数说明:

  • start: 计数从 start 开始。默认是从 0 开始。例如 range(3)等价于 range(0, 3)
  • stop: 计数到 stop 结束,但不包括 stop。例如 range(0, 5)[0, 1, 2, 3, 4] 没有5
  • step:步长,默认为 1。例如 range(0, 3) 等价于 range(0, 3, 1)

IPython 测验

In [10]: # 只指定 start
    
In [11]: list(range(6))
Out[11]: [0, 1, 2, 3, 4, 5]

In [12]: # start、stop都指定

In [13]: list(range(3, 10))
Out[13]: [3, 4, 5, 6, 7, 8, 9]

In [14]: # start、stop、step都指定

In [15]: list(range(0, 10, 2))
Out[15]: [0, 2, 4, 6, 8]

这样要使用 list 才能展示其内部元素。


for 循环遍历 range()

In [16]: # for 循环遍历 range()

In [17]: for i in range(6):
    ...:     print(i)
    ...:
0
1
2
3
4
5

In [18]: for i in range(3, 9):
    ...:     print(i)
    ...:
3
4
5
6
7
8

In [19]: for i in range(0, 10, 2):
    .以上是关于一篇带你参透 Python 循环的主要内容,如果未能解决你的问题,请参考以下文章

多线程 - 一篇带你理解 InheritableThreadLocal 作用

多线程 - 一篇带你理解 InheritableThreadLocal 作用

Markdown语法入门 一篇带你了解基本语法

Java - 一篇带你了解类成员(基本数据类型/包装类/对象/数组)默认值

Java - 一篇带你了解类成员(基本数据类型/包装类/对象/数组)默认值

[ C++ ] 一篇带你了解C++中动态内存管理