Python循环流程语句 while

说起循环,发一张图,不知道能不能勾起大家小时候的回忆。

循环多支笔写作业

循环就是让指定的代码重复地执行。

python 中的 while 语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务。

当要求你在页面上打印5遍“Hello Python”,你可以写5行 print代码,但是如果要求打印100行,1000行呢,这时就要使用 while 语句了。

一、while 语句基本语法

while 判断条件(condition):
    执行语句(statements)……

执行语句可以是单个语句或语句块。

判断条件可以是任何表达式,任何非零、或非空(null)的值均为true。

while 语句执行的具体流程为:首先判断条件表达式的值,其值为真(True)时,则执行代码块中的语句,当执行完毕后,再回过头来重新判断条件表达式的值是否为真,若仍为真,则继续重新执行代码块...如此循环,直到条件表达式的值为假(False),才终止循环。

流程图如下


循环流程图

实例:打印 5 遍 Hello Python

# 1. 定义重复次数计数器
i = 1

# 2. 使用 while 判断条件
while i <= 5:
    # 要重复执行的代码
    print("Hello Python")

    # 处理计数器 i
    i = i + 1

这里特别强调一点,绝对不能忘记在循环内部增加修改循环的判断条件,否则就会出现的死循环现象。

再说明一个计数的习惯问题。人类的习惯都是从1开始计数,但几乎所有的程序中都习惯从0开始计数。

因此大家尽量养成习惯吧:除非是需求的特殊要求,否则循环的计数都从 0 开始。

二、赋值运算符

在 Python 中,使用 = 符号可以给变量赋值。
在算术运算时,为了简化代码的编写,Python 还提供了一系列的与算术运算符对应的赋值运算符。

运算符 描述 实例
= 简单的赋值运算符 c = a + b 将 a + b 的运算结果赋值为 c
+= 加法赋值运算符 c += a 等效于 c = c + a
-= 减法赋值运算符 c -= a 等效于 c = c - a
*= 乘法赋值运算符 c *= a 等效于 c = c * a
/= 除法赋值运算符 c /= a 等效于 c = c / a
//= 取整除赋值运算符 c //= a 等效于 c = c // a
%= 取模(余数)赋值运算符 c %= a 等效于 c = c % a
**= 幂赋值运算符 c **= a 等效于 c = c ** a

注意:赋值运算符中间不能使用空格。

下面来2个实例巩固下知识。
计算 0 ~ 100 之间所有数字的累计求和结果

# 定义最终结果的变量
result = 0

# 定义一个整数的变量记录循环的次数
i = 0

# 开始循环
while i <= 100:

    # 每一次循环,都让 result 这个变量和 i 这个计数器相加
    result += i

    # 处理计数器
    i += 1

print("0~100之间的数字求和结果 = %d" % result)

计算 0 ~ 100 之间 所有 偶数 的累计求和结果

# 定义一个记录最终结果的变量
result = 0
i = 0

while i <= 100:
    # 判断变量 i 中的数值,是否是一个偶数
    # 偶数 i % 2 == 0
    # 奇数 i % 2 != 0
    if i % 2 == 0:
        # 当 i 这个变量是偶数时,才进行累加操作!
        result += i
    i += 1

print("0~100之间的偶数累加结果 = %d" % result)

三、循环中使用 else 语句

在 python 中,while … else 在循环条件为 false 时执行 else 语句块:

实例:

count = 0
while count < 5:
    print("%d is  less than 5" % count)
    count = count + 1
else:
    print("%d is not less than 5" % count)

以上实例输出结果为:

0 is less than 5
1 is less than 5
2 is less than 5
3 is less than 5
4 is less than 5
5 is not less than 5

四、循环的终止 break 和 continue

break 和 continue 是专门在循环中终止循环操作所使用的关键字。

break:某一条件满足时,退出整个循环,不再执行所有后续重复的代码。

实例

i = 0

while i < 10:
    # break 某一条件满足时,退出循环,不再执行后续重复的代码
    # i == 3
    if i == 3:
        break

    print(i)

    i += 1

print("over")

continue:某一条件满足时,跳出本次循环,不执行本次循环后续的代码,但不会终止整个循环。

实例

i = 0

while i < 10:
    # 当 i == 7 时,不希望执行需要重复执行的代码
    if i == 7:
        # 在使用 continue 之前,同样应该修改计数器
        # 否则会出现死循环
        i += 1
        continue
    # 重复执行的代码
    print(i)
    i += 1

break 和 continue 只针对当前所在小循环有效,即如果出现循环嵌套,只能跳出 break 或 continue 所处的那个循环。

五、循环嵌套

循环嵌套就是 while 语句里面还有 while。

while 条件 1:
    条件满足时,做的事情1
    条件满足时,做的事情2
    条件满足时,做的事情3
    ...(省略)...
    
    while 条件 2:
        条件满足时,做的事情1
        条件满足时,做的事情2
        条件满足时,做的事情3
        ...(省略)...
    
        处理条件 2
    
    处理条件 1

实例:输出五行 *,每一行星号的数量依次递增。

原来的方法:

row = 1

while row <= 5:

    print("*" * row)

    row += 1

循环嵌套的方法:

# 每行显示的星星和当前所在的行数是一致的
# 嵌套一个小的循环,专门处理每一行中列的星星显示。  
row = 1

while row <= 5:
    # 在循环内部,再增加一个循环,实现每一行的 星星 打印
    col = 1
    while col <= row:
        print("*", end="")
        col += 1
    # 每一行星号输出完成后,再增加一个换行
    print("")
    row += 1
print的知识点

在默认情况下,print 函数输出内容之后,会自动在内容末尾增加换行。
如果不希望末尾增加换行,可以设置 print 函数的第2个参数 end 为空。

语法格式如下:

# 向控制台输出内容结束之后,不会换行
print("*", end="")

# 单纯的换行
print("")

实例:打印九九乘法表

# 定义起始行
row = 1

# 最大打印 9 行
while row <= 9:
    # 定义起始列
    col = 1
    # 最大打印 row 列
    while col <= row:
        # end = "",表示输出结束后,不换行
        # "\t" 可以在控制台输出一个制表符,协助在输出文本时对齐
        print("%d * %d = %d" % (col, row, row * col), end="\t")
        # 列数 + 1
        col += 1
    # 一行打印完成的换行
    print("")
    # 行数 + 1
    row += 1
补充知识:转义符

ASCII 编码为每个字符都分配了唯一的编号,称为编码值。

在 Python 中,一个 ASCII 字符除了可以用它的实体(也就是真正的字符)表示,还可以用它的编码值表示。这种使用编码值来间接地表示字符的方式称为转义字符(Escape Character)。

转义字符以\0或者\x开头,以\0开头表示后跟八进制形式的编码值,以\x开头表示后跟十六进制形式的编码值,Python 中的转义字符只能使用八进制或者十六进制。具体格式如下:

\0dd
\xhh
# dd 表示八进制数字,hh 表示十六进制数字。

直接接使用 ASCII 码记忆不方便,也不容易理解,所以,针对常用的控制字符,又定义了简写方式,完整的列表如下。

转义字符 描述
\\ 反斜杠符号
\' 单引号
\" 双引号
\n 换行符,将光标位置移到下一行开头
\t 水平制表符,也即 Tab 键,一般相当于四个空格
\r 回车符,将光标位置移到本行开头
\b 退格(Backspace),将光标位置移到前一列

扫码关注公众号

你可能感兴趣的:(Python循环流程语句 while)