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 子句就会执行.

时间: 2024-10-10 02:05:32

Python基础教程系列:八、条件与循环的相关文章

.Net程序员之Python基础教程学习----判断条件与循环[Fourth Day]

    今天学习Python的判断条件与循环操作. 一. 布尔变量: 在学习判断条件之前必须的了解bool变量,在Python中bool变量与C语言比较类似,与.net差别比较大,其中下面集中情况需要记住. False, '', 0, (), [],{},None 为空,而True,12,'hello',[1] 这些普遍都为真. 其实可以简单理解为,无即是false,有既是true >>> bool(True) True >>> bool(0) False >&g

Python基础教程系列:七、字典

字典是Python语言中唯一的映射类型.映射类型不要求用数字值做索引就可以从一个容器中获取对应的数据项.你可以用键(key)直接映射到值,这就是为什么叫映射的原因,映射,我的理解就是索引,顺藤摸瓜就可以找到背后的幕后者.字典是Python中最强大的数据类型之一. 刚开始接触字典还是在Hadoop中的mapreduce,其实说白了就是键值对(key/value),所谓的索引通常是指key,而幕后者通常指的是value.每个key对应一个value,主要的好处是方面归类,而且按照key进行查找val

python基础教程(八)

创建自已的对象(类)是python非常核心的概念,事实上,python被称为面向对象语言,本章会介绍如何创建对象.以及面向对象的概念:继承.封装.多态. 多态: 可对不同类的对象使用同样的操作. 封装:对外部世界隐藏对象的工作细节. 继承:以普通的类为基础建立专门的类对象. 多态 面向对象程序设计最有趣的特性是多太,它是是让大多数人犯晕的特性.所以,先来介绍这个. 多态意思是"有多种形式".多态意味着就算不知道变量所引用的对象类是什么,还是能对它进行操作,而它也会根据对象(或类)类型的

Python基础教程系列:五、序列

列表也是序列的一种,所以对于列表的操作同样适用于列表.也可以通过下标或者切片操作来访问某一个或者某个子列表.那么列表和字符串有什么区别呢?首先字符串必须只能由字符组成,即便字符串中有数字,那也是字符类型的数字,不可直接用于数学计算,其次,字符串中的字符具有不可变性.但是列表是可以保留任意数目的Python对象的灵活容器,就像一个大箱子,什么对象都可以往里放.列表具有元素可变性,在序列中,列表是唯一一种支持元素可变性的数据结构.列表在形式上类似于C.Java中的数组,但与数组还是有很大区别的.数组

Python基础教程系列:七、字典(续)

不好意思,昨天有急事耽搁了,今天我们接着说字典.首先通过key往字典中添加三条记录.其中方括号中的那就是key,等式右边的就是value,别学完了序列后,总感觉中括号中的那是下角标. 那么字典的更新,包括增.删.改也都分别作了介绍.删除整个字典相对较少,毕竟实际工作中不像做练习,随便删了就可以.那么真想删除整个字典,del dict1即可.其中pop(),这不就相当于出栈操作么,取出来了也就相当于删除了. 字典操作: 1.字典比较:cmp(),这个比较起来也比较复杂,毕竟也不是完全数与数比大小或

Python基础教程系列:九、文件操作

一.open()函数 open()以及file()(open()与file()等价,可以任意替换)提供了初始化输入/输出(I/O)操作的通用接口.open()函数成功打开一个文件后就会返回一个文件对象,说白了你就可以接着读写了,否则就bug了. 语法:file_object = open(file_name, access_mode='r', buffering=-1) 第一个参数是文件名或者路径(绝对或相对路径),第二个参数叫文件打开的模式,不写时默认是'r'模式.'r'模式是只读模式.'w'

Python基础学习代码之条件和循环

def func1():     alist = ['Cathy','Terry','Joe','Health','Lucy']     for i in  range(-1,-len(alist)-1,-1):         print i,alist[i] def func2():     alist = ['Cathy','Terry','Joe','Health','Lucy']     for i,name in enumerate(alist):         print '%d

Python基础教程系列:六、元组

实际上元组是跟列表非常相近的另一种容器类型.元组和列表看起来不同的一点是元组用的是圆括号而列表用的是方括号.而功能上,元组和列表相比有一个很重要的区别,元组是一种不可变类型.正因为这个原因,元组能做一些列表不能做的事情.比如用做一个字典的key.另外当处理一组对象时,这个组默认是元组类型.比如  x, y = 1, 2   ;   x, y ---->(1, 2) 所以呢,在这一章节,我们基本就不再从头到尾挨个说了,它和列表的基本操作都是一样的. 我们重点说一下元组和列表间的转换以及元组和列表的

Python基础教程(第五章 条件、循环和其他语句)

本文内容全部出自<Python基础教程>第二版,在此分享自己的学习之路. ______欢迎转载:http://www.cnblogs.com/Marlowes/p/5329066.html______ Created on Xu Hoo 读者学到这里估计都有点不耐烦了.好吧,这些数据结构什么的看起来都挺好,但还是没法用它们做什么事,对吧? 下面开始,进度会慢慢加快.前面已经介绍过了几种基本语句(print语句.import语句.赋值语句).在深入介绍条件语句和循环语句之前,我们先来看看这几种基