天天看点

Python Day2条件语句循环语句

Python基础知识

  • 条件语句
    • if语句
    • if - else语句
    • if - elif - else语句
    • assert关键字
  • 循环语句
    • while循环
    • while - else 循环
    • for循环
    • for - else 循环
    • range()函数
    • enumerate()函数
    • break语句
    • continue 语句
    • pass 语句
    • 推导式
      • 列表推导式
      • 元组推导式
      • 字典推导式
      • 集合推导式
    • next()函数

条件语句

if语句

if

语句用来对代码进行逻辑控制,具体用法如下

if expression:
    expr_true_suite
           
  • if

    语句的

    expr_true_suite

    代码块只有当条件表达式

    expression

    结果为真时才执行,否则将继续执行紧跟在该代码块后面的语句。
  • 单个

    if

    语句中的

    expression

    条件表达式可以通过布尔操作符

    and

    or

    not

    实现多重条件判断。
  • 要注意

    expression

    后面的冒号,以及后面代码块的缩进
  • if

    语句支持嵌套,即在一个

    if

    语句中嵌入另一个

    if

    语句,从而构成不同层次的选择结构。

if - else语句

Python 提供与

if

搭配使用的

else

,如果

if

语句的条件表达式结果布尔值为假,那么程序将执行

else

语句后的代码。

其伪代码语法如下

if expression:
    expr_true_suite
else:
    expr_false_suite
           

if - elif - else语句

elif

语句即为

else if

,用来检查多个表达式是否为真,并在为真时执行特定代码块中的代码。

其伪代码语法如下

if expression1:
    expr1_true_suite
elif expression2:
    expr2_true_suite
    .
    .
elif expressionN:
    exprN_true_suite
else:
    expr_false_suite
           

assert关键字

assert

关键字我们称之为“断言”,当这个关键词后边的条件为

False

时,程序自动崩溃并抛出

AssertionError

的异常。

示例代码

运行结果

AssertionError Traceback (most recent call last) <ipython-input-1-0295be16ec13> in <module> ----> 1 assert 3 > 7

AssertionError:

循环语句

while循环

while

语句最基本的形式包括一个位于顶部的布尔表达式,一个或多个属于

while

代码块的缩进语句。

while

循环的代码块会一直循环执行,直到布尔表达式的值为布尔假。

其伪代码语法为

while 布尔表达式:
    代码块
           
  • 如果布尔表达式不带有

    <

    >

    ==

    !

    =、

    in

    not in

    等运算符,仅仅给出数值之类的条件,也是可以的。当

    while

    后写入一个非零整数时,视为真值,执行循环体;写入0时,视为假值,不执行循环体。
  • 也可以写入

    str

    list

    或任何序列,长度非零则视为真值,执行循环体;否则视为假值,不执行循环体。

while - else 循环

while

循环正常执行完的情况下,执行

else

输出,如果

while

循环中执行了跳出循环的语句,比如

break

,将不执行

else

代码块的内容。

其伪代码语法如下

while 布尔表达式:
    代码块
else:
    代码块
           

for循环

  • for

    循环是迭代循环,在Python中相当于一个通用的序列迭代器,可以遍历任何有序序列,如

    str

    list

    tuple

    等,也可以遍历任何可迭代对象,如

    dict

  • 每次循环,迭代变量被设置为可迭代对象的当前元素,提供给代码块使用。

其伪代码语法如下

for 迭代变量 in 可迭代对象:
    代码块
           

for - else 循环

while - else

循环类似,当

for

循环正常执行完的情况下,执行

else

输出,如果

for

循环中执行了跳出循环的语句,比如

break

,将不执行

else

代码块的内容,与

while - else

语句一样。

其伪代码语法如下

for 迭代变量 in 可迭代对象:
    代码块
else:
    代码块
           

range()函数

其参数列表如下

  • 这个BIF(Built-in functions)有三个参数,其中用中括号括起来的两个表示这两个参数是可选的。
  • step=1 表示第三个参数的默认值是1。
  • range 这个BIF的作用是生成一个从start参数的值开始到stop参数的值结束的数字序列,该序列包含start的值但不包含stop的值。

最常用的用法如下

for i in range(2, 9, 1): #左闭右开 步长为1
    print(i)
           

运行结果

2

3

4

5

6

7

8

enumerate()函数

其参数列表如下

  • sequence

    :一个序列、迭代器或其他支持迭代对象。
  • start

    :下标起始位置。
  • 返回

    enumerate

    (枚举) 对象

示例代码

tem = [3, 2, 1, 7]
print(list(enumerate(tem)))
           

运行结果

[(0, 3), (1, 2), (2, 1), (3, 7)]

注意:

  • enumerate() 函数对可迭代对象进行迭代,返回

    下标-值

  • enumerate() 函数对字典迭代返回的是

    下标-关键字

  • enumerate() 与

    for

    循环的结合使用。
    for i, a in enumerate(A)
    do something with a 
               

    enumerate(A)

    不仅返回了 A 中的元素,还顺便给该元素一个索引值 (默认从 0 开始)。此外,用

    enumerate(A, j)

    还可以确定索引起始值为

    j

break语句

break

语句可以跳出当前所在层的循环。

continue 语句

continue

终止本轮循环并开始下一轮循环。

pass 语句

pass

语句的意思是“不做任何事”,如果你在需要有语句的地方不写任何语句,那么解释器会提示出错,而

pass

语句就是用来解决这些问题的。

主要用法如下

def a_func():
    pass
           
  • pass

    是空语句,不做任何操作,只起到占位的作用,其作用是为了保持程序结构的完整性。尽管

    pass

    语句不做任何操作,但如果暂时不确定要在一个位置放上什么样的代码,可以先放置一个

    pass

    语句,让代码可以正常运行。

推导式

列表推导式

列表推导式的主要用法是对

collection

中的值进行迭代,并对每个值进行运算得到新的值作为表达式的值

示例代码

x = [i for i in range(100) if (i % 2) != 0 and (i % 3) == 0]
print(x)
           

运行结果

[3, 9, 15, 21, 27, 33, 39, 45, 51, 57, 63, 69, 75, 81, 87, 93, 99]

元组推导式

  • 用法与列表推导式类似,只是生成的是元组

字典推导式

  • 用法与列表推导式类似,只是有两个表达式分别为字典的关键字和值

集合推导式

  • 用法与列表推导式类似,只是生成的是集合

next()函数

next()

函数接受一个迭代器,并返回其下一个迭代值。

示例代码

e = (i for i in range(10))
print(e)

print(next(e))  
print(next(e))  

for each in e:
    print(each, end=' ')
           

运行结果

<generator object at 0x7f40980ff8e0>

1

2 3 4 5 6 7 8 9