前言
运算符是编程语言中用于执行特定操作的符号或关键字。它们可以用于执行算术运算、逻辑运算、比较以及其他各种操作。
算术运算符:
- +:加法运算,用于将两个值相加。
- -:减法运算,用于将右操作数从左操作数中减去。
- *:乘法运算,用于将两个值相乘。
- /:除法运算,用于将左操作数除以右操作数(结果始终是浮点数)。
- //:整数除法运算,用于将左操作数除以右操作数并返回整数部分。
- %:取模运算,返回左操作数除以右操作数的余数。
- **:幂运算,返回左操作数的右操作数次幂。
# 加法运算
result_addition = 10 + 5
print("加法运算结果:", result_addition) # 输出: 15
# 减法运算
result_subtraction = 10 - 5
print("减法运算结果:", result_subtraction) # 输出: 5
# 乘法运算
result_multiplication = 10 * 5
print("乘法运算结果:", result_multiplication) # 输出: 50
# 除法运算
result_division = 10 / 5
print("除法运算结果:", result_division) # 输出: 2.0
# 整数除法运算
result_integer_division = 10 // 5
print("整数除法运算结果:", result_integer_division) # 输出: 2
# 取模运算
result_modulus = 10 % 3
print("取模运算结果:", result_modulus) # 输出: 1
# 幂运算
result_exponentiation = 2 ** 3
print("幂运算结果:", result_exponentiation) # 输出: 8
比较运算符:
- ==:检查两个值是否相等。
- !=:检查两个值是否不相等。
- >:大于,检查左操作数是否大于右操作数。
- <:小于,检查左操作数是否小于右操作数。
- >=:大于等于,检查左操作数是否大于或等于右操作数。
- <=:小于等于,检查左操作数是否小于或等于右操作数。
# 检查两个值是否相等
a = 5
b = 5
result_equal = a == b
print("检查是否相等:", result_equal) # 输出: True
# 检查两个值是否不相等
result_not_equal = a != b
print("检查是否不相等:", result_not_equal) # 输出: False
# 检查左操作数是否大于右操作数
result_greater_than = a > b
print("检查是否大于:", result_greater_than) # 输出: False
# 检查左操作数是否小于右操作数
result_less_than = a < b
print("检查是否小于:", result_less_than) # 输出: False
# 检查左操作数是否大于或等于右操作数
result_greater_than_or_equal = a >= b
print("检查是否大于等于:", result_greater_than_or_equal) # 输出: True
# 检查左操作数是否小于或等于右操作数
result_less_than_or_equal = a <= b
print("检查是否小于等于:", result_less_than_or_equal) # 输出: True
逻辑运算符:
- and:逻辑与,如果两个操作数都为真,则结果为真。
- or:逻辑或,如果两个操作数中至少一个为真,则结果为真。
- not:逻辑非,用于反转操作数的逻辑值。
# 逻辑与运算
x = 5
y = 10
result_and = (x < 10) and (y > 5)
print("逻辑与运算结果:", result_and) # 输出: True,因为两个条件都为真
# 逻辑或运算
result_or = (x < 10) or (y < 5)
print("逻辑或运算结果:", result_or) # 输出: True,因为至少一个条件为真
# 逻辑非运算
result_not = not (x == 5)
print("逻辑非运算结果:", result_not) # 输出: False,因为x等于5,取非后为False
赋值运算符:
- =:将右操作数的值赋给左操作数。
- +=、-=、*=、/=:分别表示加、减、乘、除后再赋值。
- //=、%=、**=:分别表示整数除法、取模、幂后再赋值。
# 赋值运算符
x = 10
print("初始值 x:", x) # 输出: 初始值 x: 10
# += 加后再赋值
x += 5
print("加后再赋值 x:", x) # 输出: 加后再赋值 x: 15
# -= 减后再赋值
x -= 3
print("减后再赋值 x:", x) # 输出: 减后再赋值 x: 12
# *= 乘后再赋值
x *= 2
print("乘后再赋值 x:", x) # 输出: 乘后再赋值 x: 24
# /= 除后再赋值
x /= 4
print("除后再赋值 x:", x) # 输出: 除后再赋值 x: 6.0
# //= 整数除法后再赋值
x //= 2
print("整数除法后再赋值 x:", x) # 输出: 整数除法后再赋值 x: 3.0
# %= 取模后再赋值
x %= 2
print("取模后再赋值 x:", x) # 输出: 取模后再赋值 x: 1.0
# **= 幂运算后再赋值
x **= 3
print("幂运算后再赋值 x:", x) # 输出: 幂运算后再赋值 x: 1.0
位运算符:
- &:按位与运算。
- |:按位或运算。
- ^:按位异或运算。
- ~:按位取反运算。
- <<:左移位运算。
- >>:右移位运算。
# 按位与运算
a = 0b1100 # 12的二进制表示为 1100
b = 0b1010 # 10的二进制表示为 1010
result_and = a & b
print("按位与运算结果:", bin(result_and)) # 输出: 按位与运算结果: 0b1000,即 8
# 按位或运算
result_or = a | b
print("按位或运算结果:", bin(result_or)) # 输出: 按位或运算结果: 0b1110,即 14
# 按位异或运算
result_xor = a ^ b
print("按位异或运算结果:", bin(result_xor)) # 输出: 按位异或运算结果: 0b0110,即 6
# 按位取反运算
result_not_a = ~a
print("按位取反运算结果:", bin(result_not_a)) # 输出: 按位取反运算结果: -0b1101,即 -13
# 左移位运算
result_left_shift = a << 2
print("左移位运算结果:", bin(result_left_shift)) # 输出: 左移位运算结果: 0b110000,即 48
# 右移位运算
result_right_shift = a >> 2
print("右移位运算结果:", bin(result_right_shift)) # 输出: 右移位运算结果: 0b11,即 3
成员运算符:
- in:如果指定的值在序列中找到,则返回 True,否则返回 False。
- not in:如果指定的值不在序列中找到,则返回 True,否则返回 False。
# 字符串示例
string = "Hello, world!"
print("l" in string) # 输出: True,因为字符'l'在字符串中
print("good" not in string) # 输出: True,因为'good'不在字符串中
# 列表示例
my_list = [1, 2, 3, 4, 5]
print(3 in my_list) # 输出: True,因为3在列表中
print(6 not in my_list) # 输出: True,因为6不在列表中
# 元组示例
my_tuple = (1, 2, 3, 4, 5)
print(3 in my_tuple) # 输出: True,因为3在元组中
print(6 not in my_tuple) # 输出: True,因为6不在元组中
# 字典示例
my_dict = {'a': 1, 'b': 2, 'c': 3}
print('a' in my_dict) # 输出: True,因为键'a'在字典中
print(2 in my_dict.values()) # 输出: True,因为值2在字典的值中
print('d' not in my_dict) # 输出: True,因为键'd'不在字典中
身份运算符:
- is:如果两个操作数引用同一个对象,则返回 True。
- is not:如果两个操作数引用的不是同一个对象,则返回 True。
# 整数对象示例
a = 10
b = 10
print(a is b) # 输出: True,因为a和b引用了同一个整数对象
# 字符串对象示例
str1 = "hello"
str2 = "hello"
print(str1 is str2) # 输出: True,因为str1和str2引用了同一个字符串对象
# 列表对象示例
list1 = [1, 2, 3]
list2 = [1, 2, 3]
print(list1 is list2) # 输出: False,因为list1和list2虽然内容相同,但是引用了不同的列表对象
# 可变对象示例
list3 = [1, 2, 3]
list4 = list3
print(list3 is list4) # 输出: True,因为list3和list4引用了同一个列表对象
# 不可变对象示例
tuple1 = (1, 2, 3)
tuple2 = (1, 2, 3)
print(tuple1 is tuple2) # 输出: False,因为tuple1和tuple2虽然内容相同,但是引用了不同的元组对象
三元条件运算符:
用于简化if-else语句。
示例:x if condition else y,如果条件为True,则返回x,否则返回y。
# 判断数字是否为正数
num = 10
result = "正数" if num > 0 else "非正数或零"
print(result) # 输出: 正数,因为num是正数
# 判断字符串的长度是否大于5
string = "Hello"
result = "字符串长度大于5" if len(string) > 5 else "字符串长度不大于5"
print(result) # 输出: 字符串长度不大于5,因为字符串长度不大于5
# 判断奇偶数
number = 7
result = "奇数" if number % 2 != 0 else "偶数"
print(result) # 输出: 奇数,因为number是奇数
总结
算术运算符:用于执行基本的数学运算,包括加减乘除等。
+、-、*、/、%、//、**
比较运算符:用于比较两个值的大小关系,返回布尔值。
==、!=、>、<、>=、<=
逻辑运算符:用于组合多个条件,并返回布尔值。
and、or、not
赋值运算符:用于将值赋给变量,或对变量进行运算后再赋值。
=、+=、-=、*=、/=、//=、%=、**=
位运算符:用于对二进制数字进行位级别的操作。
&、|、^、~、<<、>>
成员运算符:用于检查指定的值是否存在于序列或容器中。
in、not in
身份运算符:用于检查两个对象是否引用自同一内存位置。
is、is not
三元条件运算符:用于简化if-else语句。
x if condition else y