Python 教程之运算符(2)—— python 中的基本运算符(下)

简介: Python 教程之运算符(2)—— python 中的基本运算符(下)

运算符的优先级和关联性

运算符的优先级和关联性: 运算符的优先级和关联性决定了运算符的优先级。

运算符优先级

这用于具有多个具有不同优先级的运算符的表达式中,以确定首先执行哪个操作。

示例:运算符优先级

# 运算符优先级示例
# '+' 和 '*' 的优先级
expr = 10 + 20 * 30
print(expr)
# 'or' 和 'and' 的优先级
name = "Alex"
age = 0
if name == "Alex" or name == "John" and age >= 2:
  print("Hello! Welcome.")
else:
  print("Good Bye!!")

输出

610
Hello! Welcome.

运算符关联性

如果一个表达式包含两个或多个具有相同优先级的运算符,则使用运算符关联性来确定。它可以是从左到右或从右到左。

示例:运算符关联性

# 运算符关联性示例
# 左右关联性 100 / 10 * 10 计算为 (100 / 10) * 10 而不是 100 / (10 * 10)
print(100 / 10 * 10)
# 左右关联性 5 - 2 + 3 计算为 (5 - 2) + 3 而不是 5 - (2 + 3)
print(5 - 2 + 3)
# 左右结合性
print(5 - (2 + 3))
# 左右关联性 2 ** 3 ** 2 计算为 2 ** (3 ** 2) 而不是 (2 ** 3) ** 2
print(2 ** 3 ** 2)

输出

100.0 
6 
0 
512

Python 运算符测验

除法运算符允许您将两个数字相除并返回一个商,即左边的第一个数字或数字除以右边的第二个数字或数字并返回商。

除法运算符有两种类型:

(i)浮动划分:

此运算符返回的商始终是浮点数,无论两个数字是否为整数。例如:

>>>5/5 
1.0 
>>>10/2 
5.0 
>>>-10/2 
-5.0 
>>>20.0/2 
10.0

(ii)整数除法(地板除法):

此运算符返回的商取决于传递的参数。如果任何数字是浮点数,它以浮点数返回输出。它也被称为下限除法,因为如果任何数字为负数,则输出将被下限。例如:

>>>5//5 
1 
>>>3//2 
1 
>>>10//3 
3

考虑 Python 中的以下语句。

# A Python program to demonstrate the use of
# "//" for integers
print (5//2)
print (-5//2)

输出:

2 
-3

第一个输出很好,但如果我们来到 Java/C++ 世界,第二个可能会感到惊讶。在 Python 中,“//”运算符用作整数和浮点参数的下除法。但是,除法运算符“/”总是返回一个浮点值。

注意:  “//”运算符用于返回小于或等于指定表达式或值的最接近的整数值。所以从上面的代码中,5//2 返回 2。你知道 5/2 是 2.5,小于或等于最接近的整数是 2[5//2]。(它与正常的数学相反,在正常数学中,该值为 3)。

例子

# 一个 Python 程序,用于演示使用“/”表示浮点数
print (5.0/2)
print (-5.0/2)

输出

2.5 
-2.5

真正的楼层除法运算符是“//”。它返回整数和浮点参数的下限值。

# 一个 Python 程序,用于演示整数和浮点数的“//”的使用
print (5//2)
print (-5//2)
print (5.0//2)
print (-5.0//2)

输出

2 
-3 
2.0 
-3.0

三元运算符

三元运算符也称为条件表达式,是根据条件为真或假来评估某些内容的运算符。它在2.5版本中被添加到 Python 中。

它只是允许在单行中测试条件,替换多行 if-else,使代码紧凑。

语法 :

[on_true] 如果 [表达式] 否则 [on_false]
  • 使用三元运算符的简单方法:

# 演示条件运算符的程序
a, b = 10, 20
# 如果 a < b 则复制 a 的最小值,否则复制 b
min = a if a < b else b
print(min)

输出:

10
  • 使用元组、字典和 lambda 的直接方法

# 演示三元运算符的 Python 程序
a, b = 10, 20
# 使用元组选择一个项目 (if_test_false,if_test_true)[test] 如果 [a<b] 为真则返回 1,因此索引为 1 的元素将打印,否则如果 [a<b] 为假则返回 0,因此元素为 0 索引将打印
print( (b, a) [a < b] )
# 如果 [a < b] 为真,则使用 Dictionary 选择项目,然后打印 True 键的值,否则,如果 [a<b] 为假,则打印 False 键的值
print({True: a, False: b} [a < b])
# lambda 比上述两种方法更有效,因为在 lambda 中,我们确保只评估一个表达式,这与 tuple 和 Dictionary 不同
print((lambda: b, lambda: a)[a < b]())

输出:

10 
10 
10
  • 三元运算符可以写成嵌套的 if-else:

# 演示嵌套三元运算符的 Python 程序
a, b = 10, 20
print ("Both a and b are equal" if a == b else "a is greater than b"
    if a > b else "b is greater than a")

上面的方法可以写成:

# 演示嵌套三元运算符的 Python 程序
a, b = 10, 20
if a != b:
  if a > b:
    print("a is greater than b")
  else:
    print("b is greater than a")
else:
  print("Both a and b are equal")

输出:

b is greater than a
  • 要在三元运算符中使用打印功能,例如:-

示例:在 3 中使用三元运算符查找 2 中的较大数

a=5
b=7
# [statement_on_True] if [condition] else [statement_on_false]
print(a,"is greater") if (a>b) else print(b,"is Greater")

输出:

7 is Greater

要点:

  • 首先评估给定条件 (a < b),然后根据条件返回的布尔值返回 a 或 b
  • 运算符中参数的顺序与其他语言
  • 在所有 Python 操作中,条件表达式的优先级最低。

当三元运算符不存在 时,在 2.5 之前使用的方法

在如下给出的表达式中,解释器检查表达式是否为真,然后评估 on_true,否则评估 on_false。

语法 :

'''条件为真时,不执行表达式[on_false],返回“True and [on_true]”的值。 返回“False or [on_false]”的其他值。注意“True and x”等于x。 “假或 x”等于 x。 '''
[表达式] 和 [on_true] 或 [on_false]

例子 :

# 演示条件运算符的程序
a, b = 10, 20
# 如果 a 小于 b,则分配 a,否则分配 b(注意:如果 a 为 0,则它不起作用)。
min = a < b and a or b
print(min)

输出:

10

注意: 此方法的唯一缺点是on_true 不能为零或 False。如果发生这种情况,将始终评估 on_false。原因是如果表达式为真,解释器将检查 on_true,如果它为零或假,这将迫使解释器检查 on_false 以给出整个表达式的最终结果。

目录
相关文章
|
3天前
|
Python
SciPy 教程 之 Scipy 显著性检验 3
本教程介绍Scipy显著性检验,包括其基本概念、原理及应用。显著性检验用于判断样本与总体假设间的差异是否显著,是统计学中的重要工具。Scipy通过`scipy.stats`模块提供了相关功能,支持双边检验等方法。
10 1
|
5天前
|
机器学习/深度学习 Python
SciPy 教程 之 SciPy 插值 2
SciPy插值教程:介绍插值概念及其在数值分析中的应用,特别是在处理数据缺失时的插补和平滑数据集。SciPy的`scipy.interpolate`模块提供了强大的插值功能,如一维插值和样条插值。通过`UnivariateSpline()`函数,可以轻松实现单变量插值,示例代码展示了如何对非线性点进行插值计算。
10 3
|
8天前
|
机器学习/深度学习 数据处理 Python
SciPy 教程 之 SciPy 空间数据 4
本教程介绍了SciPy的空间数据处理功能,主要通过scipy.spatial模块实现。内容涵盖空间数据的基本概念、距离矩阵的定义及其在生物信息学中的应用,以及如何计算欧几里得距离。示例代码展示了如何使用SciPy计算两点间的欧几里得距离。
22 5
|
7天前
|
机器学习/深度学习 Python
SciPy 教程 之 SciPy 空间数据 6
本教程介绍了SciPy处理空间数据的方法,包括使用scipy.spatial模块进行点位置判断、最近点计算等内容。还详细讲解了距离矩阵的概念及其应用,如在生物信息学中表示蛋白质结构等。最后,通过实例演示了如何计算两点间的余弦距离。
17 3
|
6天前
|
机器学习/深度学习 数据处理 Python
SciPy 教程 之 SciPy 空间数据 7
本教程介绍了SciPy的空间数据处理功能,涵盖如何使用`scipy.spatial`模块进行点的位置判断、最近点计算等操作。还详细解释了距离矩阵的概念及其在生物信息学中的应用,以及汉明距离的定义和计算方法。示例代码展示了如何计算两个点之间的汉明距离。
13 1
|
4天前
|
机器学习/深度学习 数据处理 Python
SciPy 教程 之 SciPy 插值 3
本教程介绍了SciPy中的插值方法,包括什么是插值及其在数据处理和机器学习中的应用。通过 `scipy.interpolate` 模块,特别是 `Rbf()` 函数,展示了如何实现径向基函数插值,以平滑数据集中的离散点。示例代码演示了如何使用 `Rbf()` 函数进行插值计算。
8 0
|
4天前
|
Python
SciPy 教程 之 Scipy 显著性检验 1
本教程介绍Scipy显著性检验,包括统计假设、零假设和备择假设等概念,以及如何使用scipy.stats模块进行显著性检验,以判断样本与总体假设间是否存在显著差异。
8 0
|
1月前
|
数据可视化 IDE 开发工具
【Python篇】PyQt5 超详细教程——由入门到精通(中篇二)
【Python篇】PyQt5 超详细教程——由入门到精通(中篇二)
227 13
|
1月前
|
监控 数据可视化 搜索推荐
【Python篇】matplotlib超详细教程-由入门到精通(下篇)2
【Python篇】matplotlib超详细教程-由入门到精通(下篇)
32 8
|
1月前
|
数据可视化 API 数据处理
【Python篇】matplotlib超详细教程-由入门到精通(上篇)
【Python篇】matplotlib超详细教程-由入门到精通(上篇)
82 5