- images
- results
- .gitignore
- 1.1概论.ipynb
- 1.2 环境配置.pdf
- 1.3数据类型.ipynb
- 1.4 人机交互.ipynb
- 1.5 对象与变量.ipynb
- 1.6 编码与命名规范.ipynb
- 2.1 数值类型.ipynb
- 2.2 数值类型转换.ipynb
- 2.3 数值元算.ipynb
- 2.4常用数学运算函数.ipynb
- 2.5 math 模块及其应用.ipynb
- 2.6.1 逻辑值测试.ipynb
- 2.6.2 成员运算.ipynb
- 2.6.3 比较运算.ipynb
- 2.6.4 布尔运算.ipynb
- 2.6.5 运算优先级.ipynb
- 2.ipynb
- 3.1 流程控制结构.ipynb
- 3.3.1 for 循环语句.ipynb
- 3.3.3 rang.ipynb
- 3.3.3 while 循环语句.ipynb
- 3.4 and 3.5 分支结构和条件.ipynb
- 3.6 and 3.7 .ipynb
- 3.9 异常处理.ipynb
- 4 函数和模块化编程.ipynb
- 4.1 函数的定义、调用与返回值.ipynb
- 4.2 函数的参数传递.ipynb
- 4.3 变量的作用域.ipynb
- 4.4 匿名函数.ipynb
- 4.5 递归.ipynb
- 4.6 内置函数.ipynb
- 4.7 模块化程序设计.ipynb
- 5.1 序列通用操作.ipynb
- 5.1.1 索引.ipynb
- 5.1.2 切片.ipynb
- 5.1.3 序列拼接与重复.ipynb
- 5.1.4 成员测试.ipynb
- 5.2.1 字符串的创建.ipynb
- 5.2.2 字符串常量.ipynb
- 5.2.4 字符串的遍历.ipynb
- 5.2.5 文件遍历.ipynb
- 5.2.6 字符串的处理方法.ipynb
- 5.2.7 字符串格式化.ipynb
- 5.2.8 转义字符.ipynb
- 5.3 random 模块及其应用.ipynb
- 6.1 元组.ipynb
- 6.2 列表.ipynb
- 6.2.1 列表的创建.ipynb
- 6.2.2 列表的更新.ipynb
- 6.2.3 列表的删除.ipynb
- 6.2.4 列表的排序.ipynb
- 6.2.5 列表赋值与复制.ipynb
- 6.2.6 列表推导式.ipynb
- 6.2.8 常用内置函数.ipynb
- 6.2.9 列表嵌套及其排序.ipynb
- 6.3 列表综合应用.ipynb
- 7.1.1 集合的创建.ipynb
- 7.1.2可变集合类型的操作.ipynb
- 7.1.3 成员关系.ipynb
- 7.1.4 集合关系.ipynb
- 7.1.5 集合运算.ipynb
- 7.2.1 字典创建.ipynb
- 7.2.2 获取字典值.ipynb
- 7.2.3 修改字典值.ipynb
- 7.2.4内置函数与方法.ipynb
- 7.2.5字典排序输出.ipynb
- 7.3 集合与字典的应用.ipynb
- 8 中 numpy 概述.ipynb
- 8 中panda 库.ipynb
- 8.1 文件的打开与关闭.ipynb
- 8.2 文件读写操作.ipynb
- 8.3 文件的应用.ipynb
- 8.4 numpy 文件操作.ipynb
- 8.4.2 and 3.ipynb
- 8.5.1 pandas文件读写.ipynb
- 8.5.2 and 3 and 4.ipynb
- 9.1 matplotlib 线性图.ipynb
- 9.1.5 数据文化绘图.ipynb
- 9.2 非线性图.ipynb
- 9.3 词云.ipynb
- _overview.md
- _readme.ipynb
- coding_here.ipynb
- dream.png
- score.txt
- score_total.csv
- 成绩分析综合.json
2.6.5 运算优先级.ipynb @master — view markup · raw · history · blame
运算优先级¶
Python支持多种运算符的混合运算,所有运算符的优先级(由高到低排列)的描述如下表所示。
| 序号 | 运算符 | 描述 |
|---|---|---|
| 1 | ()、[]、{} | __括号表达式,元组、列表、字典、集合__ |
| 2 | x[i],x[m:n] | 索引、切片 |
| 3 | ** | __幂运算__ |
| 4 | +x、 -x、~x | 正、负,按位非 NOT |
| 5 | *、 / 、//、% | __乘法、除法与取模__ |
| 6 | + 、- | __加法与减__法 |
| 7 | << 、>> | 移位 |
| 8 | & | 按位与 |
| 9 | ^ | 按位异或 |
| 10 | | | 按位或 |
| 11 | <、<=、>、>=、!=、== 、is、is not、in、not in | __比较运算、成员检测和标识号检测__ |
| 12 | not x | 逻辑非 |
| 13 | and | __逻辑与运算符__ |
| 14 | or | __逻辑或运算符__ |
| 15 | if…else | 条件表达式 |
| 16 | lambda | lambda表达式 |
| 17 | := | __赋值表达式、海象运算符__ |
In [ ]:
print(4 * 2 ** 3) # 先幂运算,再计算乘法,输出:32
print(3 + 4 * -2) # 2先取反、与4相乘,再做加法,输出:-5
print(3 + 4 * 2 / 2) # 先计算乘除法,除法运算结果为浮点数,输出:7.0
print(3 << 2 + 1) # 加法优先级高,先2+1,3(11)左移3位变成24 (11000)
括号的优先级最高,可以强制表达式按照需要的顺序求值。可以通过加入小括号“()”的方法来提供弱优先级的优先执行。加了括号,无需比较哪个优先级更高,使程序和表达式更加易于阅读和维护。
In [ ]:
## 实例:判断是否直角三角形
输入三个数a,b,c, 判断能否以它们为三个边长构成直角三角形。若能,输出YES,否则输出NO。
In [ ]:
a = float(input())
b = float(input())
c = float(input())
# 三角形判定条件:边都为正数,任意两边之和大于第三边
if a <= 0 or b <= 0 or c <= 0 or (a + b) <= c or (a + c) <= b or (b + c) <= a:
print('No')
# 直角三角形条件,两边平方和等于第三边
elif a * a + b * b == c * c or a * a + c * c == b * b or c * c + b * b == a * a:
print('Yes')
else:
print('No')
In [ ]:
上面的代码中条件都比较长,可通过改进算法简化,代码如下。
In [ ]:
a = float(input())
b = float(input())
c = float(input())
shortest = min(a, b, c) # 获得最短边长度
longest = max(a, b, c) # 获得最长边长度
middle = sum([a, b, c]) - shortest - longest
# 若最小边为负值或长边小于等于其他两边之和时,构不成三角形
if shortest <= 0 or shortest + middle <= longest:
print('NO')
# 两边短边长度平方和等于第三边长度平方为直角三角形
elif shortest ** 2 + middle ** 2 == longest ** 2:
print('YES')
else:
print('NO')
In [ ]: