多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
所谓条件语句,顾名思义,就是依据某个条件,满足这个条件后执行下面的内容。 ## [](https://github.com/qiwsir/StarterLearningPython/blob/master/122.md#if)if if,其含义就是:conj. (表条件)如果。if发起的就是一个条件,它是构成条件语句的关键词。 ~~~ >>> a = 8 >>> if a==8: ... print a ... 8 ~~~ 在交互模式下,简单书写一下if发起的条件语句。特别说明,我上面这样写,只是简单演示一下。如果你要写大段的代码,千万不要在交互模式下写。 `if a==8:`,这句话里面如果条件`a==8`返回的是True,那么就执行下面的语句。特别注意,冒号是必须的。下面一行语句`print a`要有四个空格的缩进。这是python的特点,称之为语句块。 唯恐说的不严谨,我还是引用维基百科中的叙述: > Python開發者有意讓違反了縮排規則的程序不能通過編譯,以此來強迫程序員養成良好的編程習慣。並且Python語言利用縮排表示語句塊的開始和結束(Off-side規則),而非使用花括號或者某種關鍵字。增加縮排表示語句塊的開始,而減少縮排則表示語句塊的結束。縮排成為了語法的一部分。例如if語句. > > 根據PEP的規定,必須使用4個空格來表示每級縮排。使用Tab字符和其它數目的空格雖然都可以編譯通過,但不符合編碼規範。支持Tab字符和其它数目的空格僅僅是為兼容很舊的Python程式和某些有問題的編輯程式。 从上面的这段话中,提炼出几个关键点: * 必须要通过缩进方式来表示语句块的开始和结束 * 缩进用四个空格(也是必须的,别的方式或许可以,但不提倡) ## [](https://github.com/qiwsir/StarterLearningPython/blob/master/122.md#ifelseelif)if/else/elif 在进行条件判断的时候,只有if,往往是不够的。比如下图所示的流程 [![](https://box.kancloud.cn/2015-09-07_55ed3b650ad5c.png)](https://github.com/qiwsir/StarterLearningPython/blob/master/1images/12201.png) 这张图反应的是这样一个问题: 输入一个数字,并输出输入的结果,如果这个数字大于10,那么同时输出大于10,如果小于10,同时输出提示小于10,如果等于10,就输出表扬的一句话。 从图中就已经显示出来了,仅仅用if来判断,是不足的,还需要其它分支。这就需要引入别的条件判断了。所以,有了if...elif...else语句。 基本样式结构: ~~~ if 条件1: 执行的内容1 elif 条件2: 执行的内容2 elif 条件3: 执行的内容3 else: 执行的内容4 ~~~ elif用于多个条件时使用,可以没有。另外,也可以只有if,而没有else。 下面我们就不在交互模式中写代码了。打开文本编辑界面,你的编辑器也能提供这个功能,如果找不到,请回到[《写一个简单的程序》](https://github.com/qiwsir/StarterLearningPython/blob/master/105.md)查看。 代码实例如下: ~~~ #! /usr/bin/env python #coding:utf-8 print "请输入任意一个整数数字:" number = int(raw_input()) #通过raw_input()输入的数字是字符串 #用int()将该字符串转化为整数 if number == 10: print "您输入的数字是:%d"%number print "You are SMART." elif number > 10: print "您输入的数字是:%d"%number print "This number is more than 10." elif number < 10: print "您输入的数字是:%d"%number print "This number is less than 10." else: print "Are you a human?" ~~~ 特别提醒看官注意,前面我们已经用过raw_input()函数了,这个是获得用户在界面上输入的信息,而通过它得到的是字符串类型的数据。 上述程序,依据条件进行判断,不同条件下做不同的事情了。需要提醒的是在条件中:number == 10,为了阅读方便,在number和==之间有一个空格最好了,同理,后面也有一个。这里的10,是int类型,number也是int类型. 把这段程序保存成一个扩展名是.py的文件,比如保存为`num.py`,进入到存储这个文件的目录,运行`python num.py`,就能看到程序执行结果了。下面是我执行的结果,供参考。 ~~~ $ python num.py 请输入任意一个整数数字: 12 您输入的数字是:12 This number is more than 10. $ python num.py 请输入任意一个整数数字: 10 您输入的数字是:10 You are SMART. $ python num.py 请输入任意一个整数数字: 9 您输入的数字是:9 This number is less than 10. ~~~ 不知道各位是否注意到,上面的那段代码,开始有一行: ~~~ #! /usr/bin/env python ~~~ 这是什么意思呢? 这句话以#开头,表示本来不在程序中运行。这句话的用途是告诉机器寻找到该设备上的python解释器,操作系统使用它找到的解释器来运行文件中的程序代码。有的程序里写的是/usr/bin python,表示python解释器在/usr/bin里面。但是,如果写成/usr/bin/env,则表示要通过系统搜索路径寻找python解释器。不同系统,可能解释器的位置不同,所以这种方式能够让代码更将拥有可移植性。对了,以上是对Unix系列操作系统而言。对与windows系统,这句话就当不存在。 在“条件”中,就是上节提到的各种条件运算表达式,如果是True,就执行该条件下的语句。 ## [](https://github.com/qiwsir/StarterLearningPython/blob/master/122.md#三元操作符)三元操作符 三元操作,是条件语句中比较简练的一种赋值方式,它的模样是这样的: ~~~ >>> name = "qiwsir" if "laoqi" else "github" >>> name 'qiwsir' >>> name = 'qiwsir' if "" else "python" >>> name 'python' >>> name = "qiwsir" if "github" else "" >>> name 'qiwsir' ~~~ 总结一下:A = Y if X else Z 什么意思,结合前面的例子,可以看出: * 如果X为真,那么就执行A=Y * 如果X为假,就执行A=Z 如此例 ~~~ >>> x = 2 >>> y = 8 >>> a = "python" if x>y else "qiwsir" >>> a 'qiwsir' >>> b = "python" if x<y else "qiwsir" >>> b 'python' ~~~