PYTHON3基本数据类型
一、数字类型
①整型
通常被称为是整型或整数,可以是正整数或负整数,不带小数点。Python3整型是没有限制大小的,可以当做long类型使用, 但实际上由于机器内存的有限,我们使用的整数是不可能无限大的。
整型的四种表现形式:
- 2 进 制:以'0b'开头。例如:'0b11011'表示10进制的27
- 8 进 制:以'0o'开头。例如:'0o33'表示10进制的27
- 10进制:正常显示
- 16进制:以'0x'开头。例如:'0x1b'表示10进制的27
各进间数字进行转换(内置函数):
bin(i):将i转换为2进制,以“0b”开头。
oct(i):将i转换为8进制,以“0o”开头。
int(i):将i转换为10进制,正常显示。
hex(i):将i转换为16进制,以“0x”开头。
【问题记录】
Python字符串与数字拼接
Python不像JS或者PHP这种弱类型或者Java语言里在字符串连接时会自动转换类型,而是直接报错
解决方案:
# 字符串拼接,字符串+数字
msg = '你的分数是:'
num = 82
# 拼接完后输出
print(msg + str(num) + '分')
# 依次输出显示
print(msg, num, '分')
输出结果:
你的分数是:82分
你的分数是: 82 分
python3各进制转换
0b111、0o111、0x111不能直接用int函数直接转化为10进制整数,不然就会报错
解决方案
# bin(111)==’0b1101111’,oct(111)==’0o157’, hex(111)==’0x6f’,
# 这三个函数的参数需要的是10进制整数,结果是2、8、16进制对应的字符串形式
# int(110+True)或者int('111')参数可以是数值或者字符串,结果是int类型
i = 111
i_str = str(111)
i_str_b = '0b' + str(111)
i_str_o = '0o' + str(111)
i_str_x = '0x' + str(111)
# 2、8、16进制对应的带前缀的字符串形式0b...、0o...、0x...,不能直接转化为10进制整数
# int函数第一个参数要传入各进制的字符串格式,并且
# 第一个参数要和第二个参数进制数对应起来,如int(‘0x111’,8) 或者int(‘111’,8)
# 相同数字串在各进制表示的数值(十进制表示)
print("·相同数字串在各进制表示的数值(十进制表示)")
print("原数字串(十进制):%d 二进制:%d 八进制:%d 十六进制:%d" % (i, int(i_str, 2), int(i_str, 8), int(i_str, 16)))
# 改用eval函数可以执行各进制的字符串格式
print("改用eval函数")
print("原数字串(十进制):%d 二进制:%d 八进制:%d 十六进制:%d" % (i, eval(i_str_b), eval(i_str_o), eval(i_str_x)))
print()
# 相同十进制数值在各进制下的表示
print("·相同十进制数值在各进制下的表示")
# Python中%格式化不存在自动将整数转换成二进制表示的方式
print("原数(十进制):%d 八进制:%o 十六进制:%x" % (i, i, i))
# 改用format方式转换进制
print("改用format方式")
print("原数(十进制): {:d} 二进制:{:b} 八进制:{:o} 十六进制:{:x}".format(i, i, i, i, i))
# 带前缀显示
print("带前缀显示")
print("原数(十进制):%d 二进制:%s 八进制:%s 十六进制:%s" % (i, bin(i), oct(i),hex(i)))
print()
输出结果:
·相同数字串在各进制表示的数值(十进制表示)
原数字串(十进制):111 二进制:7 八进制:73 十六进制:273
改用eval函数
原数字串(十进制):111 二进制:7 八进制:73 十六进制:273
·相同十进制数值在各进制下的表示
原数(十进制):111 八进制:157 十六进制:6f
改用format方式
原数(十进制): 111 二进制:1101111 八进制:157 十六进制:6f
带前缀显示
原数(十进制):111 二进制:0b1101111 八进制:0o157 十六进制:0x6f
②浮点型
浮点型由整数部分与小数部分组成。
float型数字:0.0、15.2、-2.9、-32.5e10、32+e18。
浮点数可以用科学计算法表示:2.5e2 = 2.5 x 10^2 = 250
# 负数运算
# / - 返回的是浮点数 // - 向下取整
print("【负数运算】")
print("-9/2 = %f" % (-9 / 2))
print("-9//2 = %f" % (-9 // 2))
结果:
【负数运算】
-9/2 = -4.500000
-9//2 = -5.000000
# 四舍五入
# 小数部分在中值0.5时向坐标中心取整
# 其余向上下两端靠拢
print("【四舍五入】")
print("round(12.1)",round(12.1))
print("round(12.5)",round(12.5))
print("round(12.8)",round(12.8))
print("round(-4.2)",round(-4.2))
print("round(-4.5)",round(-4.5))
print("round(-4.7)",round(-4.7))
结果:
【四舍五入】
round(12.1) 12
round(12.5) 12
round(12.8) 13
round(-4.2) -4
round(-4.5) -4
round(-4.7) -5
③布尔类型
在Python3中True=1,False=0,可以和数字型进行运算。
但是,数值不属于布尔型
# 以下两句输出结果均为false
print("1 is True : %s" % (1 is True))
print("0 is True : %s" % (0 is True))
print("type(1) : %s " % type(1))
print("type(True): %s" % type(True))
print()
输出结果:
1 is True : False
0 is True : False
type(1) : <class 'int'>
type(True): <class 'bool'>
在分支语句(如if)判断时,非零即真
# 以下两句输出结果均为1
print("0 if 0 else 1,结果:%d" % (0 if 0 else 1))
print("1 if 1 else 0,结果:%d" % (1 if 1 else 0))
print()
输出结果:
0 if 0 else 1,结果:1
1 if 1 else 0,结果:1