0基础学Python之三:数字运算(上)

Hi 大家好,我是王可乐。在前面的课程中,可乐带大家一起安装了 Python 运行环境,演示了 Python Shell 的交互式界面,并且一起玩儿了一个猜数字的小游戏。如果你完全没有编程经验,看不懂我们的游戏代码,一点都不用担心。从今天起,可乐就要开始为大家介绍 Python 编程的方方面面,只需要跟着可乐一点一点学习,动手操作,很快你就能够通过编程实现自己的想法了。

今天这一节课,可乐先给大家介绍一下 Python 里的数字。在前面的课程中我们已经见到过 Python 解释器的交互模式 Python Shell,让我们再次打开它,输入 6 * 7,回车,答案还是 42。

这里,6 和 7 是两个整数,星号则表示乘法运算。在 Python 语言中,整数用 int 来表示,和小学数学中的整数一样,例如 6, 7, -1, 0, 42 等;相应的还有浮点数 float,对应小学数学中的小数,例如 1.0, -2.2;此外还有复数 complex,这种数我们在中学数学中学习过,例如 1+1j, 12j 等。在 Python 中使用整数和浮点数没有什么特别之处,只需要原样输入即可;复数的使用也很简单,但相对少见,可乐会在以后的课程中再为大家介绍。

我们可以用内置函数 type() 来查看数据的类型,看起来是不是很像中学数学中教的函数?关于函数和内置函数的概念可乐也会在以后的课程中介绍。这里,你只需要像这样输入:type(42),回车。我们看到,Python 告诉你 42 的类型是 ,这里的 class 表示类,但今天我们只关注后面的 int,也就是说 42 是 int 类型的。

同样的,我们试一试 type(-1.0),可以看到 -1.0 是 float 类型,也就是说它是一个小数;而 type(-1) 则是 int 类型,他们数值虽然相等,但类型不一样哦。如果你对前面提到的复数好奇,可以试试 type(1+1j),看看是不是 complex 类型呢?顺便提一下,Python 中的类型可不止这三个数字类型哦,事实上 Python 支持许许多多丰富的类型,而且可以自己定义;不过我们目前先了解数字,以后的课程中可乐会为大家介绍这些概念。

不同的数字类型之间可以互相转换,例如 1 是一个整数,我们输入 float(1),Python 就为我们转换出来了一个浮点数 1.0;反过来,我们输入 int(1.0),Python 为我们转换出来一个整数 1,这里要注意的事,浮点数转换为整数是会损失小数部分的,例如我们试试 int(1.2),结果是 1,这显然和原来的 1.2 不相等了。

好了,了解了不同类型的数字,我们再来看一看数字的表示方法。

我们常用的表示数字的方法称作十进制表示法,它使用 0 到 9 十个基本数字来表示数字。例如 42,它的含义实际上是 4 乘以 10 的一次方加上 2 乘以 10 的零次方。这里,高位数字代表的是基数 10 的 N 次方倍大小,4 就表示 40,2 就表示 2。在计算机的硬件里,只能存储和使用 0 和 1,因此计算机世界里的数字最终都会表示成 0 和 1 两个基本数字的组合,这种表示方法就叫做二进制表示法。

和许多编程语言一样,Python 默认使用十进制的数字表示方式,这样你就可以用熟悉的数字系统来编写程序了。不过有时候为了使用方便,你也可能用其他的进制表示数字,Python 支持的进制还有二进制、八进制和十六进制。我们再打开 Python Shell 来试一下:

输入 0b101010,回车,显示 42;再输入 0o52,回车,显示 42;再输入 0x2a,回车,显示还是 42。自上而下它们分别是 42 这个数字的二进制、八进制和十六进制表示法,实际上它们都是同一个数字,只是表示方法不同。二进制表示法前面总是以 0b 开头,后面只能包含 0 和 1;八进制表示法总是以 0o 开头,后面只能包含 0 到 7 八个数字;十六进制法则总是以 0x 开头,后面包含 0 到 9,以及 a 到 f 总共十六个字符,其中 a 到 f 分别表示十进制数 10 到 15。

因为我们对十进制更为熟悉,所以经常把数字都换算成十进制,我们来简单换算一下。十六进制数 0x2a,它的值为 2 乘以 16 的一次方加上 a 乘以 16 的零次方,也就是十进制 32 加上 10,等于十进制 42。同样地,你可以算一下上面的两个二进制和八进制数字。

在 Python 语言里,可以很方便的进行整数进制的转换,Python 提供了几个内置函数来实现这个功能。例如我们依次输入 bin(42),回车,oct(42),回车,hex(42),回车。看看是不是得到了上面几个 42 的不同表示法呢?这几个函数的功能分别是把数字转换成二进制,八进制和十六进制。同样的,hex(0b101010) 也可以把二进制数转换成十六进制表示法。虽然这些表示法看起来各不相同,要记得它们实际上都是同一个数字哦,使用起来没有什么不同的地方。

好了,接下来可乐再为大家介绍另一个概念,变量。在小学数学学习方程的时候大家就已经接触过变量这个名字了,在 Python 的世界里变量也是一个很简单的概念,它实际上就是一个值的名字。变量不仅仅能表示数字类型的值,也能用于表示 其他的类型,不过在介绍到这些复杂的类型之前,我们先让变量来表示数字吧。

例如,我们输入 x = 1.0。这时我们就定义了一个变量 x,并且让它的值为浮点数 1.0,回车。现在你只需要知道 x = 1.0 是一个所谓的赋值语句,Shell 只是默默地执行了这个语句,而并不输出任何东西。这时我们可以通过输入变量名来查看变量的值,输入 x,回车,就能看到 x 的值已经是 1.0 了。

我们再试试 y = 0x2a,这时我们定义了一个变量 y,它的值为整数 42,只是在定义它的时候我们使用了十六进制来书写这个数字。然后输入 y,回车,可以看到确实 y 已经是整数 42 了。然后我们可以改变变量的值,例如这时我们输入 x = 2.0,再输入 x 回车,可以看到 x 已经变成了 2.0。

要使用一个变量,必须先定义它,也就是用变量名 = 数值的这种方式来定义,如果你没有定义就尝试使用一个变量,那么 Python 就会报错说名字未定义,例如我们输入 z,回车,因为之前我们并没有定义过变量 z,因此 Python Shell 告诉我们发生了一个 NameError,也就是这个变量名 z 还没有被定义,现在不能使用。

你可以定义很多变量来使用,需要注意的是变量的名字必须符合一定的规则。在 Python 中,一个变量名必须只包含字母、数字和下划线,并且不能以数字开头,而且不能使用 Python 中内置的一些关键词汇;此外,通常来说以下划线开头的变量名字都会有一些特殊的含义,所以可乐建议初学者先不要使用,以后可乐都会为大家一一介绍。牢记这个规则,我们可以看到 x, y, z,还有 counter, the_forty_two, a1, _type 都是合法的变量名字,而 0a, int, float, type 则不是合法的名字,因为 0a 以数字开头,而后面三个则是 Python 的内置关键字。

可乐建议大家在取变量名的时候都遵循固定的规则,而且取有意义的名字,这样会让你的程序更加易懂。

变量也可以用内置函数 type() 来查看类型,例如我们输入 type(x),可以看到 x 的类型就是它的值的类型,也就是 float;输入 type(y),可以看到 y 是 int 类型。在 Python 中,变量的类型也是可以改变的,例如我们输入 z = x,回车,然后输入 z,回车,再输入 type(z),回车,可以看到此时 z 和 x 一样都是 float 类型,值为 2.0;然后我们输入 z = y,回车,然后输入 z,回车,type(z),回车,可以看到 z 的值变成了 42,而类型也变成了 int 类型。

好了,本节课的内容我们就先介绍到这里。通过这节课的内容,我们了解了 Python 中的数字以及数字类型,并且知道了整数的二进制、八进制、十进制和十六进制几种表示方法,此外,我们还了解了变量的概念。

在下一节课上,可乐会为大家介绍一下 Python 中的运算符号,学习了下一节课的内容之后,你就可以将 Python Shell 当作一个高级的计算器来使用了,敬请期待哦。

往期课程:

《0基础学Python之二:玩个小游戏》

《0基础学Python之一:什么是程序?》

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180316G1TWYR00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券