- 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.3 比较运算.ipynb @master — view markup · raw · history · blame
比较运算¶
比较运算符用于比较两个值,并确定他们之间的关系,结果是__逻辑值__:__True__ 或 __False__。</font>
共8种比较运算:
- 2 种一致性比较(==、!=)
- 4 种次序比较(<、>、<=、>=)
- 2 种标识号比较(is 和is not)
这些比较运算符的优先级相同,比布尔运算优先级高。比较运算符可以连续使用,例如: x < y <= z 相当于同时满足条件 x < y and y <= z,x is y == z 相当于x is y and y == z。比较运算与成员运算的优先级也相同,成员运算符 in 也可以与比较运算符一起连续使用。
# 输入Python考试成绩并为浮点数
score = float(input())
# 若成绩在90分以上且不大于100分,输出“优秀”
if score >= 90 and score <= 100: # 逻辑与
print("优秀")
if 100 >= score >= 90: # 连续比较,推荐使用
print("优秀")
Python 所有的内建类型都支持比较运算,不同的类型的比较方式不一样。一致性比较 (== 和 !=)基于对象的值,具有相同值的实例一致性比较结果为相等。 内置数值类型 (int, float, complex) 以及标准库类型 fractions.Fraction(分数运算) 和 decimal.Decimal(精确运算)可进行类型内部和跨类型的比较,复数不支持次序比较。在类型相关的限制以内,他们会按数学规则进行比较且不会有精度损失。
from fractions import *
print(2 == 2.0) # 整数与浮点数比较 True
print(2 < Fraction(5, 3)) # 与分子为5,分母为3的分数比较,False
字符串使用内置函数 ord()获取其字符的 Unicode 码数字值按字典顺序进行比较。元组、列表和range等序列只可进行类型内部的比较,range不支持次序比较。以上对象的跨类型一致性比较结果将是不相等,跨类型次序比较将引发 TypeError异常。
print(ord('a'), ord('h')) # 97 104
print('abc' < 'hello') # 第一个字符就比较出结果,True
print([1, 2, 3] < [1, 2, 4]) # True
数值类型会根据数字大小和正负进行比较,而字符串会根据字符串序列值进行比较。int、float等同属于数值类型,可以相互比较,其他如数值、字符串等不同类型的对象不能直接进行比较运算。None和任何其他的数据类型比较永远返回False。None 是单例对象,PEP 8 建议单例对象的比较应当总是通过 is 或 is not 而不是等于运算符来进行。 运算符 is 和 is not 用于检测对象的标识号是否相同,也就是比较两个对象的存储单元是否相同,对象的标识号可使用 id() 函数来确定。当且仅当 x 和 y 是同一对象,即仅当id(x) == id(y)时, x is y 结果为True。x is not y 会产生相反的逻辑值,即当id(a) != id(b)时,引用的不是同一个对象,返回结果 True,否则返回 False。比较运算符的描述如表 3.1 所示。默认的一致性比较 (== 和 !=) 是基于对象的标识号。
具体见下表。
| 运算符 | 含义 | 描述 | 实例(设a = 5, b = 10, c = 10) |
|---|---|---|---|
| == | 等于 | 比较a、b两个对象是否相等 | (a == b) 返回值 False |
| != | 不等于 | 比较a、b两个对象是否不相等 | (a != b) 返回值 True |
| > | 严格大于 | 返回a是否大于b | (a > b) 返回值 False |
| < | 严格小于 | 返回a是否小于b。返回1表示真,返回0表示假,分别True和False等价 | (a < b) 返回值 True |
| >= | 大于等于 | 返回a是否大于等于b | (a >= b) 返回值 False |
| <= | 小于等于 | 返回a是否小于等于b | (a <= b) 返回值 True |
| is | 同一对象 | 当且仅当 x 和 y 是同一对象时 x is y 为真,即要求x和y的类型、值和id均相同时为True。 | (c is b) 返回值 True |
| is not | 不同对象 | 当且仅当 x 和 y 不是同一对象时 x is not y 为真,即要求x和y的类型、值和id其中任一项不相同时即为True。 | (a is not b) 返回值 True |
- ### 数值类型会根据__数字大小和正负__进行比较,整数和浮点数可以跨类型比较。
浮点数比较时精度会影响结果
print(100 > 99) # True
print(3.14 > 3.141) # False
print(1.0 == 1) # True,值相等的不同对象
- ### __浮点数比较时精度会影响结果,一般不做相等比较__
print(1e18 == 1e18 + 10) # True,大浮点数比较精度影响结果
- ### __字符串比较__根据其字符的__Unicode 码数字值__大小,按字典顺序进行
print('ji lin' > 'ji an') # True
# ord()获取字符Unicode码数字值
print([ord(y) for y in 'ji lin'])
print([ord(x) for x in 'ji an'])

- ### 元组、列表和range等序列只可进行__类型内部__的比较,比较方法是依次比较元素的值。
print([1, 2, 3, 4] > [1, 2, 3]) # True
print ([1, 2, 3, 4] > [3, 2, 3]) # False
print((1, 2, 3, 4) > (1, 2, 3)) # True
print ((3, 2, 3) > (1, 2, 3)) # True
print(range(5) == range(0,5)) # True
特别的,__range不支持次序比较__。
print(range(5) > range(8))
- ### __不同序列类型__不支持型次序比较,跨类型次序比较将引发TypeError异常。
print([1, 2, 3, 4] > (1, 2, 3))
print(0 > None)
- ### __跨类型一致性比较__结果将是__不相等__
print([1, 2, 3, 4] == (1, 2, 3, 4)) # False
print([1, 2, 3, 4] == range(1, 5)) # False
__None__和任何其他的数据类型的一致性比较永远返回__False__。
print(range(0) == None) # Range, False
print([] == None) # 空列表, False
print('' == None) # 空字串符, False
print(0 == None) # 整数0 , False
- ### 运算符 __is__ 和__is not__ 用于检测是否同一个对象,要求__类型、值与标识号__均相同
当且仅当 x 和 y 是同一对象时 x is y 为真,即要求x和y的类型、值和id均相同时为True,否则为False。
当且仅当 x 和 y 不是同一对象时 x is not y 为真,即要求x和y的类型、值和id其中任一项不相同时即为True。
a = 5
b = 5.0
print(a == b) # True,值相等,但数据类型不同
print(id(a), id(b)) # 两个不同的id值
print(id(a) == id(b)) # False
print(a is b) # False
print(a is not b) # True
print([1, 2] == [1, 2, 3, 4]) # 两个列表值不同 False
print(id([1, 2]) == id([1, 2, 3, 4])) # True
print(id([1, 2]), id([1, 2, 3, 4])) # 1387046221120 1387046221120
print([1, 2] is [1, 2, 3, 4]) # 两个对象值不同 False
ls = [1, 2]
lst = [1, 2, 3, 4]
print(ls == lst) # 两个列表值不同 False
print(id(ls) == id(lst)) # 不同对象,False
print(id(ls), id(lst)) # 地址不同1750617592064 1750618649920
print(ls is lst) # 两个对象值不同 False
c = int('10')
d = 20 // 2
print(c == d) # True,值相等
print(id(c), id(d)) # 两个相同同的id值
print(id(c) == id(d)) # True
print(c is d) # True
print(c is not d) # False

- ### 比较运算符可以连续使用等价于
x < y <= z 90 <= score <= 100
x < y and y <= z score >= 90 and score <= 100
score = int(input())
if 0 <= score <= 100: # if 0 <= score and score <= 100:
print('这是合法成绩')
else:
print('这是非法成绩')
练一练
完成下面的程序,根据输入的预测气温,输出相应的高温警报信息。¶
用户输入一个浮点数的气温,根据输入值与下面的高温警报规则表,输出对应的高温警报信息。
| 气温范围 | 警告信息 |
|---|---|
| 气温$<35^{\circ}C$ | 无高温警告 |
| $35^{\circ} C\le$气温$<37^{\circ}C$ | 高温黄色警告 |
| $37^{\circ} C\le$气温$<40^{\circ}C$ | 高温橙色警告 |
| 气温$\ge 40^{\circ}C$ | 高温红色警告 |
输入输出样例:
输入:32
输出:无高温警告
输入:39
输出:高温橙色警告
提示:考虑大小写,元音字母包括A、E、I、O、U、a、e、i、o、u
temp = float(input())
if temp < 35:
print('无高温警告')
# 参考上面的代码,实现题目要求