01-Python 中的数据类型-01-数字类型
总体 要讲的大纲内容 如下
- 数字类型- int float complex
- 序列类型 - list tuple range
- 集合类型 -
set
frozenset
- 上下文管理器类型 - 比较复杂暂时 不用掌握
- 文本序列类型
- 二进制序列类型 bytes bytesarray memoryview
- 真值检测
- 比较运算符
- 逻辑运算符
- 如何判断 一个对象 是什么类型- type(xxx)
今天的内容比较多,这些内容几乎贯穿了python 的基础,所以 我第一篇 先从数据类型 开始讲起 。
首先 很多同学 可能疑问 为啥会有数据类型? 其实在人类 的世界中,人们也是有数据类型
的,
比如 桌子 的高度,回答 80 cm ,90cm 等
今天天气是不是晴天? 回答 是或者不是
你的名字 是什么? 回答 Frank 等。
第一个 回答 就是 数字的一个类型,
第二个回答 就是 布尔类型,就是真 ,假。
第三个回答 就是一个名称 ,就是一个 字符串。
你看 ,我们很自然的就能用不同数据类型来回答生活中的问题 。 但是为啥 计算机里面单独要说数据类型呢? 其实是因为 计算机 太笨了,不告诉计算机这是什么类型,它就不知道怎么操作这个数据。 所以计算机需要知道是什么类型,知道了什么类型, 相对应的计算机就知道对这样的类型 有哪些操作。
好了进入今天的话题, python 中的数据类型,在python中数据类型 有很多。每一种编程语言 对数据类型 定义有点区别,但大致都是一样的。 第一个类型 数字类型
数字类型
数字类型 包含 int float complex , int 就是整数 向 1,2,3,… 等 float 就是小数 3.4 , 5.67,8.9 ; complex 就是复数 ,这个就是高中所学的 复数类型 ,有实部和虚部 那种类型。
来看下如何定义这些和使用这些类型
height = 165
print(f"height = {height}")
print(f"type = {type(height)}")
结果如下:
height = 165
type = <class 'int'>
这个时候点击 运行的小按钮,看结果出来, 第二行,可以看到是 int 类型
还有一点 要注意 python 写代码的时候 要注意缩进问题,一般来说,缩进是4个空格,当然编辑器pycharm 已经默认是这样子了,如果以后 写代码的时候 报错 类型
IndentationError: unexpected indent
这种错误就是 缩进有问题 的,要看下 代码是不是没有对齐?
好,现在 你知道如何查看一个 类型了吗? 就是 type(xxx) 然后打印出来 就可以了。
下面我可以演示 在 python Console 里面,这样比较方便 。
我今天 花了 19.5 毛钱 ,money 这个就是float 类型的。
>>> money = 19.5
>>> type(money)
<class 'float'>
是不是很简单。
还有一种类型 complex , complex( 'a+bj')
这样就可以定义一个复数 其中a称为实部,b称为虚部,i 称为虚数单位。
>>> num = complex('1+2j')
>>> num
(1+2j)
>>> num.real
1.0
>>> num.imag
2.0
>>> type(num)
<class 'complex'>
也可以这样定义
>>> num = 2 + 3j
... print(num)
... print(type(num))
(2+3j)
<class 'complex'>
这样 也是可以的.
对于数字类型,int ,float 都有以下的操作 ,注意这里我用的词汇 操作 , 一般数字 就是 加减乘除,取余 ,几次方 等这些 运算操作 。
表 来自官方文档 docs
Operation | Result | Notes | Full documentation |
x + y |
sum of x and y | ||
x - y |
difference of x and y | ||
x * y |
product of x and y 乘法 | ||
x / y |
quotient of x and y 除法 | ||
x // y |
floored quotient of x and y | (1) | |
x % y |
remainder of x / y
|
(2) | |
-x |
x negated | ||
+x |
x unchanged | ||
abs(x) |
absolute value or magnitude of x | abs() |
|
int(x) |
x converted to integer | 把一个数字变成int 类型 | int() |
float(x) |
x converted to floating point | 把一个数字变成float | float() |
complex(re, im) |
a complex number with real part re, imaginary part im. im defaults to zero. | (6) | complex() |
c.conjugate() |
conjugate of the complex number c | ||
divmod(x, y) |
the pair (x // y, x % y)
|
(2) | divmod() |
pow(x, y) |
x to the power y | (5) | pow() |
x ** y |
x to the power y | (5) |
来让我们来看下
这些符号,大部分和我们使用计算器的符号一样,直接输入表达式就可以了,就可以得到结果,是不是很方便呢?
>>> num = 3
>>> num2 = 10
>>> num +num2
13
>>> num - num2
-7
>>> num * num2
30
>>> num / num2
0.3
>>> num2/ num
3.3333333333333335
>>> num2// num
3
有几个 不是 太常用的 介绍一下
整除 操作 //
两左斜线 ,如果两个数相除 除不尽的情况, 比如 11 除以3 , 整除保留整数位,这里不是 四舍五入。
>>> 11/3
3.6666666666666665
>>> 11//3
3
取余操作 %
, 除不尽的时候 余数是多少
>>> 11 %3
2
绝对值 abs() , 求一个数的绝对值
>>> abs(-4.7)
4.7
>>> abs(-9)
9
>>> abs(5)
5
>>> abs(4.7)
4.7
int 取整 ,把一个x 转成int 类型,如果是小数,直接保留整数部分。注意 这里 x 不一定是数字,可以是个字符串类型 ,只要可以转换 成数字 就行。 比如 ‘4’ 就可以转.
>>> int(4.7)
4
>>> int(-4.7)
-4
>>> int('4')
4
float 也是一样哦,把 一个数字转成 float 类型
>>> float('2.34543')
2.34543
>>> int('4')
4
>>> float('-2.34543')
-2.34543
这里 我要说一个情况 假设 我突然哪一天 想把 ‘love’ 转成 一个float 数字 会是 什么情况?来试一下
>>> float('love')
Traceback (most recent call last):
File "<input>", line 1, in <module>
ValueError: could not convert string to float: 'love'
报错了,计算机都明白 ,爱情是不能用数字来衡量的。 爱情高尚,不能用计量单位衡量。 哈哈哈
开玩笑,这里为啥报错,其实报错信息 已经很清楚了, 就是不能将一个字符串’love’ 转成一个 float 类型,计算机无法做到。
就是说在使用 int (),float() 这些函数的时候,计算机 有可能会报错,这个时候就要多想想 计算机为啥不能处理这种情况。 刚刚说的报错,就是 编程语言中的异常,这个是一个比较大的话题,等有时间在聊这个吧。 现在就是知道计算机有可能会报错就可以了。
divmod(x,y) 这个函数 就是返回 两个值, x//y , x%y
第一个值 取整,第二值 取 余 的结果
>>> divmod(11,3)
(3, 2)
>>> divmod(10,2)
(5, 0)
这里要说下 , 其实这里 在编程中如何获取这两个值呢?
a, b = divmod(11, 3)
print(f"a={a},b={b}")
这样divmod 就会返回值,就分别赋值给 a,b . 这里其实返回的是一个元祖类型, 这个是python的数据类型, 类型 是 tuple
翻译成元祖,这个可以先那么了解之后会慢慢介绍。
>>> m =divmod(10,2)
>>> m
(5, 0)
>>> type(m)
<class 'tuple'>
pow 这个就是求 几次方
pow(a,b) 就是 a的 b 次方 ,
这个函数 和 a **b 是一个意思, a 的b 次方 所以 ** 在运算符里面就是次方的的意思
>>> pow(2,4)
16
>>> pow(3,3)
27
>>> pow(5,2)
25
>>> 2**4
16
>>> 3**3
27
>>> 5**2
25
下面一个是和复数相关的
conjugate() 共轭,共轭的,结合的,
这个方法就是求 一个复数的共轭复数
>>> num1 = complex(2,3)
>>> num1
(2+3j)
>>> num2= complex(3,4)
>>> num1.conjugate()
(2-3j)
>>> num1
(2+3j)
>>> num2.conjugate()
(3-4j)
>>> num2
(3+4j)
总结
今天介绍了一些 数字类型,常用操作 。 一定要多去练习, 实践出真知。 里面可能有很多没有讲到的内容,可以看看官方文档,那里是比较全面的。 加油!