最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • Python数值类型(整形、浮点型和复数)及其用法讲解

    正文概述    2020-08-16   368

    Python数值类型(整形、浮点型和复数)及其用法讲解

    实际开发中,我们经常需要使用数字记录游戏中用户的得分、游戏中角色的生命值、伤害值等信息,Python 语言提供了数值类型用于保存这些数值。

    需要注意的是,Python 中这些数值类型都是不可改变的,也就是说,如果我们要修改数字类型变量的值,那么其底层实现的过程是,先将新值存放到内存中,然后修改变量让其指向新的内存地址,换句话说,Python 中修改数值类型变量的值,其实只是修改变量名所表示的内存空间。

    数值类型只是一个泛泛的统称,Python 中的数值类型主要包括整形、浮点型和复数类型。

    Python整型

    整形专门用来表示整数,即没有小数部分的数。在 Python 中,整数包括正整数、0 和负整数。

    和其他强类型语言不同,它们会提供多种整形类型,开发者要根据数值的大小,分别用不同的整形类型存储,以 C 语言为例,根据数值的大小,开发者要合理选择 short、int、long 整形类型存储,大大增加了开发难度。

    Python 则不同,它的整型支持存储各种整数值,无论多大或者多小,Python 都能轻松处理(当所用数值超过计算机自身的计算功能时,Python 会自动转用高精度计算)。

    例如如下代码:

    #定义变量a,赋值为56
    a = 56
    print(a)
    #为a赋值一个大整数
    a = 9999999999999999999999
    print(a)
    #type()函数用于返回变量的类型
    print(type (a))

    对于没有编程基础的读者, 同样可以在交互式解释器中逐行“试验”上面程序来观看运行效果。由于篇幅限制,本教程后面的程序不再详细列出在交互式解释器中逐行“试验”的过程。

    上面程序中,将 9999999999999999999999 大整数赋值给变量 a,Python 也不会发生溢出等问题,程序运行一样正常,这足以证明 Python 的强大。

    使用 Python 3.x 运行上面程序,可以看到如下输出结果:

    56
    9999999999999999999999
    <class 'int'>

    从上面的输出结果可以看出,此时 a 依然是 int 类型。

    但如果用 Python 2.x 运行上面程序,由于输入的数值比较大,Python 会自动在其后面加上字母 L(或小写字母 l),如下输出结果:

    56
    9999999999999999999999L
    <type 'long'>

    对比两种输出结果,不难发现:不管是 Python 3.x 还是 Python 2.x,Python 完全可以正常处理很大的整数,只是 Python 2.x 底层会将大整数当成 long 类型处理,但开发者通常不需要理会这种细节。

    除此之外,Python 的整型还支持 None 值(空值),例如如下代码:

    a = None
    print(a) #什么都不输出

    Python 的整型数值有 4 种表示形式:十进制形式:最普通的整数就是十进制形式的整数,在使用十进制表示整数值时,不能以 0(零)作为十进制数的开头(数值是 0 除外)。二进制形式:由 0 和 1 组成,以 0b 或 0B 开头。例如,101 对应十进制数是 5;八进制形式:八进制整数由 0~7 组成,以 0o 或 0O 开头(第一个字母是零,第二个字母是大写或小写的 O)。需要注意的是,在 Python 2.x 中,八进制数值还可以直接以 0(零)开头。十六进制形式:由 0~9 以及 A~F(或 a~f)组成,以 0x 或 0X 开头,
    下面代码片段使用了其他进制形式的数:

    #以0x或0X开头的整型数值是十六进制形式的整数
    hex_value1 = 0x13
    hex_value2 = 0xaF
    print("hexValue1 的值为:",hex_value1)
    print("hexValue2 的值为:",hex_value2)
    #以0b或0B开头的整型数值是二进制形式的整数
    bin_val = 0b111
    print('bin_val的值为:',bin_val)
    bin_val = 0B101
    print('bin_val的值为:',bin_val)
    #以0o或0O开头的整型数值是八进制形式的整数
    oct_val = 0o54
    print('oct_val 的值为:',oct_val)
    oct_val = 0O17
    print('oct_val 的值为:',oct_val)

    为了提高数值(包括浮点型)的可读性,Python 3.x 允许为数值(包括浮点型)增加下画线作为分隔符。这些下画线并不会影响数值本身。例如如下代码:

    #在数值中使用下画线
    one_million = 1000000
    print(one_million)
    price = 234_234_234 #price 实际的值为234234234
    android = 12341234 #android 实际的值为12341234

    Python浮点型

    浮点型数值用于保存带小数点的数值,Python 的浮点数有两种表示形式:十进制形式:这种形式就是平常简单的浮点数,例如 5.12、512.0、0.512。浮点数必须包含一个小数点,否则会被当成整数类型处理。科学计数形式:例如 5.12e2(即 5.12×102)、5.12E2(也是 5.12 ×102)。
    必须指出的是,只有浮点型数值才可以使用科学计数形式表示。例如 51200 是一个整型值,但 512E2 则是浮点型值。

    下面程序示范了上面介绍的关于浮点数的各个知识点:

    af1 = 5.2345556
    #输出af1的值
    print("af1的值为:",af1)
    af2 = 25.2345
    print("af2的类型为:",type(af2))
    f1=5.12e2
    print("f1的值为:",f1)
    f2 = 5e3
    print("f2的值为:",f2)
    print("f2的类型为:",type(f2))#看到类型为float

    通过最后一行粗体字代码可以看出,虽然 5e3 的值是 5000,但它依然是浮点型值,而不是整型值,因为 Python 会自动将该数值变为 5000.0。

    注意,使用浮点数进行计算时,可能会出现小数位数不确定的情况,比如说,计算 0.1+0.2,本来应该得到 0.3,但经过测试你会发现,Python解释器的运行结果为 0.30000000000000004。几乎所有编程语言都存在这个问题,这与浮点数在底层的存储方式有关系,初学者不必深究。

    Python复数

    Python 甚至可以支持复数,复数的虚部用 j 或 J 来表示。

    如果读者对虚数虚部感到困惑,请直接跳过本节,大部分编程并不会用到复数这么“高级”的数学知识。

    如果需要在程序中对复数进行计算,可导入 Python 的 cmath 模块(c 代表 complex),在该模块下包含了各种支持复数运算的函数。

    模块就是一个 Python 程序,Python 正是通过模块提高了自身的可扩展性的;Python 本身内置了大量模块,此外还有大量第三方模块,导入这些模块即可直接使用这些程序中定义的函数。

    下面程序示范了复数的用法:

    ac1 = 3 + 0.2j
    print (ac1)
    print(type(ac1)) #输出复数类型
    ac2 = 4 - 0.1j
    print(ac2)
    #复数运行
    print(ac1 + ac2) #输出(7+0.1j)
    #导入cmath 模块
    import cmath
    #sqrt()是cmath 模块下的商数,用于计算平方根
    ac3 = cmath.sqrt(-1)
    print (ac3) #输出1j

    起源地下载网 » Python数值类型(整形、浮点型和复数)及其用法讲解

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元