其实作为条件判断语句或者循环语句,我们在前面已经多多少少涉及了一些,现在我们再做一些补充或者把几个要注意的地方说一下。主要有以下常用语句: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 子句就会执行.