进制
代码语言:javascript复制现代的计算机和依赖计算机的设备里都用到二进制(即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)
进制转换
不同进制的数字之间可以通过一定的计算规则相互转换。
类型转换
函数 | 说明 |
---|---|
int(x [,base ]) | 将x转换为一个整数 |
float(x) | 将x转换为一个浮点数 |
str(x) | 将对象 x 转换为字符串 |
bool(x) | 将对象x转换成为布尔值 |
转换成为整数
代码语言:javascript复制print(int("123")) # 123 将字符串转换成为整数
print(int(123.78)) # 123 将浮点数转换成为整数
print(int(True)) # 1 布尔值True转换成为整数是 1
print(int(False)) # 0 布尔值False转换成为整数是 0
# 以下两种情况将会转换失败
'''
123.456 和 12ab 字符串,都包含非法字符,不能被转换成为整数,会报错
print(int("123.456"))
print(int("12ab"))
'''
# 使用int()函数进行类型转换时,还可以传入两个参数,第二个参数用来表示进制。
print(int("21",8)) # 输出的结果是17.八进制的21,对应的十进制数字是17
print(int("F0",16)) # 输出的结果是240.十六进制的F0,对应的十进制数字是240
"""
以下写法会报错。八进制里允许的最大值是7,所以 29 不是一个合法的八进制数
print(int("29",8))
"""
转换成为浮点数
代码语言:javascript复制f1 = float("12.34")
print(f1) # 12.34
print(type(f1)) # float 将字符串的 "12.34" 转换成为浮点数 12.34
f2 = float(23)
print(f2) # 23.0
print(type(f2)) # float 将整数转换成为了浮点数
转换成为字符串
代码语言:javascript复制str1 = str(45)
str2 = str(34.56)
str3 = str(True)
print(type(str1),type(str2),type(str3))
转换成为布尔值
代码语言:javascript复制print(bool(''))
print(bool(""))
print(bool(0))
print(bool({}))
print(bool([]))
print(bool(()))
print(bool(None))
在python中,只有空字符串’',“”,数字0,空字典{},空列表[],空元组(),和空数据None会被转换成为False,其他的都会被转换成为True。
算数运算符
下面以a=10 ,b=20为例进行计算。
a b
的结果为 30。-
:减法,得到负数或一个数减去另一个数。例如,a - b
的结果为 -10。*
:乘法,将两个数相乘或返回一个被重复若干次的字符串。例如,a * b
的结果为 200。/
:除法,返回除法的结果。例如,b / a
的结果为 2。//
:取整除,返回商的整数部分。例如,9 // 2
的结果为 4,9.0 // 2.0
的结果为 4.0。%
:取余,返回除法的余数。例如,b % a
的结果为 0。**
:指数,返回指数运算的结果。例如,a ** b
的结果为 10 的 20 次方,即 100000000000000000000。()
:小括号,用于提高运算的优先级。例如,(1 2) * 3
的结果为 9。
代码语言:javascript复制注意:混合运算时,优先级顺序为: ** 高于 * / % // 高于 - ,为了避免歧义,建议使用 () 来处理运算符优先级。 并且,不同类型的数字在进行混合运算时,整数将会转换成浮点数进行运算。
10 5.5 * 2 # 输出结果 21.0
(10 5.5) * 2 # 输出结果 31.0
算数运算符在字符串里的使用
如果是两个字符串做加法运算,会直接把这两个字符串拼接成一个字符串。
代码语言:javascript复制str1 ='hello'
str2 = 'world'
str1 str2 # 输出结果 'helloworld'
如果是数字和字符串做加法运算,会直接报错。
代码语言:javascript复制str1 = 'hello'
a = 2
a str1 # 报错 TypeError: unsupported operand type(s) for : 'int' and 'str'
如果是数字和字符串做乘法运算,会将这个字符串重复多次。
代码语言:javascript复制str1 = 'hello'
str1*10 # 输出结果 'hellohellohellohellohellohellohellohellohellohello'