Python数据类型——数值型详解

上一篇文章:Python的变量和数据类型

用Python画的滑稽脸


 这是我之前用Python的 turtle库画的一个滑稽脸的视频,如果想要源码的话可以看我之前的博客: 如何用Python画QQ表情中的滑稽脸。拿走别忘了点个赞哈,感谢大家的支持。


 写在前面:大家好!我是ACfun,我的昵称来自两个单词Acceptedfun。由于最近在学习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']

参考资料:


未完待续,持续更新中……
学习!!!

©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页