![机器学习入门:Python语言实现](https://wfqqreader-1252317822.image.myqcloud.com/cover/84/41787084/b_41787084.jpg)
2.1 Python中的条件逻辑
如果你使用过其他的编程语言,那么一定见到过if/then/else
(或if-elseif-else
)条件语句。尽管不同语言的语法存在差异,但它们的基本逻辑是类似的。下面的代码展示了Python中if/elif
的使用:
![035-01](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/035-01.jpg?sign=1739897282-tnmSqpCt7xnmuxIF0zARXsamAzwlOUCI-0-50aa482998195c9b52ca8a64bab4e5b2)
上述代码块演示了如何使用多重条件语句,并给出正确的结果。
break/continue/pass
语句
可以使用break
语句“提前跳出”循环,而continue
语句本质上是直接跳到循环的开始并执行下一次循环,pass
语句则表示“什么都不做”。
清单2.1的BreakContinuePass.py
说明了这三个语句的用法。
清单2.1 BreakContinuePass.py
![036-01](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/036-01.jpg?sign=1739897282-PTDRJv2wU2EJ6NfdGDX8Xoyp6l67OZqH-0-2e07722298a67412e9c9030ff8f92cf1)
清单2.1的输出如下所示:
![036-02](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/036-02.jpg?sign=1739897282-3RYZNKGSHiTDXc7yeJ0tAHKz5ANYpIFD-0-1e2cc4f1914af06cdfa47610e0f3628a)
2.1.1 Python的保留关键字
每一种编程语言都有保留关键字,它们是一组不能作为标识符使用的单词,Python也是如此。Python的保留关键字是:and
、exec
、not
、assert
、finally
、or
、break
、for
、pass
、class
、from
、print
、continue
、global
、raise
、def
、if
、return
、del
、import
、try
、elif
、in
、while
、else
、is
、with
、except
、lambda
、yield
。
如果你不小心使用了保留关键字作为变量,你不会看到“reserved word”的错误信息,而是会看到一个“invalid syntax”的错误信息。例如,假设你通过如下代码创建了一个Python脚本test1.py
:
![036-03](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/036-03.jpg?sign=1739897282-ldWZKUSFevFSTudZRU5yISjUH5p9fVPB-0-8cb875f5a67df4b4e24ff6a266603864)
当你运行上述脚本会得到如下输出:
![037-01](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/037-01.jpg?sign=1739897282-W4UvagVJqBsjQWN6s6nA6dr69LnAfaJe-0-ddd3b4acdbdfaedda01c70cd1d63536f)
通过快速检查Python代码可发现,你试图使用保留关键字break
作为变量。
2.1.2 Python运算符的优先级
当涉及一个带数字的表达式时,你可能会记得乘法(“*”)和除法(“/”)比加法(“+”)和减法(“-”)有更高的优先级。指数运算相对于这四种算术运算符有更高的优先级。然而使用括号会更简单(也更安全)。例如,(x/y
)+10
比x/y+10
更清晰,尽管这两个表达式是等价的。
作为另一个示例,下面的两个表达式是等价的,但是第二个比第一个出错的可能性更小:
![037-02](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/037-02.jpg?sign=1739897282-Jnbshe0oe9hPqZA7MpC0QZSLulru0B6n-0-13b53bb8d1b61ef67b0b05bb8412f38d)
总之,下面的网址包含了Python中运算符的优先级规则:
http://www.mathcs.emory.edu/~valerie/courses/fall10/155/resources/op_precedence.html
2.1.3 比较运算符和布尔运算符
Python支持丰富的比较运算符和布尔运算符,例如in
、not in
、is
、is not
、and
、or
和not
。接下来将讨论这些运算符并通过示例阐述它们的用法。
1. in/not in/is/is not
比较运算符
使用in
和not in
来判断一个值是否出现在序列中。is
和is not
运算符用来判断两个对象是否是同一个对象,这只对像列表这样的可变对象有用。所有的比较运算符具有相同的优先级,并且都低于算术运算符的优先级。比较运算也可以级联,例如a < b == c
判断a
是否小于b
并且b
和c
是否相等。
2. and
、or
和not
布尔运算符
布尔运算符and
、or
和not
相对于比较运算符来说优先级更低,其中and
和or
是二元运算符,not
是一元运算符。示例如下:
- 只有在
A
和B
都为True的时候,A and B
才为True。 - 只要
A
和B
中的一个为True,A or B
就为True。 - 当且仅当
A
为False的时候,not(A)
为True。
你还可以将其他比较表达式或布尔表达式的结果赋值给一个变量,例如:
![038-01](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/038-01.jpg?sign=1739897282-80IkLWeMc7mHb4EGY5ceBa8WUk5k37XK-0-85a99765b9d008c477b8fc0706ee73f4)
上述代码块首先初始化变量string1
、string2
、string3
,其中string1
为空字符串。接下来通过or
运算符初始化变量str4
,由于第一个非空的变量是string2
,所以str4
的值等于string2
。