第7集 比较运算符

1. 比较运算符概述

比较运算符用于比较两个值,返回布尔值(TrueFalse)。

运算符 名称 示例 说明
== 等于 a == b 判断a和b是否相等
!= 不等于 a != b 判断a和b是否不相等
> 大于 a > b 判断a是否大于b
< 小于 a < b 判断a是否小于b
>= 大于等于 a >= b 判断a是否大于或等于b
<= 小于等于 a <= b 判断a是否小于或等于b

2. 等于和不等于

2.1 等于运算符(==)

# 数字比较
print(5 == 5)     # 输出:True
print(5 == 3)     # 输出:False
print(5 == 5.0)   # 输出:True(整数和浮点数值相等)

# 字符串比较
print("hello" == "hello")   # 输出:True
print("hello" == "Hello")   # 输出:False(大小写敏感)
print("Python" == "Python") # 输出:True

# 变量比较
a = 10
b = 10
print(a == b)   # 输出:True
print(a == 5)   # 输出:False

2.2 不等于运算符(!=)

# 数字比较
print(5 != 5)     # 输出:False
print(5 != 3)     # 输出:True

# 字符串比较
print("hello" != "world")   # 输出:True
print("hello" != "hello")   # 输出:False

# 变量比较
a = 10
b = 20
print(a != b)   # 输出:True
print(a != 10)  # 输出:False

2.3 注意:赋值与比较的区别

# 错误示例:使用=进行比较
if a = 10:  # 错误:这是赋值,不是比较
    pass

# 正确示例:使用==进行比较
if a == 10:  # 正确:这是比较
    pass

3. 大于和小于

3.1 大于运算符(>)

# 数字比较
print(10 > 5)     # 输出:True
print(5 > 10)     # 输出:False
print(10 > 10)    # 输出:False(不包含等于)

# 浮点数比较
print(3.14 > 3.0)  # 输出:True
print(2.5 > 3.0)   # 输出:False

# 负数比较
print(-5 > -10)    # 输出:True
print(-10 > -5)    # 输出:False

3.2 小于运算符(<)

# 数字比较
print(5 < 10)     # 输出:True
print(10 < 5)     # 输出:False
print(10 < 10)    # 输出:False

# 浮点数比较
print(3.0 < 3.14)  # 输出:True
print(3.14 < 3.0)  # 输出:False

4. 大于等于和小于等于

4.1 大于等于运算符(>=)

# 数字比较
print(10 >= 5)     # 输出:True
print(5 >= 10)     # 输出:False
print(10 >= 10)    # 输出:True(包含等于)

# 应用:判断是否成年
age = 18
is_adult = age >= 18
print(is_adult)    # 输出:True

4.2 小于等于运算符(<=)

# 数字比较
print(5 <= 10)     # 输出:True
print(10 <= 5)     # 输出:False
print(10 <= 10)    # 输出:True

# 应用:判断是否未成年
age = 17
is_minor = age < 18
print(is_minor)    # 输出:True

5. 不同数据类型的比较

5.1 数字比较

# 整数比较
print(10 > 5)      # True

# 浮点数比较
print(3.14 < 3.15) # True

# 整数和浮点数比较
print(10 == 10.0)  # True
print(10 > 9.5)    # True

5.2 字符串比较

字符串比较是基于字符的Unicode码点值,按字典顺序比较。

# 单个字符比较
print('a' < 'b')   # 输出:True
print('A' < 'a')   # 输出:True(大写字母的码点值小于小写字母)

# 字符串比较
print('apple' < 'banana')  # 输出:True(按字典顺序)
print('hello' > 'hell')    # 输出:True(较长字符串在相同前缀下更大)
print('Python' == 'Python')  # 输出:True

# 注意:大小写敏感
print('hello' == 'Hello')  # 输出:False
print('hello' != 'Hello')  # 输出:True

# 统一大小写后比较
print('hello'.lower() == 'Hello'.lower())  # 输出:True

5.3 列表比较

# 列表比较(按元素逐个比较)
print([1, 2, 3] == [1, 2, 3])   # 输出:True
print([1, 2, 3] != [1, 2, 4])   # 输出:True
print([1, 2] < [1, 3])         # 输出:True(比较对应位置的元素)

# 长度不同的列表
print([1, 2, 3] > [1, 2])      # 输出:True
print([1, 2] < [1, 2, 3])      # 输出:True

6. 字符串比较详解

6.1 字符的Unicode码点

# 查看字符的Unicode码点
print(ord('A'))   # 输出:65
print(ord('a'))   # 输出:97
print(ord('0'))   # 输出:48
print(ord('中'))  # 输出:20013

# 因此:'0' < 'A' < 'a'
print('0' < 'A')  # 输出:True
print('A' < 'a')  # 输出:True

6.2 字符串按字典顺序比较

# 相同前缀的字符串
print('apple' < 'apples')   # 输出:True(较短字符串在相同前缀下较小)

# 不同开头的字符串
print('apple' < 'banana')    # 输出:True('a' < 'b')

# 首字母相同,比较后续
print('apple' < 'apricot')   # 输出:True('p' < 'r')

6.3 忽略大小写比较

# 统一转换为小写
str1 = "Hello"
str2 = "hello"
print(str1.lower() == str2.lower())  # 输出:True

# 统一转换为大写
print(str1.upper() == str2.upper())  # 输出:True

7. 综合应用示例

7.1 数字范围判断

"""
判断数字是否在某个范围内
"""

# 判断年龄是否在合法范围内
age = 25
is_valid_age = 0 <= age <= 120
print(f"年龄{age}是否合法:{is_valid_age}")

# 判断成绩是否及格
score = 85
is_passing = score >= 60
print(f"成绩{score}是否及格:{is_passing}")

# 判断温度是否舒适
temperature = 25
is_comfortable = 18 <= temperature <= 28
print(f"温度{temperature}°C是否舒适:{is_comfortable}")

7.2 多条件判断

"""
多条件判断
"""

# 判断是否为工作日
day = 3
is_weekday = 1 <= day <= 5
print(f"第{day}天是否为工作日:{is_weekday}")

# 判断是否为有效月份
month = 6
is_valid_month = 1 <= month <= 12
print(f"月份{month}是否有效:{is_valid_month}")

7.3 成绩等级判断

"""
根据成绩判断等级
"""

score = 85

if score >= 90:
    grade = "优秀"
elif score >= 80:
    grade = "良好"
elif score >= 70:
    grade = "中等"
elif score >= 60:
    grade = "及格"
else:
    grade = "不及格"

print(f"成绩:{score}分,等级:{grade}")

7.4 数字排序

"""
比较三个数的大小
"""

a = 15
b = 8
c = 20

# 找最大值
max_value = a
if b > max_value:
    max_value = b
if c > max_value:
    max_value = c
print(f"最大值:{max_value}")

# 找最小值
min_value = a
if b < min_value:
    min_value = b
if c < min_value:
    min_value = c
print(f"最小值:{min_value}")

# 排序(使用内置函数)
numbers = [a, b, c]
numbers.sort()
print(f"排序后:{numbers}")

7.5 登录验证

"""
简单的登录验证
"""

# 模拟用户信息
stored_username = "admin"
stored_password = "123456"

# 用户输入
username = input("请输入用户名:")
password = input("请输入密码:")

# 验证
if username == stored_username and password == stored_password:
    print("登录成功!")
else:
    print("用户名或密码错误!")

8. 常见错误

8.1 混淆赋值和比较

# 错误:在if语句中使用=
x = 5
if x = 10:  # 错误:SyntaxError: invalid syntax
    print("x is 10")

# 正确:使用==
if x == 10:
    print("x is 10")

8.2 比较不兼容类型

# 字符串和数字不能直接比较
print("10" == 10)   # 输出:False
print("10" > 5)     # TypeError: '>' not supported between instances of 'str' and 'int'

# 需要先转换为相同类型
print(int("10") == 10)  # 输出:True

8.3 浮点数精确比较

# 浮点数可能不精确
a = 0.1 + 0.2
b = 0.3
print(a == b)  # 输出:False(因为0.1+0.2≠0.3,而是≈0.30000000000000004)

# 解决方法:使用近似比较或round()
import math
print(math.isclose(a, b))  # 输出:True
print(abs(a - b) < 1e-10)  # 输出:True

9. 特殊比较技巧

9.1 链式比较

# 链式比较
x = 10
print(0 < x < 20)   # 输出:True(等价于 0 < x and x < 20)
print(5 <= x <= 15) # 输出:True
print(20 < x < 30)  # 输出:False

9.2 比较返回值

# 比较运算符的结果是布尔值,可以用于后续逻辑
a = 5
b = 10

result = a < b
print(result)  # 输出:True

# 可以直接使用
if a < b:
    print("a小于b")

9.3 使用is和is not(身份比较)

# is和is not比较对象的身份(内存地址)
# ==和!=比较对象的值

# 小整数缓存(-5到256)
a = 100
b = 100
print(a is b)      # 输出:True(同一对象)
print(a == b)      # 输出:True(值相同)

# 大整数
a = 1000
b = 1000
print(a is b)      # 输出:False(不同对象)
print(a == b)      # 输出:True(值相同)

# 字符串
a = "hello"
b = "hello"
print(a is b)      # 输出:True(字符串常量)
print(a == b)      # 输出:True

# 列表
a = [1, 2, 3]
b = [1, 2, 3]
print(a is b)      # 输出:False(不同对象)
print(a == b)      # 输出:True(值相同)

# None的比较
x = None
print(x is None)    # 输出:True(推荐使用is判断None)
print(x == None)    # 输出:True

10. 本集总结

本集我们学习了:

  • 6种比较运算符的使用方法
  • 数字、字符串、列表的比较
  • 字符串按字典顺序比较的规则
  • 链式比较的写法
  • ==与is的区别
  • 多个实际应用示例
  • 常见错误及解决方法

核心要点

  1. 比较运算符返回布尔值(True或False)
  2. ==比较值,is比较对象身份
  3. 字符串比较基于Unicode码点,按字典顺序
  4. 链式比较(如0 &lt; x &lt; 20)使代码更简洁
  5. 浮点数比较时注意精度问题
  6. 注意区分赋值(=)和比较(==)

下一集预告:我们将学习逻辑运算符,用于组合多个条件表达式。

11. 课后练习

  1. 编写程序,输入一个数字,判断是正数、负数还是零
  2. 编写程序,输入三个数字,输出最大值和最小值
  3. 编写程序,输入一个字符串,判断长度是否大于10
  4. 编写程序,输入成绩,输出对应的等级(优秀/良好/中等/及格/不及格)
  5. 编写程序,输入两个字符串,判断是否相等(忽略大小写)

提示:比较运算符是条件判断的基础,熟练掌握各种比较方式和注意事项非常重要!

« 上一篇 算术运算符 下一篇 » 逻辑运算符