python基本数据类型——整型,浮点型,复数,字符串
2018-04-03 14:48
726 查看
由于也是初学python,所以在这里简要介绍一下python基础的数据类型,好在宏观上有个把握。
整数类型的4种表示形式:
+++++十进制:1010,99,-217
+++++二进制:0b或0B开头,如 0b101,-0B110
+++++八进制:0o或0O开头,如 0o123,-0O345
+++++十六进制:以0x或0X开头,如 0x9a,-0x89
取值范围数量级约-10^308到 10^308,精度数量级10^-16。
也就是当某个浮点数并不能被2进制精确表示的时候,就会出现不确定尾数。什么叫精确表示呢?
因为十进制数和二进制数之间不存在一一映射的关系,所以某些十进制数是不能被二进制精确表示的,而只能近似表示,这样就造成了计算的二进制结果是十进制结果的一个近似数。如0.1表示为二进制的数时,是无限的,可以无限接近0.1但不等于0.1。不确定尾数出现在10^(-16)
那语句 0.1+0.2 ==0.3呢? 判断为False
此时可以使用round(x[,d])对x四舍五入,d是小数保留的位数。默认取整,[,d]表示可有可无。
aeb 表示a*10^b
z.real,获得实部
z.imag,获得虚部
3种数据类型的可以看成逐渐扩展的关系。
整数 —》浮点数—》复数,提到这个的主要原因是,不同类型的数据进行运算时,遵循向上提升的规则。这样不会造成数据的丢失。
一个小例子来直观的感受一下:
‘<你要表达的字符串>’,前面2中表示方法是用来表示单行字符串的;还可以(3)使用2个”’符号括起来表示,形式上就是:”’<你要表达的字符串>”’,值得注意的该表示可以用来表达多行字符串。而表示形式(1)(2)只能表示单行字符串。
之所以有(1)(2)这2种表达单行字符串的,是因为在字符串中包含另一种引号时会比较方便。
切片用来截取字符串的某一段元素:如 str_name[1:4],访问str的第2个到第4个元素,即str[1],str[2],str[3]3个元素,但并不包括下标4对应的元素。这是需要注意的。
M,N分别表示切片的起点和终点(不包括终点所对应的元素),M缺失表示至开头,N缺失表示至结尾,K表示步长,即隔几个元素取一个元素。
str_name[::-1]逆序字符串str_name
当然如果我想取字符串从第3个元素到最后的片段,那么可以使用str_name[2:],就行了。
str(x): 将任何数据类型的x都转换为字符串
hex(x): 整数x转为十六进制
oct(x): 整数x转为八进制
chr(u): u为unicode编码,返回其对应的字符
ord(x):返回x对应的Unicode编码
槽用‘{}’来表示,表示为format中的参数占位。
如果没有在槽中明确指定该槽放置哪个序号的参数,就按照序号顺序依次填充。换句话说,就是第一个槽对应显示第一个参数,第二个槽对应显示第二个参数,以此类推。用图表示为如下:
但是如果明确指出了槽内对应的参数编号,那么就按照指定的序号来格式化显示字符串。
如上面所展示的,如果要对某个槽进行格式化,那么可以在“:”后面添加格式控制标记。“:”前面若不指定参数序号则按默认的来对应参数。
那“:”后面究竟能够指定哪些格式化参数呢?
需要注意的是,这些格式化参数如果有是需要按照上图的顺序依次填写的,否则就会报错。
这里再贴出几个例子,以便深刻地理解。
A 每天都进步1%。
B 工作5天,周末休息,休息时会退步1%,那么工作日需要进步多少才能和达到和A一样的进步?
整数类型
python里面的整数类型可正可负,不像其他的语言,python的整数并没有取值范围的限制。如:pow(x,y)函数用来计算x的y次方。整数类型的4种表示形式:
+++++十进制:1010,99,-217
+++++二进制:0b或0B开头,如 0b101,-0B110
+++++八进制:0o或0O开头,如 0o123,-0O345
+++++十六进制:以0x或0X开头,如 0x9a,-0x89
浮点数类型
浮点数的取值范围和小数精度都存在限制,但常规计算中可忽略这种限制。取值范围数量级约-10^308到 10^308,精度数量级10^-16。
不确定尾数
浮点数间的运算存在不确定尾数,这不是bug,不确定尾数在很多编程语言都存在。也就是当某个浮点数并不能被2进制精确表示的时候,就会出现不确定尾数。什么叫精确表示呢?
因为十进制数和二进制数之间不存在一一映射的关系,所以某些十进制数是不能被二进制精确表示的,而只能近似表示,这样就造成了计算的二进制结果是十进制结果的一个近似数。如0.1表示为二进制的数时,是无限的,可以无限接近0.1但不等于0.1。不确定尾数出现在10^(-16)
0.1+0.2 0.30000000000000004
那语句 0.1+0.2 ==0.3呢? 判断为False
此时可以使用round(x[,d])对x四舍五入,d是小数保留的位数。默认取整,[,d]表示可有可无。
>>> (0.1+0.2)==0.3 False >>> round(0.2+0.1,1)==0.3 True
浮点数与科学计数法
浮点数可以使用科学计数法表示。aeb 表示a*10^b
>>> 1.234e2 123.4
复数类型
表示为a+bjz.real,获得实部
z.imag,获得虚部
3种数据类型的可以看成逐渐扩展的关系。
整数 —》浮点数—》复数,提到这个的主要原因是,不同类型的数据进行运算时,遵循向上提升的规则。这样不会造成数据的丢失。
一个小例子来直观的感受一下:
>>> z = 3+4j >>> z.imag 4.0 >>> z.real 3.0 >>>
运算操作符
+,-,,/,//表示整除,%取模,*幂运算。3^2 在python中表示为3**2或者用pow(3,2)。字符串
字符串的表示
字符串既可以(1)使用2个”符号括起来表示,形式上就是:”<你要表达的字符串>”,也可以(2)使用2个’符号括起来表示,形式上就是:‘<你要表达的字符串>’,前面2中表示方法是用来表示单行字符串的;还可以(3)使用2个”’符号括起来表示,形式上就是:”’<你要表达的字符串>”’,值得注意的该表示可以用来表达多行字符串。而表示形式(1)(2)只能表示单行字符串。
之所以有(1)(2)这2种表达单行字符串的,是因为在字符串中包含另一种引号时会比较方便。
>>> str ="woyou ge ' " >>> print(str) woyou ge '
索引和切片
索引可以用来访问字符串的某一个元素:如 str[2]即代表访问str的第3个元素;python中数组的下标都是从0开始的。切片用来截取字符串的某一段元素:如 str_name[1:4],访问str的第2个到第4个元素,即str[1],str[2],str[3]3个元素,但并不包括下标4对应的元素。这是需要注意的。
>>> str='123456' >>> type(str) <type 'str'> >>> str[1:4] '234' >>>
字符串切片的高级用法
[M:N:K]根据步长对字符串切片,M,N分别表示切片的起点和终点(不包括终点所对应的元素),M缺失表示至开头,N缺失表示至结尾,K表示步长,即隔几个元素取一个元素。
str_name[::-1]逆序字符串str_name
当然如果我想取字符串从第3个元素到最后的片段,那么可以使用str_name[2:],就行了。
字符串处理函数1
len(str_name):返回字符串的长度str(x): 将任何数据类型的x都转换为字符串
hex(x): 整数x转为十六进制
oct(x): 整数x转为八进制
chr(u): u为unicode编码,返回其对应的字符
ord(x):返回x对应的Unicode编码
小例子:显示12个星座对应的字符
这里介绍一个小例子来体会一下,其中通过在print函数中指定end属性值为end=”“可以使得for循环的输出都在同一行显示。for i in range(12): print(chr(9800+i),end="")
字符串处理方法
这些都是以方法形式提供的字符串处理功能。字符串格式化
str_name.format()槽用‘{}’来表示,表示为format中的参数占位。
如果没有在槽中明确指定该槽放置哪个序号的参数,就按照序号顺序依次填充。换句话说,就是第一个槽对应显示第一个参数,第二个槽对应显示第二个参数,以此类推。用图表示为如下:
但是如果明确指出了槽内对应的参数编号,那么就按照指定的序号来格式化显示字符串。
槽内部对字符串格式化
如上面所展示的,如果要对某个槽进行格式化,那么可以在“:”后面添加格式控制标记。“:”前面若不指定参数序号则按默认的来对应参数。
那“:”后面究竟能够指定哪些格式化参数呢?
需要注意的是,这些格式化参数如果有是需要按照上图的顺序依次填写的,否则就会报错。
>>> "{:=^20}".format("python") '=======python=======' >>> "{:=20^}".format("python") ValueError: Unknown format code '^' for object of type 'str'
这里再贴出几个例子,以便深刻地理解。
python练习程序
练习1
有一个问题:如下描述,A 每天都进步1%。
B 工作5天,周末休息,休息时会退步1%,那么工作日需要进步多少才能和达到和A一样的进步?
#daydayup.py # 计算工作5天休息2天总的进步 def dayUp(df): dayup = 1 for i in range(365): if i % 7 in [0,6]: dayup = dayup *(1-0.01) else: dayup = dayup *(1+df) return dayup #计算连续工作365天的进步 dayup_a = 1.0 dayup_a = (dayup_a+0.01)**365 # 37.78 print("dayup_a is :",dayup_a) dayfactor = 0.01 while dayUp(dayfactor) < dayup_a: dayfactor += 0.001 print("工作日应该达到的目标为: ".format(dayfactor))
练习2
这里显示一个如图所示的字符串,要求每隔1s显示一行。import time print("start".center(20,'-')) scale = 10 for i in range(scale+1): m = '*' * i n = '.' * (scale-i) ratio = (i/scale)*100 print("{:^3.0f}%[{}->{}]".format(ratio,m,n)) time.sleep(1) print("end".center(20,'-')) ~
练习3
针对练习2的改进,使得字符串刷新以后还能在同一行显示,看起来就像是覆盖了之前在屏幕该行的内容。import time print("start".center(20,'-')) scale = 10 for i in range(scale+1): m = '*' * i n = '.' * (scale-i) ratio = (i/scale)*100 print("\r{:^3.0f}%[{}->{}]".format(ratio,m,n) , end="") time.sleep(1) print('\n') print("end".center(20,'-'))
相关文章推荐
- Python基础:1.数据类型(空、布尔类型、整型、长整型、浮点型、字符串)
- Python基本数据类型__空,布尔类型,整型,浮点型
- Python学习笔记(二):基本数据类型及操作(逻辑、字符串、浮点、复数)
- C语言中数据结构的基本类型(整型、浮点型和字符型)
- python基本数据类型,数字与字符串
- Python 中的基本数据类型 ---Number(数字) 和 String(字符串)
- 自学Python2.1-基本数据类型-字符串方法 下
- python基础-基本数据类型总结_整型(int)_字符型(str)_day3
- MySql 基础学习笔记 1——概述与基本数据类型: 整型: 1)TINYINT 2)SMALLINT 3) MEDIUMINT 4)INT 5)BIGINT 主要是大小的区别 图 浮点型:命令
- MySql 基础学习笔记 1——概述与基本数据类型: 整型: 1)TINYINT 2)SMALLINT 3) MEDIUMINT 4)INT 5)BIGINT 主要是大小的差别 图 浮点型:命令
- A Byte of Python 笔记(2)基本概念:数、字符串、转义符、变量、标识符命名、数据类型、对象
- Python - Day10 - 运算符 & 基本数据类型 & 整形 & 字符串
- Python基础,基本类型(整型,浮点数等)数据结构(List,dic(Map),Set,Tuple),控制语句(if,for,while,continue or break):来自学习资料
- JAVA整型和浮点型基本数据类型的一些小姿势
- Python变量类型(l整型,长整形,浮点型,复数,列表,元组,字典)学习
- 自学Python2.1-基本数据类型-字符串str(object) 上
- c++基本数据类型基本类型: 整型: 短整型: short int 整型: int 长整型:long int 字符型:char(分为有符号和无符号,默认有符号) 浮点型:
- 数据类型1:字符串,整型,浮点型
- python基本数据类型(三)-字符串拼接-格式化输出-深浅复制-python3笔记
- C++学习笔记之数据类型(1)整型、浮点型、字符串