一、进制转换
现代的计算机和依赖计算机的设备里都用到二进制(即0和1)来保存和表示数据,一个二进制表示一个比特(Bit)。在二进制的基础上,计算机还支持八进制和十六进制这两种进制。除了计算机里的进制以外,我们生活中经常用到的是十进制。Python语言支持二进制、八进制、十六进制以及十进制的数字表示。
a = 12 # 默认数字是十进制
print(a + 1)
b = 0b11101 # 以0b开头的数字是二进制
print(b + 1)
c = 0o12 # 以 0o 开头的数字是八进制
print(c + 1)
d = 0x1A # 以 0x 开头的数字是十六进制
print(d + 1)
将十进制数转换为其他进制数
在Python中,可以使用内置函数int()和str()来进行十进制数和其他进制数之间的转换。
- 要将一个十进制数转换为二进制数,可以使用内置函数bin()。例如:
binary_num = bin(10)
print(binary_num) # 输出:'0b1010'
在这个例子中,我们将十进制数10转换为了二进制数。bin()函数返回的是一个字符串,其中包含了数字的二进制表示。如果要将结果转换为整数,可以使用内置函数int():
binary_num = int('0b1010', 2)
print(binary_num) # 输出:10
将十进制数转换为八进制数
- 要将一个十进制数转换为八进制数,可以使用内置函数oct()。例如:
octal_num = oct(10)
print(octal_num) # 输出:'0o12'
在这个例子中,我们将十进制数10转换为了八进制数。oct()函数返回的是一个字符串,其中包含了数字的八进制表示。如果要将结果转换为整数,可以使用内置函数int():
octal_num = int('0o12', 8)
print(octal_num) # 输出:14
将十进制数转换为十六进制数
- 要将一个十进制数转换为十六进制数,可以使用内置函数hex()。例如:
hex_num = hex(10)
print(hex_num) # 输出:'0xa'
在这个例子中,我们将十进制数10转换为了十六进制数。hex()函数返回的是一个字符串,其中包含了数字的十六进制表示。如果要将结果转换为整数,可以使用内置函数int():
hex_num = int('0xa', 16)
print(hex_num) # 输出:10
二、数据类型转换
Python中的数据类型转换非常重要,因为它们可以帮助我们更好地处理和分析数据。在Python中,有几种常见的数据类型,如整数、浮点数、字符串、列表、元组、字典等。
(一)整数与浮点数之间的转换
整数和浮点数是Python中最常用的数据类型之一。当我们需要将一个整数或浮点数转换为另一个数据类型时,需要注意精度问题。例如:
a = 3.14
b = int(a)
print(b) # 输出:3
在这个例子中,我们将浮点数a转换为整数b,由于浮点数的精度有限,所以结果可能会有误差。为了避免这种情况,我们可以使用round()函数来四舍五入:
a = 3.1415926
b = round(a)
print(b) # 输出:3
(二)字符串与整数之间的转换
在Python中,我们可以使用int()函数将一个字符串转换为整数:
s = "123"
i = int(s)
print(i) # 输出:123
同样,我们也可以使用float()函数将一个字符串转换为浮点数:
s = "123.45"
f = float(s)
print(f) # 输出:123.45
(三)列表与元组之间的转换
列表和元组都是Python中的序列数据类型,它们之间可以相互转换。例如:
lst = [1, 2, 3]
tup = tuple(lst)
print(tup) # 输出:(1, 2, 3)
注意:元组是不可变的,所以我们不能直接修改元组中的元素。如果需要修改元组中的元素,可以将元组转换为列表,然后进行修改,最后再将列表转换回元组:
lst = [1, 2, 3]
tup = tuple(lst)
lst[0] = 42
tup = tuple(lst) # 将列表转换回元组
print(tup) # 输出:(42, 2, 3)
(四)字典与集合之间的转换
字典和集合都是Python中的映射数据类型,它们之间可以相互转换。例如:
d = {"a": 1, "b": 2}
set_d = set(d.items()) # 将字典转换为集合(键值对形式)
print(set_d) # 输出:{('a', 1), ('b', 2)}
三、常见运算符
(一)算术运算符
- 加法(+):用于连接两个数值。
- 减法(-):用于从一个数值中减去另一个数值。
- 乘法(*):用于将两个数值相乘。
- 除法(/):用于将一个数值除以另一个数值。
- 取模(%):用于计算一个数值除以另一个数值的余数。
- 幂运算(**):用于计算一个数值的指数幂。
- 整除(//):与取模()相同,但结果为整数。示例:
a = 10
b = 3
c = a + b # 结果为13
d = a - b # 结果为7
e = a * b # 结果为30
f = a / b # 结果为3.3333333333333335
g = a % b # 结果为1
h = a ** b # 结果为1000
i = a // b # 结果为3
(二)赋值运算符
- =:用于将一个值赋给变量。
- +=:用于将一个值加到变量上并更新变量的值。
- -=:用于将一个值从变量上减去并更新变量的值。
- *=:用于将一个值乘以变量并更新变量的值。
- /=:用于将一个值除以变量并更新变量的值。
- %=:用于将一个值对变量取模并更新变量的值。
(三)比较运算符
比较运算符用于比较两个值的大小关系。在Python中,常见的比较运算符有以下几种:
- 等于(==):判断两个值是否相等。
- 不等于(!=):判断两个值是否不相等。
- 大于(>):判断左边的值是否大于右边的值。
- 小于(<):判断左边的值是否小于右边的值。
- 大于等于(>=):判断左边的值是否大于或等于右边的值。
- 小于等于(<=):判断左边的值是否小于或等于右边的值。
a = 10
b = 20
c = a > b
d = a == b
e = a < b
f = a >= b
g = a <= b
(四)逻辑运算符
逻辑运算符用于对布尔值进行逻辑运算,包括与(and)、或(or)和非(not)三种。
- 与(and):当且仅当两个条件都为真时,结果才为真。
- 或(or):只要有一个条件为真,结果就为真。
- 非(not):对一个条件取反,即如果条件为真,则结果为假;如果条件为假,则结果为真。示例:
a = True
b = False
c = a and b
d = a or b
e = not a
f = not b
g = (a and b) and (b and c)
h = (a and b) or (b and c)
i = not (a and b)
j = not (a or b)
(五)位运算符
位运算符用于对二进制数进行位操作,包括按位与(&)、按位或(|)、按位异或(^)、按位取反(~)和左移(<<)等。
- 按位与(&):将两个二进制数的每一位进行与运算,如果两个对应位都为1,则结果为1,否则为0。
- 按位或(|):将两个二进制数的每一位进行或运算,如果两个对应位有一个为1,则结果为1,否则为0。
- 按位异或(^):将两个二进制数的每一位进行异或运算,如果两个对应位不同,则结果为1,否则为0。
- 按位取反(~):对一个二进制数的每一位进行取反操作,即将0变为1,将1变为0。
- 左移(<<):将一个二进制数向左移动指定的位数,右边用0填充。示例:
a = 5 # 二进制表示为 0101
b = 3 # 二进制表示为 0011
c = a & b # 结果为 0001,即十进制的 1
d = a | b # 结果为 0111,即十进制的 7
e = a ^ b # 结果为 0110,即十进制的 6
f = ~a # 结果为 -6,即二进制的 -0b110
g = a << 2 # 结果为 20,即二进制的 1010
(六)运算符的优先级
Python中的运算符优先级如下:
- 括号(())的优先级最高,先计算括号内的表达式。
- 乘法和除法的优先级高于加法和减法。
- 位运算符(&、|、^)的优先级高于其他运算符。
- 比较运算符(==、!=、>、<、>=、<=)的优先级次于其他运算符。
- 逻辑运算符(and、or、not)的优先级最低。例如,对于表达式a + b * c / d,先计算b * c / d,然后再加上a,即先进行乘法和除法运算,再进行加法运算。而对于表达式a < b and c > d,先计算and运算,因为and运算符的优先级最高,然后再计算c > d。