首页 > 代码库 > Python基础教程系列:八、条件与循环

Python基础教程系列:八、条件与循环

    其实作为条件判断语句或者循环语句,我们在前面已经多多少少涉及了一些,现在我们再做一些补充或者把几个要注意的地方说一下。主要有以下常用语句:if、while、for,以及相互搭配使用的else、elif、break、continue和pass.

    我们挨个简单说一下,简单的一笔带过就可以了,因为大家都学了C,所以主要说一下与C的不同之处。

    1、if与else:

    if expression:
        语句1

        语句2

        ……

    条件语句(expression)不需写在括号中,整个Python语言不使用花括号作为代码块边界,条件语句后面需要写冒号,在while循环语句中也是如此。

    那么既然Python不使用花括号作为代码块边界,Python是通过什么方式呢?答案是通过代码缩进。所以Python语言编程中对代码的缩进格式要求非常严格。这里顺便强调一下缩进方式,通常使用最多的当属制表符Tab键,程序中的\t,其次使用最多的是空格。

    强调:第一、不允许制表符和空格混合使用;第二、如果涉及跨平台实际工作红,尽量不使用制表符,制表符某些情况下也是有问题的,而是统一使用4个空格。第三、如果只是做个练习或者不涉及跨平台等,制表符应该说非常方便,不过还是建议大家养成个良好的编程习惯。

    当if语句中只有一条语句1,这时可以写成 if expression: 语句1   写在一行,这样是可以的,但是不允许这样写,第一不方便阅读,第二如果需要修改程序添加新的语句还是需要将语句1挪下来,其实说白了还是程序编码规范问题。

    在C或Java中,如何判断一个else与哪个if相匹配,是寻找与自己最近的那个if,所以有时候会出现匹配错误的现象,书中称为“悬挂else”,那么在Python中如何判断一个else与哪个if搭配,或者说Python是如何解决“悬挂else”的,答案就是缩进。else与哪个if缩进等级相同,就与哪个if匹配。

/* dangling-else in C */
if (balance > 0.00)//  if1
    if (((balance - amt) > min_bal) && (atm_cashout() == 1))//  if2
        printf("Here‘s your cash; please take all bills.\n");
else //这里的else尽管与if1对其,实际上匹配的还是if2
    printf("Your balance is zero or negative.\n");

if balance > 0.00:  #   if1
    if balance - amt > min_bal and atm_cashout():  #   if2
        print "Here‘s your cash; please take all bills."
else:     #  与if1 对齐,所以与if1匹配
    print ‘Your balance is zero or negative.‘
或者是:
if balance > 0.00:   #   if1
    if balance - amt > min_bal and atm_cashout():   #   if2
        print "Here‘s your cash; please take all bills."
    else:       #与if2匹配
        print ‘Your balance is zero or negative.‘

 if-elseif-else在Python中是if-elif-else,elseif稍微简写了一下。

    在Python中目前还不支持switch/case,也许未来会支持,所以在多重选择时if-elif-else可以替换switch,当然通过其他方法也可以,比如通过字典方式就可以替换switch,还记得昨天讲的字典吗?{1:‘选择1‘, 2:‘选择2‘, ……},这是不是就是case 1: 选择1;case 2:选择 2 ……

    三元操作符的使用,这个在C或者Java中主要写法是(C?X:Y)C为条件表达式,当C为True时,表达式为X,否则为Y,在Python2.5以后集成的语法确定为X if C else Y。

    2、while循环

    while expression:
        语句1

        语句2

        ……

        基本语法与C和java中相同,格式书写注意问题与if类似。

    3、for循环

    for iter_var in iterable:
        suite_to_repeat

    是一种迭代器的使用形式。举个例子:

    for eachLetter in ‘Names‘:
    ... print ‘current letter:‘, eachLetter
    ...
    current letter: N
    current letter: a
    current letter: m
    current letter: e
    current letter: s    

    其实看了这个例子,你是不是就能想起昨天讲的字典,如何获得字典中所有的项?

    4、break和continue语句按理说是个重点内容,但用法和C中一样,我就不说了,break可以跳出循环转到下调语句,continue结束当前循环,继续下一次循环。

    5、pass语句,顾名思义,啥都不干,是个纯粹编码逻辑上的东西。有些地方在语法上要求要有代码, 而Python 中没有对应的空大括号或是分号( ; )来表示C 语言中的 "不做任何事" , 如果你在需要子语句块的地方不写任何语句, 解释器会提示你语法错误. 因此, Python 提供了 pass 语句

    6、else语句,除了if条件语句外,在while和for循环中也可以使用else,for 循环可以有 else 用于循环后处理(post-processing). 它和 while 循环中的else 处理方式相同. 只要for 循环是正常结束的(不是通过 break ), else 子句就会执行.

Python基础教程系列:八、条件与循环