Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >《夯实Python基础》(1)

《夯实Python基础》(1)

作者头像
高一峰
发布于 2020-09-22 01:57:06
发布于 2020-09-22 01:57:06
4460
举报
文章被收录于专栏:高渡号外高渡号外
《夯实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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
[Python零基础入门篇⓪⑨] - Python中的数字类型及应用
为什么不使用 int 函数仍然能输出呢?其实这是我们使用第二种方式的时候,程序已经自动给我们套了一层 int 了,这样就减少了我们书写代码的工作量。除了 int 之外,python 中还有很多的高效语法,这也是python高效开发的原因之一。
哈哥撩编程
2024/06/20
2890
[Python零基础入门篇⓪⑨] -  Python中的数字类型及应用
Python基础语法-基本数据类型-浮点数
浮点数是Python基本数据类型之一,表示实数,包括小数、负数、零和无限大等。在Python中,浮点数类型的变量可以使用float类型表示。
玖叁叁
2023/04/16
6890
计算机组织结构(四) 浮点数四则运算
📚 文档目录 合集-数的二进制表示-定点运算-BCD 码-浮点数四则运算-内置存储器-Cache-外存-纠错-RAID-内存管理-总线-指令集: 特征- 指令集:寻址方式和指令格式 浮点数的加减运算 X=X_S \times 2^{X_E},Y=Y_S \times 2^{Y_E} 步骤 检查是否为零 阶码对齐,尾数移位 对尾数加或减 标准化结果 溢出判断 对阶 求阶差\Delta E=\begin{cases} =0,已经对齐\\\ne0,\begin{cases}大的向小的对齐:减小较r大的阶码,同
Rikka
2022/01/11
8670
计算机组织结构(四) 浮点数四则运算
为什么阿里开发手册建议使用 BigDecimal 来进行浮点数的运算?
大家好,我是 Guide。《阿里巴巴 Java 开发手册》中提到:“为了避免精度丢失,可以使用 BigDecimal来进行浮点数的运算”。
Guide哥
2021/12/15
1.2K0
为什么阿里开发手册建议使用 BigDecimal 来进行浮点数的运算?
【愚公系列】2021年12月 Python教学课程 03-数据类型
计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各 种数值。但是,计算机能处理的远不止数值,还可以处理文本、图形、音频、视频、网 页等各种各样的数据,不同的数据,需要定义不同的数据类型。在 Python 中,能够直 接处理的数据类型有以下几种:
愚公搬代码
2021/12/13
5640
【愚公系列】2021年12月 Python教学课程 03-数据类型
python中取整数的几种方法(python怎么取整)
总结:math.ceil()严格遵循向上取整,所有小数都是向着数值更大的方向取整,不论正负数都如此
全栈程序员站长
2022/07/31
6K0
浅谈Python内置对象类型——数字篇(附py2和py3的区别之一)
Python是一门面向对象的编程设计语言,程序中每一样东西都可以视为一个对象。Python内置对象可以分为简单类型和容器类型,简单类型主要是数值型数据,而容器类型是可以包含其他对象类型的集体,如序列、元组、映射等。
Python进阶者
2021/08/24
1.1K0
Python3 数字(Number)
有时候,我们需要对数据内置的类型进行转换,数据类型的转换,你只需要将数据类型作为函数名即可。
奥耶可乐冰
2023/12/28
2160
Python3 数字(Number)
[零基础学python]啰嗦的除法
除法啰嗦的,不仅是python。 整数除以整数 看官请在启动idle之后,练习下面的运算: >>> 2/5 0 >>> 2.0/5 0.4 >>> 2/5.0 0.4 >>> 2.0/5.0 0.4
py3study
2020/01/05
2K0
Python3 数字(Number)
有时候,我们需要对数据内置的类型进行转换,数据类型的转换,你只需要将数据类型作为函数名即可。
AlexZhang
2021/12/02
6900
【二】Python基础之数据类型:数字
Python 数字数据类型用于存储数值。数据类型是不允许改变的,这就意味着如果改变数字数据类型的值,将重新分配内存空间。
菲宇
2019/06/12
8950
Python_实用入门篇_07
    Python 数字数据类型用于存储数值,数据类型是不允许改变的,这就意味着如果改变数字数据类型的值,将重新分配内存空间。
py3study
2020/01/19
5520
Python_实用入门篇_07
计算机二级Python考点解析3
Python可以处理的整数和数学上的写法一模一样,例如:10,-10,0等。十六进制用0x前缀和0-9,a-f表示,例如:0xff00,0xa5c3d2等。
Minerva
2020/05/21
9230
python取整符号_python 取整「建议收藏」
(1)向下取整向下取整很简单,直接使用int()函数即可,如下代码(python 2.7.5 idle) a = 3.75 int(a) 3 (2)四舍五入第二种就是对数字进行四舍五入,具体的看下面的代码: a=3.25; b=3.75 round(a); round(b) 3.0 4.0 (3)向上取整 但三种,就是向上取整,也就是我这次数据处理中需要的,由于之前没在python中用到…
全栈程序员站长
2022/08/01
5.3K0
python取整符号_python 取整「建议收藏」
Python数字类型
数字类型是不可变类型。所谓的不可变类型,指的是类型的值一旦有不同了,那么它就是一个全新的对象。数字1和2分别代表两个不同的对象,对变量重新赋值一个数字类型,会新建一个数字对象。
汤贤
2020/05/18
1.1K0
BigDecimal加减乘除运算
java.math.BigDecimal。BigDecimal一共有4个够造方法,让我先来看看其中的两种用法:
全栈程序员站长
2022/08/15
1.5K0
数值问题
计算机里面关于数值的处理自有一套体系理论,与现实生活中我们所习惯使用的不太一样。如果对其不了解,在使用计算机的过程中便可能发生一些意想不到的错误。
rand_cs
2023/12/10
3510
漫谈计算机组成原理(十)浮点数运算
浮点数和定点数一样,都是计算机中数据的存储形式。定点数我们可以理解成纯小数或者纯整数,但是实际上在计算机中参与运算的数字并非都是定点数。比如,有些数据过大,比如2^100^这样的数据,如果写成二进制的形式,寄存器肯定是无法放下的。于是就有了浮点数这种数据。 本文主要讲述浮点数的概念、浮点数的规格化,以及浮点数的各种运算。
roobtyan
2019/02/21
9.8K0
漫谈计算机组成原理(十)浮点数运算
Java精度问题
Java中的简单浮点数类型float和double不能够进行运算。 这个问题相当严重,如果你有9.999999999999元,你的计算机是不会认为你可以购买10元的商品的。 在有的编程语言中提供了专门的货币类型来处理这种情况,但是Java没有。现在让我们看看如何解决这个问题。
用户1205080
2019/03/04
1.1K0
【小家java】Java数值运算 [加减乘除] 精度丢失原因分析,提供保证精度的MathHelper工具类
有没有一种触目惊心的感觉,感觉回去检查检查自己的代码,有没有一些数值运算吧,哈哈。这个问题相当严重,比如你有9.999999999999元,你的计算机是不会认为你可以购买10元的商品的。在有的编程语言中提供了专门的货币类型来处理这种情况,但是Java没有。
YourBatman
2019/09/03
1.9K0
相关推荐
[Python零基础入门篇⓪⑨] - Python中的数字类型及应用
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档