前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >《夯实Python基础》(1)

《夯实Python基础》(1)

作者头像
高一峰
发布2020-09-22 09:57:06
4100
发布2020-09-22 09:57:06
举报
文章被收录于专栏:高渡号外
《夯实Python基础》

一、数字

数字是几乎在所有计算机语言中都必然存在一种基本的数据类型。在Python中,数字也是相当典型和普遍存在的。

严格意义上讲,在Python中,数字并不是一种严格意义上的对象类型,而是一组类似类型的分类。

为了全面深刻的理解Python的数字,我们今天从如下几个方面来进一步阐释数字在各个层面上的含义,及数字的各种运算规则。

1、‍数字是一种常量

在Python中,数字被定义为一种常量,而且这个常量的大小就是这个数字字面的大小,因此,也被称为字面常量。

例如:1,2,3,4,5

看见上面几个数字了吗?是的,没看见才怪。不就是5个数字嘛?!

没错,你看得很清楚,就是5个数字。

但是,在Python这种面向对象的语言中,还记得万物皆对象吧?所以,它们不仅是5个数字,它们还是5个对象,似乎这才是符合Python语言的描述。

既然是对象,它就有类型和值。那么,这5个对象是什么类型呢?它们的类型被称为常量,它们的值呢?当然你看到是什么,它的值就是什么。所以,这5个对象的值就是1,2,3,4,5。

哈哈,是不是感觉又绕回来了?

的确是有点绕,明明就是1、2、3、4、5嘛,

为什么偏要说他们是5个对象,

然后它们的值才是1、2、3、4、5呢?

这不是精神分裂吗?

哈哈!千万不要为这点小事精神分裂啊。

实在觉得绕了,就不必要太纠结了,

知道它们是数字(常量)就可以了,

然后知道它们有大小,

也就是有值,

而且,它们的值就是它们自己。

OK,还是让我分裂了,

不过,这回我大概是理解了。

2、‍数字可以转换为字符串

除了数字是常量外,我们还知道字符串也是常量。关于字符串的知识点,我们下节课再仔细聊。这里,我只想再次强调一下,这两个常量是可以相互转化的。

例如:

str(1)==’1’

int(‘1’)==1

这两个表达式的运算结果都是true。

但是,请注意,数字转化成字符串总是能成功的。但并不因此意味着,字符串转换为数字就一定能成功。

例如:

int(‘abc’)转换的结果会报错。

3、‍数字可以赋值给变量

毫无疑问,变量的发明是意义重大的。

要不然,我们会一直固守在算术运算的日子里不能自拔。数字到底是数字呢?还是数字?这样的日子将是漫长和无趣的。

所以,我一直认为代数比算术简单,设置一个x(未知数),这是何等的智慧,解决了多少曾经被算术题折磨得死去活来的少年的烦恼。

如今,它摇身一变,以变量的模样来了到计算机的语言里,继续拯救着昔日的少年!

是的,还是那个x,如今它被称作变量,我们可以给他赋值。你给他什么,它就拥有了什么。没错,可以给它数字,它便拥有了数字的值。关于变量我们会另文再讨论。

例如:x = 3

这时,数字3被赋值给了x变量,于是这个名字叫x的变量,就拥有了3的值。重要的是,从此以后,我们不再精神分裂了,x是变量的名,3是x的值。清楚明白!

当然,还可以将一个算式赋值给x。

例如:x = (2 + 1)*2

此时,x的值变成6了。

嗯,没错,x的值变了,它不像数字那样总是一个定值。

4、‍数字的运算

(1)加减法

>>> a = 1

>>> b = 2

>>> c = 3

>>> a + b + c

>>> 6

没错,变量的加减法,就是变量的值的加减法!

(2)乘法

>>> a = 1

>>> b = 2

>>> c = 3

>>> a * b * c

>>> 6

嗯,变量的乘法,还是变量的值的乘法!

(3)除法

>>> a = 6

>>> b = 4

>>> a/b

>>> 1.5

看起来这个没什么问题。是的,自从Python3.0以后,除法就不再那么容易出幺蛾子了。我说这话,就是想提醒大家,现在市场上还在流行Python2的版本,如果,你遇上了,或者你正好也在使用Python2的版本,那就得注意了。

它的结果会是这样的:

>>> a/b

>>> 1

咦?a/b不应该是等于1.5吗?四舍五入也等于2啊?

是的,因为在Python2的版本中,除法运算,如果除数和被除数都是整数时,结果仅取商的整数部分,并自动剔除了余数。

那如果,我希望得到一个准确的计算结果(含小数的)呢?

方法很简单,只需要除数或者被除数二者其一是小数(准确的说叫浮点数),就能得到一个完整的含小数部分的商。

比如:

>>> float(a)/b

>>> 1.5

>>> a/float(b)

>>> 1.5

所以,提醒大家,当你在程序代码中尝试使用除法的时候,你得小心一点,特别是仍然在使用Python2版本的用户。

对于乘法和除法运算,Python还给出了两种特殊的情况,** 和 //。

这是啥意思?连乘和连除?

不是的!应该说是乘方和整除的意思。

例如:

>>> 2**3

>>> 8

它表示2的3次方,也可以说是3个2连乘,所以,结果等于8。这个比较好理解。

但是,如果我们的除法使用//时,对于运算结果,有时就比较容易费解了。

先看例子。

>>> 6//4

>>> 1

>>> 6.0//4

>>> 1.0

>>> 6//4.0

>>> 1.0

>>> 6//-4

>>> -2

这意味着什么?这意味着如果你只想得到两个数相除的结果并取整的话,你就可以使用//来计算,它就只会给你一个整除的结果。

但是,它取整的方法是值得我们注意的,它不是简单的四舍五入,而是所谓的向下舍入的方法取整

这是个啥意思呢?就是说对于除法的结果是小数时,参照四舍五入的方法,如果四舍五入的结果使其值变大了,就舍;反之,如果使其变小了,就入。所以,当这种除法的结果是正数时,小数部分通常被舍弃,如果为负数时,则参照四舍五入,余数大于等于5时入进来。

最后,请注意它的结果的数据类型,如果除数和被除数都是整数,结果也是整数,否则,只要其中一项是浮点数,结果还是浮点数。

(3)比较运算

数字的比较运算比较简单,基本等同于我们的数学中的比较运算。

x>y:x大于y;

x>=y:x大于等于y;

x==y:x等于y;

x<y:x小于y;

x<=y:x小于等于y;

x!=y:x不等于y。

需要注意的是,对于比较运算,它们的运算结果只有两种:true或者false。

(4)集合

为什么谈到数字运算时,我们会想到集合?实际上,主要还不是在运算的时候,更多的可能是在处理数据的时候,集合会给我们帮上大忙!

比如我们有一个数字型的列表a,如下:

>>> a = [1,2,2,3,4,4,5,6,7]

现在,我们处理这个列表a时,希望获得一个去除了其中的重复数字的列表。如果使用笨办法,能想到的应该是迭代循环了,通过循环比对,剔除重复是数字。

但是,如今Python有集合了,问题就变得简单很多了。

>>> a = set(a)

>>> a

>>> {1,2,3,4,5,6,7}#集合去重

>>> a = list(a)

>>> [1,2,3,4,5,6,7]#转换为列表

看看,集合去重多么强大!特别是数据量比较大的时候,简直威力无比了。

(5)内置数学函数模块

除了常规的加减乘除以外,有时我们还会遇到许多其他类型的运算和数字处理,神奇的Python为我们提供了丰富的内置函数,帮我们一招解决问题。

abs(x) #去绝对值

divmod(a,b) ‍#取余数和商

float(x) #转换为浮点数

int(x) #转换为整数

pow(x,y[,z]) #幂运算(x的y次幂)

range(x) #产生一个从0开始不大于x的整数序列

round(x,n) #四舍五入,保留n位小数

sum() #对一个数字序列求和

bin(x) #转换为二进制

oct(x) #转换为八进制

hex(x) #转换为十六进制

以上列出的仅供参考,还有更多的内置函数。必要时,大家可以从Python的官方文档查询到更多的内置函数和用法。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-07-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 高渡号外 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档