找其他编译器,系统解释器,这样速度会快很多。
进制
现代的计算机和依赖计算机的设备里都用到二进制(即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)
进制转换
不同进制的数字之间可以通过一定的计算规则相互转换。
# 十进制 <==> 二进制
# 二进制 ==> 八进制
# 二进制 ==> 十六进制
a = -23
print(bin(a)) # -0b10111
c = 0b1010
print(c)
整数类型操作
# Python里的数据类型:
# 整型(int) 浮点型(float) 复数(complex)
# 字符串(str) 布尔(bool) 列表(list) 元组(tuple) 字典(dict) 集合(set)
# 整型就是整数。计算机其实只能保存二进制 0 和 1,为了方便数据的表示,同时计算机也支持八进制和十六进制
# 二进制 八进制 十六进制 十进制 在Python里都能够表示
a = 98 # 默认数字都是十进制的数字。 98 就是十进制的九十八
b = 0b101101101 # 以 0b 开头的数字是二进制
print(b) # 当使用print语句打印一个数字的时候,默认也是使用十进制打印输出的
# c = 0b121010102 二进制里最大的个位数是1,不能出现2
c = 0o34 # 以 0o开头的数字是八进制的数字
print(c) # 28
# x = 0o79 八进制里最大的个位数是7
# 十六进制 0~9 a~f
d = 0x2a # 以 0x开头的数字是十六进制
print(d) # 42
使用代码进行进制转换
a = 12 # 十进制的数字12
print(bin(a)) # 0b1100 使用bin内置函数可以将数字转换成为二进制
print(oct(a)) # 0o14 使用oct内置函数可以将数字转换成为八进制
print(hex(12)) # 0xc 使用hex内置函数可以将数字转换成为十六进制
数据类型转换
函数 | 说明 |
---|---|
int(x [,base ]) | 将x转换为一个整数 |
float(x) | 将x转换为一个浮点数 |
str(x) | 将对象 x 转换为字符串 |
bool(x) | 将对象x转换成为布尔值 |
-
转换成为整数
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))
"""
# 使用 int 内置类可以将数据转换成为整数
a = '31'
b = int(a)
print(a) # 31
print(b) # 31
# print(a + 1) # 报错
print(b + 1) # 32
# 如果字符串不是一个合法的数字,会直接报错
# x = 'hello'
# y = int(x)
# print(y)
x = '1a2c'
y = int(x, 16) # 把字符串 1a2c 当做十六进制转换成为整数
print(y) # 6700 打印一个数字,默认使用十进制输出
print(bin(y))
m = '12'
n = int(m, 8) # 把字符串的 12 当做八进制转换成为整数
print(n) # 10
-
转换成为浮点数
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 将整数转换成为了浮点数
a = '12.34'
# 使用内置 float 类可以将其他类型数据转换成为 float浮点数
b = float(a)
print(b + 1)
# 如果字符串不能被转换成为有效的浮点数,会报错
# c = float('hello')
# print(c)
c = 101
print(float(c)) # 101.0
m = float('12') # 将字符串转换成为浮点数
n = float(12) # 将整型数字转换成为浮点数
print(m, n)
-
转换成为字符串
str1 = str(45)
str2 = str(34.56)
str3 = str(True)
print(type(str1),type(str2),type(str3))
# 使用 str 内置类可以将其他类型的数据转换成为字符串
a = 34
b = str(a)
print(a + 1) # 35
# print(b + 1)
print(a) # 34
print(b) # 34
print(type(a)) # <class 'int'>
print(type(b)) # <class 'str'>
-
转换成为布尔值
print(bool(''))
print(bool(""))
print(bool(0))
print(bool({}))
print(bool([]))
print(bool(()))
print(bool(None))
# 使用 bool内置类可以将其他数据类型转换成为布尔值
print(bool(100)) # 将数字100转换成为布尔值
print(bool(-1)) # -1转换成为布尔值也是True
print(bool(0)) # False
# 数字里,只有数字 0 被转换成为布尔值是False,其他数字转换成为布尔值都是True
print(bool('hello')) # True
print(bool('False')) # True
print(bool('')) # False
print(bool("")) # False
# 字符串里,只有空字符串 '' / "" 可以转换成为False,其他字符串都转换成为True
# None 转换成为布尔值是 False
print(bool(None)) # False
print(bool("None")) # True
print(bool([])) # False
print(bool(())) # False
print(bool({})) # False
print(bool())
# {'name': 'zhangsan', 'age': 18}
# {1,2,3,4}
# {} # 空字典
s = set() # 空集合
print(bool(s))
# 数字0,空字符串 ''/"",空列表[],空元组(),空字典{},空集合set(),空数据None会被转换成为False
# 在计算机里,True和False其实就是使用数字 1 和 0 来保存的
print(True + 1) # 2
print(False + 1) # 1
# 隐式类型转换
if 0:
print('good')
在python中,只有空字符串
'',""
,数字0,空字典{},空列表[],空元组(),和空数据None会被转换成为False,其他的都会被转换成为True
# 进制转换 将 int 类型以不同的进制表现出来
# 类型转换 将一个类型的数据转换为其他类型的数据
# int ==> str str ==> int bool ==> int int ==> float
age = input('请输入您的年龄:')
# 原因: input 接收到的用户输入,都是 str字符串类型
# 在Python里,如果字符串和数字做加法运算,会直接报错
# 把字符串类型的变量 age 转换成为数字类型的 age
# print(age + 1) 错误
# print(type(age)) # <class 'str'>
# 使用 int 内置类可以将其他类型的数据转换成为整数
new_age = int(age)
# print(type(new_age)) <class 'int'>
print(new_age + 1)
# 为什么要转换数据类型:因为不同的数据类型,进行运算时,它的运算规则不一样。