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

2022-10-17 11:57:48

上一篇文章: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**1001267650600228229401496703205376

我们直接在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>>> x10>>>bin(x)'0b1010'
  • oct(x) 将数值x转换为八进制,例如:
>>> n=0b1001>>>oct(n)'0o11'
  • hex(x) 将数值x转换为十六进制,例如:
>>> x=0o11>>> x9>>>hex(x)'0x9'

直接输出x,Python默认将该数值转换为10进制输出


其他常用的数学运算函数

常用的数学函数

随机数函数

&Python3中的随机数函数用于生成随机数,比如我们要写一个猜数字的游戏就需要用到随机数,或者是当我们写一个游戏需要使用到随机数时(比如大富翁游戏的掷骰子)等等。常见的随机数的生成函数有以下几种:
随机数生成函数
例如:

# 生成10个随机数>>>import random>>>for iinrange(10):print(random.randint(0,100))9724028862567699158

关于生成随机数这一部分后面还会详细整理。这里只做一个简单的介绍,在后面的博客中我会写一个猜数字的小游戏,到时候我们在详细的学习如何生成随机数。


大小比较

 在Python中我们也可以对数值的大小进行比较。我们可以使用比较运算符来进行两个数的比较:
比较
在Python中我们还可以进行连续的比较,比如:

>>>7>3>=2True>>>7<3>=0False

我们会发现和上面表中的一样,如果表达式正确,那么会返回True,错误则会返回False。我们可以用这个来控制循环,比如满足条件就继续循环,不满足就结束循环,这个在以后的博客中也会详细的说明。


数的进制

 在常见运算中也写到了关于进制转换的内置函数,Python中同样也有二进制、八进制、十进制、十六进制。

  • 在Python中二进制(binary)以前缀0b或者0B开头,注意这里的是阿拉伯数字0而不是字母o,千万不要输错了。使用bin()函数来返回对应数值的二进制。比如:
>>> x=0b1111>>> x15>>>bin(x)'0b1111'>>> x=0B1101>>> x13>>>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.26.300000000000001>>>2.1+4.2==6.3False

为什么会这样呢???其实就是因为在计算机进行进制转换的时候产生了微小的误差。
 所以我们用到浮点数的时候,当我们进行比较的时候最好不要用==来比较。而是将它们做差,如果他们之间的差小于一个很小很小的数,我们就认为这两个浮点数相等。


复数类型

 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']

参考资料:


未完待续,持续更新中……

  • 作者:AC-fun
  • 原文链接:https://ac-fun.blog.csdn.net/article/details/106107892
    更新时间:2022-10-17 11:57:48