X Tutup
>众百姓听的时候,耶稣对门徒说,“你们要防备文士,他们好穿长衣游行,喜爱人在街市上问他们安,又喜爱会堂里的高位,筵席上的首座。他们侵吞寡妇的家产,假意作很长的祷告。这些人要受更重的刑罚。”(LUKE 20:45-47) #语句(2) 所谓条件语句,顾名思义,就是依据某个条件,满足这个条件后执行下面的内容。 ##if if翻译为中文是“如果”。它所发起的就是一个条件语句。 换言之,if是是构成条件语句的关键词。 最简单的方式,就是: if bool(conj): do something 一个非常简单的例子: >>> a = 8 >>> if a == 8: ... print a #Python 3: print(a) ... 8 简单解释。 `if a==8:`,这句话里面如果条件`a==8`返回的是True,那么就执行下面的语句。特别注意,冒号是必须的。下面一行语句`print a`(Python 3: `print(a)`)要有四个空格的缩进。这是Python的特点,称之为语句块。 重要的话说几遍都不为过,“要缩进四个空格”。 唯恐说的不严谨,我还是引用维基百科中的叙述: >Python開發者有意讓違反了縮排規則的程序不能通過編譯,以此來強迫程序員養成良好的編程習慣。並且Python語言利用縮排表示語句塊的開始和結束(Off-side規則),而非使用花括號或者某種關鍵字。增加縮排表示語句塊的開始,而減少縮排則表示語句塊的結束。縮排成為了語法的一部分。例如if語句. >根據PEP的規定,必須使用4個空格來表示每級縮排。使用Tab字符和其它數目的空格雖然都可以編譯通過,但不符合編碼規範。支持Tab字符和其它数目的空格僅僅是為兼容很舊的Python程式和某些有問題的編輯程式。 从上面的这段话中,提炼出几个关键点: - 必须要通过缩进方式来表示语句块的开始和结束 - 缩进用四个空格(也是必须的,别的方式或许可以,但不提倡) ##if ... elif ... else 在进行条件判断的时候,只有if,往往是不够的。比如下图所示的流程 ![](./1images/12201.png) 这张图反应的是这样一个问题: 输入一个数字,判断该数字和10的大小关系。如果大于10,则输出大于10的提示;如果小于10,则输出小于10的提示;如果等于10,就输出表扬的一句话。 从图中就已经显示出来了,仅仅用`if`来判断,是不足的,还需要其它分支。这就需要引入别的条件判断了。所以,有了`if ... elif ... else`语句。 基本样式结构: if 条件1: 语句块1 elif 条件2: 语句块2 elif 条件3: 语句块3 ... else: 语句块4 `elif`和`else`发起的部分,都可以省了,那时就回归到了只有一个`if`的情况了。 为了应付多条件判断,就不能省略。 下面我们就不在交互模式中写代码了。打开你选择的写Python代码的编辑器,它一定得是你认为最好的武器。 Python 2的代码如下: #! /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 "您输入的数字是:{}".format(number) print "This number is more than 10." elif number < 10: print "您输入的数字是:{}".format(number) print "This number is less than 10." else: print "Are you a human?" Python 3的代码如下: #! /usr/bin/env python #coding:utf-8 print("请输入任意一个整数数字:") number = int(input()) if number == 10: print("您输入的数字是:{}".format(number)) print("You are SMART.") elif number > 10: print("您输入的数字是:{}".format(number)) print("This number is more than 10.") elif number < 10: print("您输入的数字是:{}".format(number)) print("This number is less than 10.") else: print("Are you a human?") 对上述程序,需要说明几点。 - `#! /usr/bin/env python`。因为我是在Ubuntu操作系统中调试的程序,所以这个是必须的。如果你是在windows里面,可以省略。 - `#coding:utf-8`。在程序中有中文,有英文,即便是没有中文,也要声明程序的编码格式是utf-8。 - `raw_input()`或者`input()`得到的是字符串,因为在程序中,要将输入的数字跟整数10进行比较,所以要将该字符串转化为整数,因此使用了`int()`函数。 上述程序,依据条件进行判断,不同条件下做不同的事情了。 需要提醒的是,在书写在条件`number == 10`时,为了阅读方便,在`number`和`==`之间有一个空格最好了,同理,后面也有一个。这里的10是整数类型,number也是。 把这段程序保存成一个扩展名是.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`的含义。 这句话以#开头,表示本来不在程序中运行。这句话的用途是告诉机器(如Ubuntu类型的操作系统)寻找到该设备上的Python解释器,操作系统使用它找到的解释器来运行文件中的程序代码。有的程序里写的是`/usr/bin python`,表示Python解释器在`/usr/bin`里面。但是,如果写成`/usr/bin/env`,则表示要通过系统搜索路径寻找Python解释器。不同系统,可能解释器的位置不同,所以这种方式能够让代码更将拥有可移植性。 上述补充解释不适用于windows系统。 现在读者是否已经明晰,所谓条件语句中的“条件”中,就是各种条件运算表达式或者布尔值,如果是`True`,就执行该条件下的语句块。 ##三元操作符 三元操作,是条件语句中比较简练的一种赋值方式,它的模样是这样的: >>> name = "qiwsir" if "laoqi" else "github" 先思考一个问题,`if "laoqi"`,这里似乎没有条件表达式,Python怎么判断? 的确没有条件表达式,事实上,它就等同于`if bool("laoqi")`。 >>> name 'qiwsir' >>> name = 'qiwsir' if "" else "python" 而这里的`if ""`就相当于`if bool("")`(注意写法上,两个引号之间没有空格)。还要多说一句,这里列举的方式,纯粹是为了理解三元操作符,不具有实战价值。 >>> 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' `if`所引起的条件语句使用非常普遍,当然也比较简单。 ------ [总目录](./index.md)   |   [上节:语句(1)](./121.md)   |   [下节:语句(3)](./123.md) 如果你认为有必要打赏我,请通过支付宝:**qiwsir@126.com**,不胜感激。
X Tutup