编程 23

循序渐进学Python之数值类型,数值类型

By admin in 编程 on 2019年9月24日

数字类型可分为以下几种:

  •  整 形
  • 浮点型
  • 布 尔
  • 长整形
  • 复 数

一、整 形

  整形就是整数类型

num = 123    # 数字类型不用加引号,加引号的都是字符串形式。print

  字符串转换数字: int()

num = '123'print, num)   # type() 查看数据类型a = intprint, a)>>> <class 'str'> 123    <class 'int'> 123

num1 = '123a'

b = int

print,b)  # 报错,字符串转换数字不能有字母。

  字符串转换为进制: base = 16

num = 'a'a = int(num,base = 16)    # base = 16,转换为16进制print>>> 10

  当前数字二进制至少用几位来表示:
bit_length()

    1转换二进制为:01

    2转换二进制为:10

    3转换二进制为:11

    4转换二进制为:100

    5转换二进制为:101

num = 5bit = num.bit_length()print>>> 3

  声明整形有4种方式:

    二进制:0~1

    表达形式:以0b或0B开头:0b010
,-0B101

    变量 = 0b二进制数字(0b是二进制的标志符号)

    八进制:0~7

    表达形式:以0o或0O开头:0o123,
-0O456

    变量 =
0o八进制数字(0o是八进制的标志符号)

    十进制:0~9

    表达形式:1010 , 99,-217

    变量 = 十进制数字

    十六进制:0~9 A~F

    表达形式:以0x或0X开头:0x9a,
-0X89

    变量 = 0x十六进制数字(0x是十六进制的标志符号)

编程 1

dec = 15b = bin     # 十进制转换二进制o = oct     # 转换八进制h = hex    # 转换十六进制printprintprint(dec, eval, eval, eval>>>15   0b1111 0o17 0xf   15 15 15

注:eval()函数,官方解释为:将字符串str当成有效的表达式来求值并返回计算结果。在这里只是求出进制看一下效果。

二、浮点型

  浮点型就是小数类型,声明浮点型方式:

  变量 = 3.1415926

三、布尔

  布尔类型是计算机专用的数据类型,只有2个值:True和False

  True为真,False为假(注意:在写代码是时候注意首字母大写)

四、复数

  复数的完整结构(实数部分+虚数部分)

  声明复数的两种方式:

  表达式方式:

  变量 = 实数 + 虚数 如:var = 3 +
2j

  特定功能:

  变量 = complex 如:var =
complex

五、长整型

  在Python 3
中长整型被整型替换,在这不多说了。

  长整型也可以代表八进制和十六进制。

数值类型,说白了就是处理各种各样的数字,Python中的数值类型包括整型、长整型、布尔、双精度浮点、十进制浮点和复数,这些类型在很多方面与传统的C类型有很大的区别。

BKJIA.com
独家特稿】
本文将介绍Python语言的一种基本数据类型:数值类型。首先,我们会详细介绍Python语言各种数值类型以及相应的算术运算和它们的优先级、结合性。然后,我们还会对整型的位运算做深入的解释。

Python运算符

Python中的数值类型都是不可变类型,意味着创建、修改数字的值,都会产生新的对象,当然这是幕后的操作,编程过程中大可不必理会。

一、 数值类型

一、算数运算符

编程 2

2.2.1标准整型和长整型

Python语言的数值类型有四种,分别是:整型、长整型、浮点型和复数类型。下面我们首先介绍整型数据。

二、比较运算符

编程 3

a = 10b = 20print(a == b)print(a != b)print(a > b)print(a < b)print(a >= b)print(a <= b)

标准整型等价于C中的有符号长整型(long),与系统的最大整型一致(如32位机器上的整型是32位,64位机器上的整型是64位),可以表示的整数范围在[-sys.maxint-1,
sys.maxint]之间。整型字面值的表示方法有3种:十进制(常用)、八进制(以数字“0”开头)和十六进制(以“0x”或“0X”开头)。

1.整型

三、赋值运算符

编程 4

# -*- coding:utf-8 -*-

Python语言的整型相当于C语言中的long型,在32位机器上,整型的位宽为32位,取值范围为-231~231-1,即-2147483648~2147483647;在64位系统上,整型的位宽通常为64位,取值范围为-263~263-1,即-9223372036854775808~9223372036854775807。
Python中的整数不仅可以用十进制表示,也可以用八进制和十六进制表示。当用八进制表示整数时,数值前面要加上一个前缀“0”;当用十六进制表示整数时,数字前面要加上前缀0X或0x。例如,我们这里将整数15分别以八进制和十六进制的形式赋给整型变量a和b,然后再以十进制的形式输出它们:

四、位运算符

编程 5

可以代表集合中的有些方法:

    intersection()
可以用:& 符号

    union()    
可以用:| 符号

    difference()  
可以用: 符号

    symmetric_difference()
可以用:^ 符号

a = 0101

# -*- coding: cp936 -*-

a = 017
b = 0xf

print '变量a的值的十进制形式为%d'  %a
print '变量b的值的十进制形式为%d'  %a

五、逻辑运算符

编程 6

print ‘a=’+str(a)

当我们在IDEL中运行该程序时,结果如下所示:

六、成员运算符

除了以上的一些运算符之外,Python还支持成员运算符,测试实例中包含了一系列的成员,包括字符串,列表或元组。

编程 7

b=64

图1:以不同的数制输入、输出整数

七、身份运算符

编程 8

注:Id()函数用于获取对象内存地址。

编程 9

print ‘b=’+str(b)

我们这里对打印语句

八、运算符优先级

以下表格列出了从最高到最低优先级的所有运算符:

编程 10

c=-237

print '变量a的值的十进制形式为%d'  %a

print ‘c=’+str(c)

做一个简单的解释。这个语句的含义是将变量a以有符号整数的形式输出。这里的百分号%是Python语言中的格式化运算符,它可以在字符串中插入一个变量值。格式化运算符左边是一个字符串,即下面用蓝色字体表示的部分:

d=0x80

print '变量a的值的十进制形式为%d'  %a

print ‘d=’+str(d)

格式化运算符左边的字符串中可以含有一个或多个转换指示符,本例中只有一个转换指示符,即%d。就像这里看到的一样,转换指示符通常以百分号打头,后面紧跟一个字符串格式化字符,需要注意的是,转换指示符中的百分号是作为字符串格式化字符的前导符使用,而非格式化运算符。字符串格式化字符d表示将在当前字符串的指定位置放上一个整数。打印输出时,字符串中的转换指示符将被指定的值替换掉,所以转换指示符还起到占位符的作用。格式化运算符的右边,即上面用红色字体表示的部分,规定用谁来替换字符串中的占位符。就本例而言,我们要用变量a来替换字符串中的占位符%d。

e=-0x92

与数值有关的字符串格式化字符及其作用如下所示:

print ‘e=’+str(e)

 d:   有符号十进制整数
 u:   无符号十进制整数
 o:   无符号八进制整数
 x:   无符号十六进制整数,a~f采用小写形式
 X:   无符号十六进制整数,A~F采用大写形式
 f:    浮点数
 e,E: 浮点数,使用科学计数法
 g,G: 浮点数,使用最低有效数位

上面的代码输出结果为:

2.长整型

编程 11

跟C语言不同,Python的长整型没有指定位宽,也就是说Python没有限制长整型数值的大小,但是实际上由于机器内存有限,所以我们使用的长整型数值不可能无限大。
在使用过程中,我们如何区分长整型和整型数值呢?通常的做法是在数字尾部加上一个大写字母L或小写字母l以表示该整数是长整型的,例如:

图2

a = 6812347598L
b = 6812347598l

长整型是整型的超集,可以表示无限大的整数(实际上只受限于机器的虚拟内存大小)。长整型字面值的后面带有字母“L”或“l”(推荐使用大写的“L”)。

读者可能已经发现,小写字母l和数字1看上去很难区分,所以一般推荐使用大写字母L。

长整型和标准整型,目前已经基本统一,当数学运算遇到整型异常的情况,在Python2.2以后的版本,会自动转换为长整型。例如:

注意,自从Python2.2起,如果发生溢出,Python会自动将整型数据转换为长整型,所以如今在长整型数据后面不加字母L也不会导致严重后果了。

编程 12

3.浮点型

图3

浮点型用来处理实数,即带有小数的数字。Python的浮点型相当于C语言的双精度浮点型。实数有两种表示形式,一种是十进制数形式,它由数字和小数点组成,并且这里的小数点是不可或缺的,如1.23,123.0,0.0等;另一种是指数形式,比如789e3或789E3表示的都是789×103,字母e或E)之前必须有数字,字母e或E)之后可以有正负号,表示指数的符号,如果没有则表示正号;此外,指数必须为整数。

2.2.2布尔型和布尔对象

4.复数类型

布尔型其实是整型的子类型,布尔型数据只有两个取值:True和False,分别对应整型的1和0。

复数由实数部分和虚数部分组成,一般形式为x+yj,其中的x是复数的实数部分,y是复数的虚数部分,这里的x和y都是实数。注意,虚数部分的字母j大小写都可以,如5.6+3.1j,5.6+3.1J是等价的。
对于复数类型变量n,我们还可以用n.real来提取其实数部分,用n.imag来提取其虚数部分,用n.conjugate返回复数n的共轭复数,如下图所示:

每一个Python对象都天生具有布尔值(True或False),进而可用于布尔测试(如用在if、while中)。

图2:获取复数的实数部分、虚数部分和共轭复数

以下对象的布尔值都是False,除此之外是True:

独家特稿】
本文将介绍Python语言的一种基本数据类型:数值类型。首先,我们会详细介绍Python语言各种数值类型以及相应的算术运…

None

False(布尔型)

0(整型0)

0L(长整型0)

0.0(浮点型0)

0.0+0.0j(复数0)

”(空字符串)

[](空列表)

()(空元组)

{}(空字典)

用户自定义的类实例,该类定义了方法__nonzero__()或__len__(),并且这些方法返回0或False

下面我们通过几段代理来加深对布尔类型的认识。

# -*- coding:utf-8 -*-

#基本测试

print bool(1)

print bool(True)

print bool(‘0’)

print bool([])

pring bool((1,))

结果如下:

编程 13

图4

下面我们看看bool类型作为只有0和1取值的特殊整型的特性。

# -*- coding:utf-8 -*-

#使用bool数

foo = 42

bar = foo<42

print bar

print bar+10

print ‘%s’ %bar

print ‘%d’ %bar

运行结果如下:

编程 14

图5

再来验证下没有_nonzero_()方法的对象,默认是True。

#无_nozero_()

class C:pass

c=C()

print bool(c)

运行结果如下:

编程 15

图6

2.2.3双精度浮点型

Python里的浮点型数字都是双精度,类似C语言的double类型。可以用十进制或者科学计数法表示。下面我们看一些典型的浮点型数字。

# -*- coding:utf-8 -*-

print 0.0

print -777.

print -5.555567119

print 96e3 * 1.0

print -1.609E-19

运行结果如下:

编程 16

图7

2.2.4复数

在Python中,有关复数的概念如下:

l虚数不能单独存在,它们总是和一个值为0.0的实数部分一起来构成一个复数。

l复数由实数部分和虚数部分组成。

l表示虚数的语法:real+imagj.

l实数部分和虚数部分都是浮点型。

l虚数部分必须有后缀j或J。

下面是几个复数的例子:

print 64.375+1j

print 1.23e-045+6.7e+089j

运行结果如下:

编程 17

图8

2.2.5十进制浮点型

十进制浮点通常称为decimal类型,主要应用于金融计算。双精度浮点型使用的是底和指数的表示方法,在小数表示上精度有限,会导致计算不准确,decimal采用十进制表示方法,看上去可以表示任意精度。

下面我们看一下十进制浮点的例子。

from decimal import *

dec=Decimal(‘.1’)

print dec

print Decimal(.1)

print dec +Decimal(.1)

使用decimal类型,首先要引入decimal模块,然后通过Decimal类来初始化一个Decimal对象。

运行结果如下:

编程 18

图9

2.2.6操作符

下表是主要的操作类型,供参考。

操作

说明

bool

int

long

float

complex

x ** y

指数运算

+x

符号不变

-x

符号取反

~x

按位取反

x * y

乘法

x / y

除法

x // y

地板除

x % y

取余

x + y

加法

x – y

减法

x << y

位左移

x >> y

位右移

x & y

按位与

x ^ y

按位异或

x | y

按位或

abs(x)

取绝对值

bin(x)

整型->二进制字符串

bool(x)

布尔型转换

chr(x)

ASCII码->单字符串

complex(re, im)

实部为re,虚部为im的复数

divmod(x, y)

除法及取余

float(x)

浮点转换函数

hex(x)

整型->十六进制字符串

int(x)

整型转换

long(x)

长整型转换

pow(x)

指数运算

oct(x)

整型->八进制字符串

round(x[, n])

保留n位小数并四舍五入

unichr(x)

ASCII码->Unicode单字符串

在Python中同时支持不同数值类型的数字进行混合运算,数字类型不一致怎么做运算?这个时候就涉及到强制类型转换问题。这种操作不是随意进行的,它遵循以下基本规则:

首先,如果两个操作数都是同一种数据类型,没有必要进行类型转换。仅当两个操作数类型不一致时,Python才会去检查一个操作数是否可以转换为另一类型的操作数。如果可以,转换它并返回转换结果。

由于某些转换是不可能的,比如果将一个复数转换为非复数类型,将一个浮点数转换为整数等等,因此转换过程必须遵守几个规则。要将一个整数转换为浮点数,只要在整数后面加个.0就可以了。要将一个非复数转换为复数,则只需要要加上一个“0j”的虚数部分。

这些类型转换的基本原则是:整数转换为浮点数,非复数转换为复数。在Python语言参考中这样描述coerce()方法:

如果有一个操作数是复数,另一个操作数被转换为复数。

否则,如果有一个操作数是浮点数,另一个操作数被转换为浮点数。

编程,否则,如果有一个操作数是长整数,则另一个操作数被转换为长整数;

否则,两者必然都是普通整数,无须类型转换。

数字类型之间的转换是自动进行的,程序员无须自己编码处理类型转换。Python提供了coerce()内建函数来帮助你实现这种转换。

转换流程图如下图所示:

编程 19

编程 20

图10

2.2.7转换工厂

函数int(), long(),
float()和complex()用来将其它数值类型转换为相应的数值类型。从Python2.3开始,Python的标准数据类型添加了一个新成员:布尔(Boolean)类型。从此true和false现在有了常量值即True和False(不再是1和0)。

下面是使用工厂函数的简单例子。

编程 21

图11

2.2.8进制转换

目前我们已经看到Python支持8进制、十进制和十六进制整型,同时还提供了oct()和hex()内建函数来返回八进制和十六进制字符串。

编程 22

图12

2.2.9 ASII转换

chr函数和ord函数分别用来将数字转换为字符,和字符转换为数字。

编程 23

图13

2.2.10小结

本节对Python数值类型做个比较全面的讲解,网络编程过程中会有大量的数值运算。

更高级的科学计算,推荐大家了解下两个著名的第三方包,NumPy和SciPy。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 澳门新葡亰官网app 版权所有