【Python系统学习02】数据类型与类型转换
数据类型与类型转换
一、数据类型
- 字符串 
- 整数 
- 浮点数 
- 【补充中...】
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
【Python系统学习02】数据类型与类型转换的更多相关文章
- 【python系统学习10】布尔值
		python的数据类型有好多个,前边写过字符串.整数和浮点数这三种. 本节来整理另一种简单数据类型--布尔值 布尔值(bool) 布尔值和其数据值 计算机可以用数据进行判断,若判断为真则执行特定条件中 ... 
- 【Python系统学习03】错误类型整理(一)
		错误类型与可能原因分析 A.语法错误: 1.syntaxError:invalid syntax 无效的语法 print(2019小石头) # print(2019小石头) # ^ # SyntaxE ... 
- 【python系统学习13】类(class)与对象(object)
		目录: 类(class)和实例 类 实例 小测试 对象(object) 属性和方法 类的创建 伪代码 示例代码 属性(attribute) 方法(method) 类的实例化 实例对象调用类属性和方法 ... 
- Python快速学习02:基本数据类型 & 序列
		前言 系列文章:[传送门] 也就每点一点点的开始咯,“还有两年时间,两年可以学很多东西的” Python ['paɪθən] n. 巨蛇,大蟒 基本数据类型 变量不需要声明 a=10 # int 整 ... 
- Python 系统学习梳理_【All】
		Python学习 1. Python学习---Python安装与基础1205 2. Python学习---PyCharm的使用学习 3. Python学习---Python数据类型1206 4. Py ... 
- 【Python系统学习】基础篇
		这次真的是最后一次了!第三次滚Python的基础.走了太多弯路.认真一点!菜鸟! 教程 转义字符 \ 可以转义很多字符,比如\n表示换行,\t表示制表符,字符\本身也要转义,所以\\表示的字符就是\ ... 
- python语言学习7——数据类型和变量
		整数 python可以处理任意大小的整数,包括负整数,在程序中的表示方法和数学上的写法一样 计算机由于使用二进制,有时候采用十六进制表示整数比较方便,十六进制数用0x前缀 浮点数 简单的小数就直接用小 ... 
- Python Revisited Day 02 (数据类型)
		目录 Python 关键字 整数 整数转换函数 整数位逻辑操作符 浮点类型 math模块函数与常量 复数 精确的十进制数字 decimal 字符串 str.format() 格式规约 Python 关 ... 
- java学习笔记——数据类型及类型转换
		数据类型分为: 1.引用类型(字符型); 2.基本数据类型(数值型); 以下为基本数据类型介绍(括号内的数字表示该类型所占据的字节数) a.整型 byte(8) short(16) int(3 ... 
随机推荐
- LeetCode97 Interleaving String
			Given s1, s2, s3, find whether s3 is formed by the interleaving of s1 and s2. (Hard) For example,Giv ... 
- selenium 图片上传
			WebElement file = driver.findElement(By.name("filename")); 给此元素设置值:file.sendKeys("E: ... 
- HDU 1081 To The Max【dp,思维】
			HDU 1081 题意:给定二维矩阵,求数组的子矩阵的元素和最大是多少. 题解:这个相当于求最大连续子序列和的加强版,把一维变成了二维. 先看看一维怎么办的: int getsum() { ; int ... 
- SLS机器学习最佳实战:日志聚类+异常告警
			1.手中的锤子都有啥? 围绕日志,挖掘其中更大价值,一直是我们团队所关注.在原有日志实时查询基础上,今年SLS在DevOps领域完善了如下功能: 上下文查询 实时Tail和智能聚类,以提高问题调查效率 ... 
- video 获取第一帧的图片作为封面
			<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ... 
- 【codeforces 520B】Two Buttons
			[题目链接]:http://codeforces.com/contest/520/problem/B [题意] 给你一个数n; 对它进行乘2操作,或者是-1操作; 然后问你到达m需要的步骤数; [题解 ... 
- mac 安装 adb
			安装命令 brew cask install android-platform-tools 测试安装情况 adb devices 设备打开开发者模式 略 查看log并过滤出设备id adb logca ... 
- P1112 区间连续段
			题目描述 给你一个长度为n的数组 \(a_1, a_2, \dots a_n\) . 一开始这n个元素都为0. 然后有m次操作,每次操作有两种操作类型: update x y a:将区间 \([x,y ... 
- JPA一对多循环引用的解决&&JackSon无限递归问题
			说是解决,其实不是很完美的解决的,写出来只是想记录一下这个问题或者看一下有没有哪位仁兄会的,能否知道一二. 下面说说出现问题: 问题是这样的,当我查询一个一对多的实体的时候,工具直接就爆了,差不多我就 ... 
- mac默认截图、截图代码
			苹果系统自带截图功能 1 截取全屏:快捷键(Shift+Command+3) 直接按“Shift+Command+3“快捷键组合,即可截取电脑全屏,图片自动保存在桌面. 2 截图窗口:快捷键(Sh ... 
