[PYTHON] 核心编程笔记之五-Python数字

简介:

5.1 数字类型

创建数值对象和给变量赋值


anInt = 1

aLong = -9999999999L

aFloat = 3.1415926

aComplex = 1.23+4.56j


如何更新数字对象

变量像一个指针指向装变量值的盒子,对不可变类型来说,你无法改变盒子内容,但可以将指针指向一个新盒子,每次将另外的数字赋给变量时,实际上是创建了一个新的对象并把它赋给变量

anInt += 1

aFloat = 2.718281828


如何删除数字对象


del anInt

del aLong,aFloat,aComplex


5.2 整型


5.2.1 布尔型


5.2.2 标准整数类型


0101 84 -237 0x80 017 -680 -0x92


5.2.3 长整型


16384L -0x4E8L -2323124 045332423

29432432 0xDDWAFEGEGREHREHRERTJW -5432432L


注:用大写字母"L"表示长整型


>>> aLong = 99999999999l

>>> aLong

99999999999L

>>> print aLong

99999999999


5.3 双精度浮点数


0.0 -777. 1,6 -5.532423423 9.6e3 * 1.0

4.3e25 float(12) 4.2E-10 -90. -1.609E-19


5.4 复数

64.375+1j 4.23-8.5j 0.23-8.55j 1.23e-045+6.7e+089j

9.82432-8.342432J -.0224+0j


5.4.1复数的内建属性


属性描述

num.real该复数的实部

num num.imag该复数的虚数

num.conjugate()返回该复数的共轭复数


>>> aComplex = -8.333-1.47j

>>> aComplex

(-8.333-1.47j)

>>> aComplex.real

-8.333

>>> aComplex.imag

-1.47

>>> aComplex.conjugate()

(-8.333+1.47j)


5.5 运算符


5.5.1 混合模式运算符


>>> 1 + 4.5

5.5


5.5.2 标准类型运算符


>>> 5.2 ==5.2

True

>>> -719 >= 833    

False

>>> 2 < 5 <9

True

>>> 77 > 66 == 66

True

>>> 0. < -90.4 < 55.3e2 != 3 <181

False

>>> (-1 < 1) or (1 < -1)

True


5.5.3 算数运算符

传统除法

>>> 1/2 # 地板除

0

>>> 1.0/2.0 # 真正除法

0.5


真正的除法

>>> from __future__ import division

>>> 1 / 2  

0.5

>>> 1.0 / 2.0

0.5


地板除


>>> 1 // 2# 地板除,返回整数

0

>>> 1.0 // 2.0# 地板除,返回浮点数

0.0

>>> -1 // 2# 返回比 -0.5小的整数,也就是 -1

-1


取余


>>> 4%3

1

>>> 4%2

0


幂运算


>>> 3**2

9

>>> -3 ** 2

-9

>>> (-3) ** 2

9

>>> 4.0 ** -1.0

0.25


Python数值运算的例子:


>>> -442-77

-519

>>> 4 ** 3

64

>>> 4.2 ** 3.2

98.71831395268974

>>> 8/3

2.6666666666666665

>>> 8.0/3.0

2.6666666666666665

>>> 8%3

2

>>> (60. - 32.) * (5. /9.)

15.555555555555557

>>> 14 * 0x04

56

>>> 0170 / 4

30.0

>>> 0x80 + 0777

639

>>> 45L * 22L

990L

>>> 16399L + 0xA94E8L

709879L

>>> -2147483648L - 52147483648L

-54294967296L

>>> 64.375+1j + 4.23-8.5j

(68.605-7.5j)

>>> 0+1j ** 2

(-1+0j)

>>> 1+1j ** 2

0j

>>> (1+1j) ** 2

2j


5.5.4 *位运算符(只适用于整数)


位运算符功能


-num单目运算,对数的每一位去反,结果为

num1 << num2Num1 左移 num2位

num1 << num2Num1 右移 num2位

num1 & num2Num1 与 num2按位 与

num1 ^ num2Num1 异或 num2位

num1 | num2Num1 与 num2位按位 或


例:

>>> 30 & 45

12

>>> 30 | 45

63

>>> 45 & 60

44

>>> ~30

-31

>>> ~45

-46

>>> 45 << 1

90

>>> 60 >> 2

15

>>> 30 ^ 45

51


5.6 内建函数与工厂函数


5.6.1 标准类型函数

>>> cmp(-6,2)

-1

>>> cmp(-4.33333,-2.7118281828)

-1

>>> cmp(0xFF,255)

0

>>> str(0xFF)

'255'

>>> str(55.3e2)

'5530.0'

>>> type(0xff)

<type 'int'>

>>> type(9876543210L)

<type 'long'>

>>> type(2-1j)

<type 'complex'>


5.6.2 数字类型函数


内建函数示例:

>>> int(4.25)

4

>>>

>>> int(4.2555)

4

>>> long(42)

42L

>>> float(4)

4.0

>>> complex(4)

(4+0j)

>>> complex(2.4,-8)

(2.4-8j)

>>> complex(2.3e-10,45.3e4)

(2.3e-10+453000j)


数值工厂函数总结


类(工厂函数)操作

bool(obj) b返回obj对象的布尔值,也就是obj.__nonzero__()方法的返回值

int(obj,base=10)返回一个字符串或数值对象的整数表示,类似string.atoi();

long(obj,base=10)返回一个字符或数据对象的长整数表示,类似string.atol()

float(obj)返回一个字符串或数据对象的浮点数表示,类似string.atol()

complex(str) or

complex(real,imag=0.0)返回一个字符串的复数表示,或者根据给定的实数(及一个可选的虚数部分)生成一个复数对象


功能函数:

Python有五个运算内建函数用于数值运算: abs(),coerce(),divmod(),pow()和round()


abs()返回给定参数的绝对值

>>> abs(-1)

1

>>> abs(10.)

10.0

>>> abs(1.2-2.1j)

2.418677324489565

>>> abs(0.23-0.78)

0.55


函数coerce()返回一个包含类型转换完毕的两个数值元素的元祖


>>> coerce(1,2)

(1, 2)

>>> coerce(1.3,134L)

(1.3, 134.0)

>>> coerce(1,134L)

(1L, 134L)

>>> coerce(1j,134L)

(1j, (134+0j))

>>> coerce(1.23-41j,134L)

((1.23-41j), (134+0j))


divmod()会把除法和取余结合起来组成一个元祖


>>> divmod(10,3)

(3, 1)

>>> divmod(3,10)

(0, 3)

>>> divmod(10,2.5)

(4.0, 0.0)

>>> divmod(2.5,10)

(0.0, 2.5)

>>> divmod(2+1j,0.5-1j)

((-0+0j), (2+1j))


pow()和 ** 都可以进行指数运算


>>> pow(2,5)

32

>>> pow(5,2)

25

>>> pow(3.141592,2)

9.869600294464002

KeyboardInterrupt

>>> pow(1+1j,3)

(-2+2j)


round()对浮点数进行四舍五入,第二个参数表示精确到小数点多少位,没有表示精确到整数位


>>> round(3)

3.0

>>> round(3.45)

3.0

>>> round(3.499999999999)

3.0

>>> round(3.499999999999,1)

3.5

>>> import math

>>> for eachNum in range(10):

...   print round(math.pi,eachNum) #pi即为π

...

3.0

3.1

3.14

3.142

3.1416

3.14159

3.141593

3.1415927

3.14159265

3.141592654

>>> round(-3.5)

-4.0

>>> round(-3.4)

-3.0

>>> round(-3.49)

-3.0

>>> round(-3.49,1)

-3.5


注:

int() 直接截去小数部分(返回值为整数)

floor()得到最接近原数但小于原数的整数(返回浮点数)

round()得到最接近原数的整数(返回浮点数)\


>>> for eachNum in (.2,.7,1.2,1.7,-.7,-1.2,-1.7):              

...   print "int(%.1f) \t %+.1f" % (eachNum,float(int(eachNum)))

...   print "floor(%.1f) \t %+.1f" % (eachNum,math.floor(eachNum))

...   print "round(%.1f) \t %+.1f" % (eachNum,round(eachNum))

...   print '-' * 20

...

int(0.2)        +0.0

floor(0.2)      +0.0

round(0.2)      +0.0

--------------------

int(0.7)        +0.0

floor(0.7)      +0.0

round(0.7)      +1.0

--------------------

int(1.2)        +1.0

floor(1.2)      +1.0

round(1.2)      +1.0

--------------------

int(1.7)        +1.0

floor(1.7)      +1.0

round(1.7)      +2.0

--------------------

int(-0.7)       +0.0

floor(-0.7)     -1.0

round(-0.7)     -1.0

--------------------

int(-1.2)       -1.0

floor(-1.2)     -2.0

round(-1.2)     -1.0

--------------------

int(-1.7)       -1.0

floor(-1.7)     -2.0

round(-1.7)     -2.0

--------------------


数值运算内建函数


函数功能

abs(num)返回num的绝对值

coerce将num1和num2转换成同一类型,然后以一个元祖的形式返回

divmod(num1,num2)除法-取余运算的结合,返回一个元祖(num1/num2,num1%num2),对浮点数和复数的商进行下舍入

(复数取实数部分的商)

pow(num1,num2,mod=1)取num1的num2次方,如果提供mod参数,则计算结果再对mod进取余运算

round(flt,ndig=0)接受一个浮点数fit并对其四舍五入,白村ndig位小数,若不提供ndig参数,则默认小数点后0位

round()仅用于浮点数.


5.6.3 仅用于整数的函数


进制转换函数

>>> hex(255)

'0xff'

>>> hex(4324324)

'0x41fbe4'

>>> hex(432432*2)

'0xd3260'

>>> oct(255)

'0377'

>>> oct(4324324)

'020375744'

>>> oct(432432*2)

'03231140'


ASCII转换函数


>>> ord('a')

97

>>> ord('A')

65

>>> ord('O')

79

>>> chr(97)

'a'

>>> chr(65L)

'A'

>>> chr(48)

'0'


仅适用于整数的内建函数


函数操作

hex(num)将数字转化成16进制并以字符串输出

oct(num)将数字转换成8进制并以字符串输出

chr(num)将ASCII值的数字转换成ASCII字符 范围0<=num<=255

ord(chr)接受一个ASCII或Unicode字符(长度为1的字符串),返回相应的ASCII或Unicode值

unichr(num)接受Unicode码值,范围其对应的Unicode字符,所接受的码值范围依赖于你的Python是构建于USC-2还是UCS-4


5.7.1 布尔"数"


永恒不变的两个值 True或False

布尔型是整型的子类,但不能再被继承二生成它的子类

没有__nonzero__()方法的对象默认是True

对于值为零的任何数字或空集(空列表,空元祖和空字典等)在Python中布尔值都为False

在数字运算中,布尔值的True和False分别对应1和0


#intro

>>> bool(1)

True

>>> bool(True)

True

>>> bool(0)  

False

>>> bool('1')

True

>>> bool('0')

True

>>> bool([])

False

>>> bool((1))

True


# 使用布尔值


>>> foo = 42

>>> bar = foo < 100

>>> bar

True

>>> print bar + 100

101

>>> print '%s' % bar

True

>>> print '%d' % bar

1


# 无 __nonzero__()


>>> class C: pass

...

>>> c = C()      

>>> bool(c)

True

>>> bool(C)

True


慎用:

>>> True,False = False,True

>>> bool(True)

False

>>> bool(False)

True


5.7.2 十进制浮点数


5.8 相关模块


模块介绍

decimal十进制浮点运算类Decimal

array高效数值数组(字符,整数,浮点数等等)

math/cmath标准C库数学运算函数,常规数学运算在match模块,复数运算在cmath模块

operator数学运算符的函数实现,比如 tor.sub(m,n)等价于 m - n

random多种伪随机数生成器


核心模块:ramdom

两个整数参数,返回两者之间的随机整数:

randrange()随机返回range([start,]stop[,step])结果的一项

uniform()几乎和randint()一样,不过它返回时两者之间的一个浮点数

random()类似uniform() 不过下限为0.0 上限为1.0

choice()随机返回给定序列的一个元素




     本文转自 showerlee 51CTO博客,原文链接:http://blog.51cto.com/showerlee/1330263,如需转载请自行联系原作者




相关文章
|
3天前
|
安全 数据处理 开发者
Python中的多线程编程:从入门到精通
本文将深入探讨Python中的多线程编程,包括其基本原理、应用场景、实现方法以及常见问题和解决方案。通过本文的学习,读者将对Python多线程编程有一个全面的认识,能够在实际项目中灵活运用。
|
3天前
|
弹性计算 安全 小程序
编程之美:Python让你领略浪漫星空下的流星雨奇观
这段代码使用 Python 的 `turtle` 库实现了一个流星雨动画。程序通过创建 `Meteor` 类来生成具有随机属性的流星,包括大小、颜色、位置和速度。在无限循环中,流星不断移动并重新绘制,营造出流星雨的效果。环境需求为 Python 3.11.4 和 PyCharm 2023.2.5。
22 9
|
1天前
|
存储 程序员 开发者
Python编程入门:从零开始掌握基础语法
【10月更文挑战第21天】本文将带你走进Python的世界,通过浅显易懂的语言和实例,让你快速了解并掌握Python的基础语法。无论你是编程新手还是想学习一门新的编程语言,这篇文章都将是你的不二之选。我们将一起探索变量、数据类型、运算符、控制结构、函数等基本概念,并通过实际代码示例加深理解。准备好了吗?让我们开始吧!
|
8天前
|
设计模式 开发者 Python
Python编程中的设计模式:从入门到精通####
【10月更文挑战第14天】 本文旨在为Python开发者提供一个关于设计模式的全面指南,通过深入浅出的方式解析常见的设计模式,帮助读者在实际项目中灵活运用这些模式以提升代码质量和可维护性。文章首先概述了设计模式的基本概念和重要性,接着逐一介绍了几种常用的设计模式,并通过具体的Python代码示例展示了它们的实际应用。无论您是Python初学者还是经验丰富的开发者,都能从本文中获得有价值的见解和实用的技巧。 ####
|
14天前
|
搜索推荐 Python
Leecode 101刷题笔记之第五章:和你一起你轻松刷题(Python)
这篇文章是关于LeetCode第101章的刷题笔记,涵盖了多种排序算法的Python实现和两个中等难度的编程练习题的解法。
16 3
|
13天前
|
数据采集 开发框架 数据处理
探索Python的灵活性:简化日常编程任务
【10月更文挑战第7天】 【10月更文挑战第9天】 在本文中,我们将深入探讨Python编程语言的强大功能和灵活性。通过具体的代码示例,我们会展示如何利用Python简化日常编程任务,提高效率。无论是数据处理、自动化脚本还是Web开发,Python都能提供简洁而强大的解决方案。我们还将讨论一些最佳实践,帮助你编写更清晰、更高效的代码。
13 1
|
5天前
|
设计模式 开发者 Python
Python编程中的设计模式应用与实践###
【10月更文挑战第18天】 本文深入探讨了Python编程中设计模式的应用与实践,通过简洁明了的语言和生动的实例,揭示了设计模式在提升代码可维护性、可扩展性和重用性方面的关键作用。文章首先概述了设计模式的基本概念和重要性,随后详细解析了几种常用的设计模式,如单例模式、工厂模式、观察者模式等,在Python中的具体实现方式,并通过对比分析,展示了设计模式如何优化代码结构,增强系统的灵活性和健壮性。此外,文章还提供了实用的建议和最佳实践,帮助读者在实际项目中有效运用设计模式。 ###
9 0
|
7天前
|
设计模式 存储 数据库连接
Python编程中的设计模式之美:单例模式的妙用与实现###
本文将深入浅出地探讨Python编程中的一种重要设计模式——单例模式。通过生动的比喻、清晰的逻辑和实用的代码示例,让读者轻松理解单例模式的核心概念、应用场景及如何在Python中高效实现。无论是初学者还是有经验的开发者,都能从中获得启发,提升对设计模式的理解和应用能力。 ###
|
14天前
|
存储 开发者 Python
Python编程入门:构建你的第一个程序
【10月更文挑战第8天】本文旨在为初学者提供一个简单的Python编程入门指南。我们将从安装Python环境开始,逐步介绍如何编写、运行和理解一个简单的Python程序。文章将通过一个实际的代码示例来展示Python的基本语法和结构,帮助读者快速上手Python编程。
|
14天前
|
存储 程序员 Python
Python编程入门:探索变量和数据类型
【10月更文挑战第8天】本文是针对初学者的Python编程入门指南,重点介绍Python中变量的定义和使用以及不同的数据类型。我们将通过实例来理解基本概念,并展示如何在Python程序中应用这些知识。文章旨在帮助初学者建立扎实的基础,使他们能够更自信地编写Python代码。