python各位数字之和为5的数_Python学习手册笔记(五)Python的数字类型

本文详细介绍了Python的数字类型,包括整数、浮点数、复数、十进制和有理分数等,强调了Python3.0中整数类型的无限精度。还探讨了混合类型操作、内置数学工具、表达式操作符以及位操作。此外,文章提到了集合、小数和分数类型,展示了它们如何提供更高精度的数学计算,并提供了关于浮点数不精确性的示例。最后,文章提及了布尔类型及其在编程中的应用。
摘要由CSDN通过智能技术生成

Python学习手册笔记(五)Python的数字类型

1Python的数字类型

在Python中,数字并不是一个真正的对象类型,而是一组类似类型的分类。Python不仅支持通常的数字类型(整数和浮点数),而且能够通过常量来直接创建数字以及处理数字的表达式。此外,Python为更高级的工作提供了很多高级数字编程支持和对象。

Python数字类型的完整工具包括:

l整数和浮点数

l复数

l固定精度的十进制数

l有理分数

l集合

l布尔类型

l无穷的整数精度

l各种数字内置函数和模块

1.1数字常量

在基本类型中,Python提供了:整数(正整数和负整数)和浮点数(带有小数部分的数字)。Python还允许我们使用十六进制、八进制和二进制常量来表示整数,提供一个复数类型,并且允许整数具有无穷的精度(只要内存空间允许,它可以增长成任意位数的数字。)

数字与常量类型

整数和浮点数常量

整数以十进制数字的字符串写法出现。浮点数带一个小数点,也可以加上科学计数标志e或者E。如果编写一个带有小数点或幂的数字,Python会将它变成一个浮点数的对象,并且在这个对象用在表达式时,将启用浮点数的运输发展。浮点数就像C语言中的“双精度”一样实现,因此,其精度与用来构建Python解释器的C编译器所给定的双精度一样

Python3.0中的整数:一个单独的类型

在Python3.0中,一般整数和长整数已经合二为一,只有整数一种,自动支持Python2.6的单独的长整数类型所拥有的无穷精度。因此,整数在程序中不再用末尾的l或L表示,并且整数也不再会显示出这个字符。

十六进制数、八进制和二进制常量

十六进制一ox或0X开头,后面接十六进制的数字0~9和A~F。十六进制的数字编写成大写或小写都可以。八进制常量以数字0o或0O开头(0和小写或大写的字母“o”),后面接着数字0~7构成的字符串。二进制常量用0b或0B开头,后面跟着二进制数字(0、1)

注意所有这些常量在程序代码中都产生一个整数对象,它们仅仅是特定值的不同预防表示而已。内置函数hex(I)、oct(I)和bin(I)把一个整数转换为这3中进制表示的字符串,并且int(str,

base)根据每个给定的进制把一个运行时字符串转换为一个整数。

复数

Python的复数常量写成实部+虚部的写法,这里的虚部以j或J结尾。其中,实部从技术上讲可有可无。从内部看来,复数都是通过一对浮点数来表示的,但是对复数的所有数字操作都会按照复数的运算法则进行。也可以通过内置函数complex(real,

imag)来创建复数。

别写其他的数字类型

其他的、更高级的数字类型,可以通过调用导入的模块中的函数来创建(例如十进制数和分数),其他的拥有一些它们自己的常量语法(例如集合)

1.2内置数学工具和扩展

表达式操作符

+、-、*、/、>>、**、&等

内置数学函数

pow、abs、round、int、hex、bin等

公用模块

random、math等

数字主要通过表达式、内置函数和模块处理,它们如今也拥有很多特定于类型的方法。例如浮点数拥有一个as_interger_ratio方法,还有一个is_integer测试数字是否是一个整数。

1.3Python表达式操作符

在Python中,表达式是使用通常的数学符号和操作符好写出来的。

操作符号与比较符

比较操作符可以连续使用:x

分片表达式x[I:J:K]等同于用一个分片对象所以:X[slice(I,J,K)]

Python3.0中,X/Y表达式执行真正的除法,X//Y是floor除法(把余数小数部分去掉)

1.3.1混合操作所遵循的操作符优先级

在上表中的操作符,越靠后优先级越高。同一行的通常是从左到右。

1.3.2括号分组的子表达式

利用括号分组可以超越Python的优先级规则。在一个大型表达式中增加括号是很好的方法,不仅强制按照你想要的顺序进行计算,同时也增加了程序可读性。

1.3.3混合类型自动升级

在混合类型的表达式中,Python首先将被操作的对象转换成其中最复杂的操作对象的类型,然后再对相同类型的操作对象进行数学运算。这个行为和C语言中的类型转换很相似。

可以通过手动调用内置函数来转换类型:

>>>

int(3.1415) # Truncates float tointeger

3

>>>

float(3) # Converts integer to float

3.0

但通常没有必要这样做,因为Python在表达式中自动升级为更复杂的类型。再者,要记住所有这些混合类型转换仅仅在将数字类型(例如一个整数和一个浮点数)混合到一个表达式中的时候才使用,这包括那些使用数字和比较操作符的表达式。一般来说,Python不会在其他的类型之间进行转换,例如一个字符串和一个整数相加会产生错误,除非手动转换其中某个的类型。

1.3.4预习:运算符重载

要留心虽有的Python操作符可以通过Python的类或C扩展类型被重载(即实现),让它也能工作与你所创建的对象中。例如,用类编写的对象代码也许可以是是使用+表达式做加法或连接,以及是使用[i]表达式进行索引等。

这种特性通常称为多态。这个术语指操作的意义取决于所操作的对象的类型。

2在实际应用中的数字

2.1数字常量

在Python中:

l变量在它第一次赋值时创建

l变量在表达式中使用将被替换为它们的值

l变量在表达式使用以前必须已赋值

l变量像对象一样不需要在一开始进行声明

% python

>>>

a = 3 # Name created

>>>

b = 4

一旦用在某个表达式中,这里的变量会被它们的值替换,当在交互模式下工作时,表达式的结果将马上显示出来

>>>

a + 1, a – 1

#Addition(3+1),subtraction(3-1)

(4,2)

从技术上讲,这里的回显所得到的结果是有两个值的元组,因为输入在提示符的那行包含了两个被逗号分开的表达式。这也就是现实的结果包含在括号里的原因。如果使用一个从未被赋值的不同的变量,Python将会报告错误。

在Python中,变量不需要预声明,但是在使用前至少要赋一次值。事实上,这意味着在对其进行加法运算时要计数器初始化为0,在列表后添加元素前,要首先初始化列表为一个空列表。

2.2数字显示的格式

有些版本,不实用打印语句可能会出现奇怪的结果,其原因是浮点数的硬件限制,以及它无法精确地表现一些值。实际上,这真的知识一个显示问题——交互模式下结果的自动回显会比打印语句显示更多的数字位数。

除了打印和自动回显之外,还有多种方法显示计算机中的数字的位数:

>>>

num = 1/3.0

>>>

num # Echoes

0.333333333333331

>>>

print(num) # print rounds

0.333333333333333

>>>

‘%e’ % num # String formatting expre_ssion

‘3.33333e-001’

>>>

‘%4.2f’ % num # Alternativefloating-point

format

‘0.33’

>>>

‘{0:4.2f}’.format(num) # Stringformatting

method

‘0.33’

这些方法中的最后三个使用了字符串格式化,这是灵活地进行格式化的工具,将在以后关于字符串的章节中进行介绍。其结果通过打印来显示或报告字符串。

2.3比较:一般的和连续的

数字可以进行比较相对大小,并且返回一个布尔类型的结果:

>>>

1 < 2 # Less than

True

>>>

str和repr显示格式:从技术上说,默认的交互模式回显和打印的区别就相当于内置repr和str函数的区别:

>>>

num = 1/3

>>>

repr(num) # Used by echoes:as-codeform

‘0.33333333333331’

>>>

str(num) # Used by print:user-friendlyform

‘0.33333333333’

Python还允许多个比较连续起来进行范围测试

例如(A)测试B是否在A和C之间,等同于测试(A),但更容易辨识和录入。

2.4传统除法、Floor除法和真除法

X / Y

传统除法和真除法。Python2.6以前的版

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值