这是本人去年写的草稿教程。
-
比较运算符 (Comparison operator)
华山论剑,比的是武功的高低。欲与天公试比高,这可是在和天比高低。在Python中我们也经常要比较比较。一般来说,比的是数据的大小。如,我们常说5大于3或10小于100,这就是在比较数据的大小,得出的结果是成立或不成立。刚才我们用的是汉语,现在改用Python来比较吧,其实非常简单,只不过借用数学中的关系运算符,下面的代码展示了如何进行数据比较:
>>> 5 > 3 # 5大于3 ? True # 真 (成立,是) >>> 10 < 3 # 10小于3 ? False # 假 (不成立,否) >>> 5 == 3 # 5等于3 ? False # 假 (不成立,否) >>> 5 == 5 # 5等于5 ? True # 真 (成立,是) >>> x = 10 # 定义x变量,值为10 >>> y = 100 # 定义y变量,值为100 >>> x != y # x不等于y ? True # 真 (成立,是) >>> x >= 10 # x大于等于10 ? True # 真 (成立,是) >>> y <= 100 # y小于等于100 ? True # 真 (成立,是) >>> >>> bool("下雨") == True # 非空字符串转换成bool为真 True
在上面的代码中,我们看到了好多式子,这些式子叫做关系表达式。关系表达式的运算结果要么是True,要么是False。表达式里的大于号或等于号这些符号,它们叫做关系运算符或比较运算符。这些运算符和数学中的是不是很相似呢。由于在Python中非空字符串转换成bool值的时候结果是True,所以第18行的值为True,值得注意的是如果要比较两个数据是否相等要用两个紧连着的等于号,如果要比较两个数据是否不相等,则要用感叹号和等于号(第11行),这两个符号要紧连着,不能用空格之类的字符把它们分开。如以下用法是错误的。
1
2 3 4 5 |
>>> x ! = y
SyntaxError: invalid syntax >>> x = = y SyntaxError: invalid syntax >>> |
-
if 语句 (if statement)
“曾经有很多次学习的机会摆在我面前,我没有珍惜,如果上天再给我一次机会,我一定会好好学习,天天向上,再也不重演少壮不努力,老大徒伤悲的剧情了。”在上面有一个词汇是“如果”,它的英文为if。在Python中也能使用它。怎么使用呢?请看下面源代码:
>>> if 3 > 1 : # 如果3大于1 print("3大于1") # 打印字符串 3大于1 >>>
让我们把第1行翻译成中文吧。它的意思是说如果3大于1则打印字符串。这是不是非常好理解。上面演示的是最简单的if语句的用法,它的语法为以下所示:
上面图示中的表达式可以是关系表达式,它的值为True的时候就会执行语句组。语句组是有共同缩进的一些语句。一条语句也不写是不行的,如果真的不需要任何语句,那至少得写一个pass。pass也是一个关键词,它只是占个位置,什么也不干。
我们在生活中还会不假思索地思考这样的话:如果下雨,就呆在家里,否则出去晒太阳。下面看看Python怎么把“汉语”用它自己的语言表达:
>>> if bool("下雨") == True: # 如果 成立 print("呆在家里") else: # 否则 print("外出晒太阳") 呆在家里 >>>
在第1行代码中bool(“下雨”)把非空字符串转换成逻辑值,它的结果就是True,所以上面会打印“呆在家里”。这是一种如果…否则…型的if语句,它的语法形式如下所示:
上面图示表达的意思是如果表达式成立则运行它下面的语句组,否则运行else下面的语句组,要注意冒号是必不可少的。else在英文中是否则的意思,下面是一个简单的示例,请在你的大脑中运行一下吧:
for i in range(10): if i > 4: print(i,"是大于4的数据。") else: print(i,"不是大于4的数据。")
if语句不光有上面2种形式,还有下面的第三种形式,可以表述为if…elif…elif…else。
elif可以理解为否则如果的意思。举个例子,期末考试结束了,老师要判断学生成绩的等级,那么他就能编制作一个简单的程序。
score = 70 # 定义变量,名为score if score >= 90: # 如果得分大于等于90 print("成绩优秀!") # 打印 elif score >=70: # 否则如果得分大于等于70 print("成绩良好!") # 打印 elif score >=60: # 否则如果得分大于等于60 print("成绩及格!") # 打印 else: # 否则 print("不及格!") # 打印
根据不同的score,运行上面的程序会有不同的结果,以下是这种if语句的语法:
上面的语法图中,else语句分枝也可以不要,elif分枝可以有很多个。当然,语句组们相对于if、elif、else的缩进也要是一样的,这是Python特色,不按规矩来,Python就会直接给你一个大红脸。
-
一行if (short hand if)
如果if语句下面只有一行语句,那么可以把它放在冒号的后面。以下代码是正确的:
>>> x = 5 >>> if x > 0: print("x是大于0的数据。")
由于Python的语句之间可以用分号隔开,所以下面的一行if也是可以的,虽然不推荐这么做。
>>> x = 5 >>> if x > 0: print("x是大于0的数据。") ; print("程序运行结束")
条件运算式 (Conditional Expressions)
条件运算式能在一行内对条件进行判断,如果成立那么结果就是表达式1的结果,否则就是表达式2的结果。以下是它的语法图:
下面是一个条件运算式的例子:
>>> raining = False >>> print("让我们去", '海滩' if not raining else '图书馆') 让我们去海滩 >>> raining = True >>> print("让我们去", '海滩' if not raining else '图书馆') 让我们去图书馆 >>> age = 12 >>> s = '未成年' if age < 21 else '成年人' >>> s '未成年'
上面第2句的print语句里有 ‘海滩’ if not raining else ‘图书馆’ 这条语句。由于raining的值为False,所以这条语句的返回值为’海滩’。第9行的代码中,由于age的值小于21,所以返回的是’未成年’。
-
嵌套if (nested if)
if 语句下面的语句也可以是if语句,即,它们是可以嵌套的,以下是一个例子。
for i in range(10): if i >3 : # 如果 i 大于3 if i/4 == 1 : print(i)
如果能不用嵌套的语句解决问题,那么尽量不要使用,这会降低程序的可读性。Python哲学之一就是扁平胜于嵌套。我们学的for循环和if语句它都能起一种控制代码运行流向的作用,所以它们叫做流程控制语句。
请指出下列代码的问题。
>>> a = = 33 >>> b = 200 >>> if b > a: >>> print("b比a大")
请说出这句代码的结果:’天南地北’ if True else ‘中西合壁’。
- 请说出下列代码运行结果后amount变量的值。
-
>>> number = 10 >>> counter = 20 >>> amount = 5 if number < 10 else counter