上一篇文章:Python的变量和数据类型
用Python画的滑稽脸
这是我之前用Python的
turtle库
画的一个滑稽脸的视频,如果想要源码的话可以看我之前的博客:如何用Python画QQ表情中的滑稽脸。拿走别忘了点个赞哈,感谢大家的支持。
文章目录
- 本篇简介
- 基本类型:数值型
- 整数类型:int
- 常见的运算
- 其他常用的数学运算函数
- 随机数函数
- 大小比较
- 数的进制
- 浮点数类型:float
- 浮点数的特性
- 复数类型
- 复数的比较
- 复数的应用
- 更多的数学函数
- math模块中包含的函数
- cmath模块中包含的函数
写在前面:大家好!我是
ACfun
,我的昵称来自两个单词Accepted
和fun
。由于最近在学习python,学了一遍感觉不是特别条理,所以我想整理一个有关python基础的系列的文章。希望自己通过这次的整理可以对python有一个较为清晰的理解和认识。如果有不足或者的错误的地方欢迎在评论区或者私信我指正,感谢大家的不吝赐教。我的唯一博客更新地址是:https://ac-fun.blog.csdn.net/。非常感谢大家的支持。
用知识改变命运,用知识成就未来。加油 (ง •̀o•́)ง (ง •̀o•́)ง
本篇简介
上一篇博客:Python的变量和数据类型 简单的写了一下Python中的数据类型有哪些,本篇我们来详细的学习一下Python中的数据类型以及其应用
(字符串除外,字符串会在后面的博客中做专门的学习整理)。
基本类型:数值型
整数类型:int
Python3中的整数最大的特点就是“不限制大小”。在上一篇博客中也写到:在Python2中支持的long,在Python3中不再支持。在Python 3里,只有一种整数类型 int,表示为长整型。
。那么这个int在Python中所表示的范围到底能有多大呢?给出的解释是:Python 长整数仅受限于用户计算机的虚拟内存总数。
基本可以这么说:Python3的int长度理论上是无限的。所以在Python你不必像在C语言或者java中一样考虑我是用int还是long还是long long等等。在Python3中我们只需要计算就可以了。比如我们计算一下2的100次方等于多少:
>>> 2**100
1267650600228229401496703205376
我们直接在Python自带的IDLE中输入2**100即可计算出结果,如果我们是使用的C语言无论是使用long型还是long long型,肯定会出现数据溢出的情况。因为在C语言中:
long型所表示的范围为:-2147483648 ~ +2147483647 (4 Bytes)
long long所表示的范围为:-9223372036854775808 ~ +9223372036854775807 (8 Bytes)
通过这个例子,我们直接就体会到了Python对于大数的处理的方便性。在Python中无论多复杂的算式都可以直接的出结果。
常见的运算
整数中常见的运算我们在上一篇博客:Python的变量和数据类型 的数值运算
部分已经写过了,这里我们再补充一下:
- 我们还可以使用divmod()这一内置函数直接求整数除法和余数。例如我们求divmod(m,n):使用这个方法会得到两个整数,一个是m // n,另一个是m % n。
- m ** n 求乘方,即整数m的n次方,上面的
2 ** 100
就是2的100次方。 - abs(m) 求m的绝对值
- bin(m) 将数值m转换为二进制数,例如:
>>> x = 10
>>> x
10
>>> bin(x)
'0b1010'
- oct(x) 将数值x转换为八进制,例如:
>>> n = 0b1001
>>> oct(n)
'0o11'
- hex(x) 将数值x转换为十六进制,例如:
>>> x = 0o11
>>> x
9
>>> hex(x)
'0x9'
直接输出x,Python默认将该数值转换为10进制输出
其他常用的数学运算函数
随机数函数
&Python3中的随机数函数用于生成随机数,比如我们要写一个猜数字的游戏就需要用到随机数,或者是当我们写一个游戏需要使用到随机数时(比如大富翁游戏的掷骰子)等等。常见的随机数的生成函数有以下几种:
例如:
# 生成10个随机数
>>> import random
>>> for i in range(10):
print(random.randint(0,100))
97
2
40
28
86
25
67
69
91
58
关于生成随机数这一部分后面还会详细整理。这里只做一个简单的介绍,在后面的博客中我会写一个猜数字的小游戏,到时候我们在详细的学习如何生成随机数。
大小比较
在Python中我们也可以对数值的大小进行比较。我们可以使用比较运算符来进行两个数的比较:
在Python中我们还可以进行连续的比较,比如:
>>> 7 > 3 >= 2
True
>>> 7 < 3 >= 0
False
我们会发现和上面表中的一样,如果表达式正确,那么会返回True,错误则会返回False。我们可以用这个来控制循环,比如满足条件就继续循环,不满足就结束循环,这个在以后的博客中也会详细的说明。
数的进制
在常见运算中也写到了关于进制转换的内置函数,Python中同样也有二进制、八进制、十进制、十六进制。
- 在Python中
二进制(binary)以前缀0b或者0B开头
,注意这里的是阿拉伯数字0而不是字母o,千万不要输错了。使用bin()函数来返回对应数值的二进制。比如:
>>> x = 0b1111
>>> x
15
>>> bin(x)
'0b1111'
>>> x = 0B1101
>>> x
13
>>> bin(13)
'0b1101'
八进制(octal)以前缀0o或者0O开头
,同样也要注意是阿拉伯数字0和字母o | O,要注意区分。使用oct()函数返回相应数值的八进制。- 十进制无前缀数字,使用int()即可将其他进制转换为十进制。
十六进制(hexadecimal)以前缀0x或者0X开头
,使用hex()函数将其他数值转换为十六进制。
浮点数类型:float
浮点数的操作与上面的整数操作类似。但是浮点数受到17位有效数字的限制
,浮点数一般只有17位有效数字,如果超过17位那么就要使用科学计数法来表示
浮点数的特性
由于浮点数在计算机中是以二进制来表示的,所以有些时候浮点数在转换以及运算过程中难免会产生一些误差
。所以有的时候我们会发现一些匪夷所思的错误。比如我们计算一下2.1+4.2结果肯定为6.3呀,但是如果我们在IDLE中计算一下,却发现结果为6.300000000000001
,比较的结果是False。
>>> 2.1 + 4.2
6.300000000000001
>>> 2.1 + 4.2 == 6.3
False
为什么会这样呢???其实就是因为在计算机进行进制转换的时候产生了微小的误差。
所以我们用到浮点数的时候,当我们进行比较的时候最好不要用 ==
来比较。而是将它们做差,如果他们之间的差小于一个很小很小的数,我们就认为这两个浮点数相等。
复数类型
Python中内置了复数类型。Python可以支持所有有关复数的常见运算。比如加、减、乘、除、乘方等等。我们可以使用.real
来取出复数的实部,使用.imag
取出复数的虚部。
复数的表示在数学中是a+bi
,但是在实际编程中因为i与阿拉伯数字1太接近了,不好区分,所以在Python中用j代表i,即a+bj
。
复数的比较
复数之间只能比较是否相等,不能比较大小。这也是数学上的真理,所以在Python中的复数也只能比较两个复数是否相等,不能比较大小。
复数的应用
求平面上两个点(x1,x2)和(y1,y2)之间的距离。
>>> abs((4+3j)+(1+6j))
10.295630140987
>>> abs(1+1j)
1.4142135623730951
更多的数学函数
Python中不止有上面提到的数学函数,还有很多其他的函数。Python 中数学运算常用的函数基本都在 math 模块、cmath 模块中
。
- Python math 模块提供了许多对浮点数的数学运算函数。
- Python cmath 模块包含了一些用于复数运算的函数。
cmath 模块的函数跟 math 模块函数基本一致,区别是 cmath 模块运算的是复数,math 模块运算的是数学运算。
使用math或者cmath函数必须先导入。使用import math导入math模块,使用import cmath导入cmath模块。
math模块中包含的函数
我们可以使用dir()函数显示出我们导入模块所包含的内容:
>>> import math
>>> dir(math)
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'pi', 'pow', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc']
其中包含的函数这里就不再详细的解释了,如果想知道某一个函数的使用方法,直接百度即可。
cmath模块中包含的函数
>>> import cmath
>>> dir(cmath)
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atanh', 'cos', 'cosh', 'e', 'exp', 'inf', 'infj', 'isclose', 'isfinite', 'isinf', 'isnan', 'log', 'log10', 'nan', 'nanj', 'phase', 'pi', 'polar', 'rect', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau']
参考资料:
- 中国大学生慕课——Python语言基础与应用
- math — 数学函数
- Python Number(数字)
- Python3 数字(Number)
未完待续,持续更新中……