一, 数据类型
字符串
整数
浮点数
[补充中...]
1, 字符串 str
字符串: 英文 string, 简写 str.
- name = '小石头:'
- print(name,'2019', '12', '24')
- # 小石头: 2019 12 24
- print("平安夜, 祝你一生平安. Merry Christmas!")
- # 平安夜, 祝你一生平安. Merry Christmas!
以上, 包裹在单引号和双引号里边的内容, 如'小石头','2019'这些就是字符串.
换言之, 但凡包裹在英文格式下的 单引号, 双引号或三引号 里的内容, 不论引号里边是英文, 中文, 甚至是数字, 符号, 火星文等, 她都叫做字符串.
强调?? 引号! 引号! 引号!!!
2, 整数 int
整数: 英文为 integer, 简写做 int.
- year = 2019
- month = -12 # 可以为负数
- day = -24 + 12 # 可以做运算
- print('Today is',year,month,day)
- # Today is 2019 -12 -12
以上, 2019,12,24 这三个都是整数.
没有引号包裹的, 没有小数点的, 整数数字, 就是整数类型.
注意??: 一旦数字被引号包裹, 他就是字符串类型.
3, 浮点数 float
浮点数: 英文名是 float, 与整数 (int) 和字符串 (str) 不同.
浮点数没有简写.
不过非常好识别, 它比整数多了一个小数点『. 』.
换言之, 带小数点的数字即是浮点数.
比如下列代码中的数字都是浮点数.
- print(20.19)
- # 20.19
- print(-12.25) # 可以为负数
- # -12.25
- print(520.1314 + 07.11) # 可以做数学运算
- # 527.2414
注意??: 同样不能有引号包裹.
浮点数还有一个计算结果有精度误差的问题. 详见下边番外篇.
二, 类型查询
type()函数
1,type()函数作用
查询, 获取数据的类型.
既然存在不同的类型, 我们就需要一个类型检查工具, 来告诉我们这个数据究竟是什么类型.
2,type 用法
只需把查询的内容放在括号里就行.
- name = '俺是字符串'
- value = 123
- flr = 12.4
- numberStr = '123'
- # 如下使用 type:
- print(type(name))
- # <class 'str'>
- print(type(value))
- # <class 'int'>
- print(type(flr))
- # <class 'float'>
- print(type(numberStr))
- # <class 'str'> 尽管是 123 数字, 只要包裹在英文引号中就是字符串
如上打印结果, 代表类型的样式为 < class '类型'>. 其中:
str 代表字符串, 全称为 string
整数的英文简称为 int, 全称为 integer
float 就是浮点数类型
三, 类型转换
str()函数
int()函数
float()函数
所谓, 道不同不相为谋, 不同类型的数据不能拼接在一起. 也不能一起共事. 为了让他们一起共事, 就有了类型转换这么一个 "和稀泥" 的操作:
python 是类型严格的语言, 不像 JS 那样的若类型语言, 会自动进行类型的隐式转换. 所以当不同类型的数据进行结合时, 需要我们手动强制进行类型转换.
强类型语言里, 不同类型的数据之间需要进行类型转换才能一起 "共事".
比如, 1+'1'这么写, 在 JS 中肯定没问题, 因为会进行隐式类型转换, 把数字 1 变成字符串 1, 然后就变成了字符串拼接, 最后的到 11.
但是 python 不会进行隐式类型转换, 他发现你用数字 1 + 字符串 1, 就会报语法错误.
因此当我们把两个不同类型的数据进行结合处理时, 应该手动将其中一方的类型转换统一成跟另一方一样的.
依旧以 1+'1'为例, 进行手动类型转换的方法示例:
- a = 1
- b = '1'
- # print(a + b)
- # # 这么写报错. 改正如下:
- print(a + int(b))
- # 2, 将字符串转换为 int 类型, 进行加法运算
- print(str(a) + b)
- # 11, 将整数转为字符串类型, 进行字符串拼接.
负责转换数据类型的函数一共有 3 种: str(), int()和 float().
1,str()函数
str()函数能将数据转换成其字符串类型, 不管这个数据是 int 类型还是 float 类型, 只要放到括号里. 这个数据就能成为字符串类型.
1-1, 整数 / 浮点数 - 转为字符串
运用:
- # str()
- who = '我'
- age = 18
- item = '岁'
- print(who+str(age)+item)
- # 我 18 岁
- # 通过 str(age)一个步骤, 可以将整数类型的[18] 转化为字符串类型的['18'] , 成功完成数据拼接.
以上是一种整数转换为字符串的方法.
1-2, 第二种整数转换为字符串的方法 - 直接上引号
借用[引号] 的帮助, 直接将数字转为字符串:
- # str()
- who = '我'
- age = 18
- item = '岁'
- print(who+'18'+item)
- # 我 18 岁
缺陷: 引号内我们使用的是数字, 而不是变量名 age. 这是因为, 当我们使用引号时, 引号里的东西, 都会被强制转换为字符串格式. 如果使用变量名 age, 这里就会把 age 这个变量名转换为字符串, 打印出 "我 age 岁"
2,int()函数
将其他数据转换为整数类型. 当参数为小数时, 会做抹零, 取整处理. 不会进行四舍五入的哦!
使用方法同 str()一样, 将你需要转换的内容放在括号里就行, 像这样: int(转换的内容).
- # int
- num1 = '1'
- num2 = '8'
- print(int(num1)+int(num2))
- # 9
注意??: 只有符合整数规范的字符串类数据, 才能被 int()强制转换:
首先, 整数形式的字符串比如'1'和'8', 可以被 int()函数强制转换.
其次, 文字形式, 比如中文, 火星文或者标点符号, 不可以被 int()函数强制转换.
最后, 小数形式的字符串, 由于 Python 的语法规则, 也不能直接使用 int()函数强制转换. 比方说下列代码, 如果点击运行, 程序会报错.
- print(int('1.8'))
- # ValueError: invalid literal for int() with base 10: '1.8'
- # (值异常: 浮点类型字符串无法使用 int()强制转换)
虽然浮点形式的字符串, 不能使用 int()函数. 但浮点数是可以被 int()函数强制转换的
可以先将字符串转换为浮点类型, 再将浮点数转换为 int 类型.
print(int(float('1.8'))) # 1, 先将字符串'1.8'转换为浮点数 1.8, 再直接对浮点数 1.8 取整的到数字 1
3,float()函数
3-1, 使用
将需要转换的数据放在括号里, 像这样: float(数据).
3-2, 规则
float()函数也可以将整数和字符串转换为浮点类型.
但同时, 如果括号里面的数据是字符串类型, 那这个数据一定得是数字形式. 如'2.3','52.1'这样, 而不是'我是汉子'这样的纯文字
- weight = 43.2
- print(float(height))
- # 43.2
四, 数据类型的应用
字符串拼接
四则运算
1, 四则运算
Python 里的整数, 浮点数和数学意义的整数, 小数是一样的, 它最重要的作用是与运算符号结合, 进行数学计算.
2,Python 中的运算符
运算符 | 含义 | 示例 |
---|---|---|
+ | 加 | 1 + 1 |
- | 减 | 2 - 1 |
* | 乘 | 1 * 2 |
/ | 除 | 4 / 2 |
% | 取模 - 返回除法的余数 | 5 % 2 得到 5 除以 2 的余数 |
** | 幂 - 返回 x 的 y 次幂 | 2 ** 3 得到 2 的 3 次方 |
// | 取整除 - 返回商的整数部分 | 11 // 2 得到 11/2 的商再取整 |
对上表中的运算符写几个例子运行一下:
- # 运算符示例
- print(20+19)
- # 39
- print(2020-1993)
- # 27
- print(20191231*20200101)
- # 407864905514331
- print(2020/10)
- # 202.0
- print(23%45)
- # 23
- print(2**3)
- # 8
- print(11//2)
- # 5
3, 运算优先级
和我们平时的计算优先级是一样的:
从左到右计算, 括号里的优先计算.
先乘除, 后加减.
- # 先口算, 再运行, 看你算的对不对.
- print(1234*124+325235-1251)
- print((6236-124)/125+326*23)
4, 字符串拼接
这就和 JavaScript 中的一样了
非常简单, 就是利用字符串拼接符号[+] , 将需要拼接的变量连在一起就行了.
- # 字符串拼接示例
- a = '我'
- b = '叫'
- c = '小'
- d = '石'
- e = '头'
- print(a+b+c+d+e) # 我叫小石头
切记??: 做字符串拼接也好, 运算符表达式也好,+ 号或其他符号两边的数据类型必须一致, 否则会报错 TypeError(详见第三篇错误类型合集 B 项错误记载).
五, 番外 - 浮点数计算精度问题
运算下边的代码:
- print(0.55+0.3)
- # 0.8500000000000001
发现打印结果并不显而易见的 0.85, 而是 0.8500000000000001.
为什么不是[0.85] , 而尾巴多了一个[1] 呢? 这是因为, Python 计算浮点数时, 会先把 0.55 和 0.3 转化成二进制数[注: 二进制数由 0 和 1 表示, 逢二进一] , 如下:
- # 进制转换
- 0.55(十进制) = 0.1000110011001100110011001100110011001100110011001101(二进制)
- 0.3(十进制) = 0.0100110011001100110011001100110011001100110011001101(二进制)
而在这个转化过程中存在误差, 这样, 就造成了我们与程序计算结果的差异.
然后, 这俩二进制数通过二进制法则运算后, 再通过复杂的计算公式, 将二进制结果转成十进制小数.
原网页地址
2019.12.31
来源: http://www.bubuko.com/infodetail-3359970.html