Burnov

导航

04 流程控制(01)

  本章内容

    1、布尔逻辑

    2、if语句

    3、代码块和缩进

    4、循环

    5、比较for循环和while循环

    6、跳出循环和语句块

    7、循环中的循环

------------------------------------------------

  之前所写的简单代码都是直线式的,前后代码之间并没有逻辑关系;也没有判断,也没有分支,而这一章中,我们需要初步来讨论代码之间的逻辑关系;

 

1、布尔逻辑

  我们使用True和False来对任何参数或者语句进行判断,这个就是布尔逻辑值;

  逻辑运算符号有四个:not、and、or、== 分别表示“非、与、或、等于”,所有的决策都可以通过这四个运算符号来做出;

  

  逻辑相等

    ==  判断左右两边的值是否相等

  

  逻辑与

    and  两者同时为真的时候才是真

 

  逻辑或

    or  如何一个为真的,就是真,同时为假的时候才是假

 

  逻辑非

    not  结果反向即可

 

  通过布尔变量来值来进行if语句的判断;

  如果是多个布尔值进行判断,我们则需要通过圆括号来分开进行嵌套;

not (True and True)
not (True and (False or True))

  默认情况下如果没有使用括号分开,则有优先级指定: ==  >  !=  >  not  >  and  >  or

  短路求值:例如shell脚本中  a && b || c ; 如果 a && b 为真,则不用再执行 c 也能算出结果为真,如果 a && b 为假,才需要判断 c;

    Python下的短路求值是一个道理,False and X 中,X 语句不用再进行判断,则该语句一定为 False;同理,在语句 True or X 语句中,不用查看 X 值,语句结果一定是 True;

    【注意:短路求值对我们运行程序很有帮助,但是有时候也会出现我们想象不到的bug】

 

2、if语句

  if语句能够让Python程序具有执行流程,它能让你在程序中做出决策;在程序运行的过程中,选择程序代码块来执行;

  if/else语句:

    检查密码的程序:

# password1.py
pwd = input('What is the password?')  #定义变量pwd,输入密码
if pwd == 'apple': # note use of ==  #进行判断,密码是否等于 apple
    # instead of
    print('Logging on ... ')
else:
    print('Incorrect password.')  #如果不匹配,输出密码不正确
print('All done!')

  【注意:如果是if语句,则后面一定是布尔表达式,则判断结果一定是布尔值类型】

  if/else语句的基本格式如下:

  语句格式如下:

before_block
if cond:
    true_block
else:
    false_block
after_block

 

  if/elif语句

  这个语句是if/else的推广;这个语句下面可以进行多个判断;例如:

# airfare.py
age = int(input('How old are you?'))
if age <= 2:
    print(' free')
elif 2 < age < 13:
    print(' child fare')
else:
    print(' adult fare')

  这个语句下则可以进行多个判断,类似于“选择题”,有四个选项,不仅仅只有两个选项了;

 

  if语句的简写

    这种方式并不推荐,因为这样对于查看代码的人来说,非常困难,如下面的代码:

food = input("What's your favorite food? ")
reply = 'yuck' if food == 'lamb' else 'yum'

    这个代码等于如下代码:

food = input("What's your favorite food? ")  #输入food的值
if food == 'lamb':  #判断food的值是否等于‘lamb’
    relply = 'yuck'
else:
    reply = 'yum'

    

3、代码块与缩进

  Python相对于其他语言而言,我们使用缩进来标识代码块。如下代码:

if pwd == 'apple'":
    print('Logging on ... ')
else:
    print('Incorrect password.')
print('All done!')

  这里 print('Logging on ... ') 的代码必须缩进,才能识别;

  而,print('All done!')则没有缩进,因为它并不属于if的代码块;

   这里注意,缩进可以使用 两个空格的方式,也可以使用 制表符 的方式,但是不要混合使用,建议使用制表符进行缩进;这样的话,会让你的代码变得更加美观;

 

 4、循环(for循环和while循环)

  循环用于运行重复的代码;主要有两种循环--for循环和while循环;for循环更加容易,而while循环更加灵活;

  for循环:

  首先让我们看一段代码:

# count10.py
for i in range(10):  #in 为关键字【注意:每次循环理论上都是从0开始,在执行到n-1,也就是,从0开始到9】
    print(i)
for i in range(5,10):  #这里打印5到9
    print(i)

  如果就要打印1-10,则可以使用如下代码来解决

for i in range(11):
    print(i)
或者
for i in range(10):
    print(i+1)

  如果想反序打印,则需要使用步长来解决,如下代码:

for in range(10,0,-1):
    print(i)
或者不使用步长
for i in range(10):  #【代表了不同的思维方式】
    print(10 - i) 

  

  while循环:

  我们先看一段代码:

# while.py
i = 0
while i < 10:
    print(i)
    i = i + 1 # add 1 to i

  该代码的流程图如下:

  第一行 i = 0 我们叫做初始语句,定义 i 值的初始值;最后一行为 i = i + 1 这段使得 i 值不断变化,否则,容易出现死循环;**几乎所有的while语句都是需要初始值和递增语句的;

  基于上面的条件,while语句的基本语法格式就出来了,如下图:

  基本代码格式如下:

initializer_block
while cond:
    body_block
after_block

  while循环要灵活的多,在while循环前面,你可使用任何代码来完成任何必要的初始化。循环条件可以是任何布尔表达式,递增语句可放在while循环体内的任何位置,并让它做任何你喜欢的事情;

  while循环会形成无限

while True:
    print('spam')

  这个循环下面,运行起来的话,就只能一直循环,无法停止;

  很多情况下,尽量使用for循环来完成对应的工作,而尽量不要使用while循环语句;

  while循环也可以包含为else,但是在这里不做讨论了;

循环,例如:

 

posted on 2019-07-01 17:19  Burnov  阅读(246)  评论(0编辑  收藏  举报