pytho数据类型转换规则(pytho数字类型转换函数)
导语:Python基础系列(三):简单学数据类型转换与常用运算符
【继前文我们已经学习了第二章节的基础数据类型,我们认识了标识符的规则、整数类型、浮点数类型、字符串的索引与切片等内容,在造房子打基础的道路上又前进了一大步了。】
今天要讲的是第二章剩余的部分:数据类型转换的方法与常用运算符的认识,主要包括布尔类型、数据类型转换、算数运算符、逻辑运算符、位运算等内容,其中相对复杂的是“位运算”这块。PS:发现使用IDLE截图讲解会更为清晰,之前用Pycharm的截图灰色的注释可能看不太清,注释能帮助理解代码,还是很重要的。如下放了一张IDLE截图的看法说明:
一、预期学习达成效果
今天的内容如果认真操作,花费的时间约在1.5小时左右,主要是位运算这块会消耗多一些时间,因为涉及到计算机二进制的原码、反码、补码机制。难是不难的,理解的时候把自己想象成是计算机认识0和1就可以了。。。
通过今天的学习,预期可以掌握:
什么是布尔值及如何产生
数据类型之间的转换方法
Eval函数的使用方法及作用
各类运算符的含义及使用
计算机的原码、反码、补码
位运算的相关运算符号
……
这部分学完,理论上和数字相关的运算都基本都认识了,能做很多事情,可以自己尝试着编写很多微型代码了。
二、正式开始第二章后8个部分
2.11布尔类型。Python中的布尔类型只有两种值:True和False,它回答的是是非问题,那么什么情况下是True,什么情况下是False呢?可以看看下面的程序示例。同时,布尔值也可以直接参与运算,True代表1,False代表0:
2.12 数据类型之间的转换。浮点数可以转换为整数,但代价是丢掉小数点及后面的小尾巴;字符串可以转换成数值;十进制、十六进制、八进制、二进制之间都可以互相转换:
2.13 eval函数的用法。eval() 是 python 中功能非常强大的一个函数,它可以将将字符串当成有效的表达式来求值,并返回计算结果(eval 函数会把字符串参数的引号去掉,把中间的内容当成Python的代码,执行这段代码并且返回执行结果);还可以将输入的字符串转换为数值。详见下方案例:
2.14算数运算符。算数运算符理解起来相对简单,可以看看下方的示意图,再看看程序运行实例:
2.15赋值运算。注意表达方式i+=1与i=i+1,在数值运算中可理解为是等同的;在赋值的时候可以链式赋值,如a=b=c=100:
2.16比较运算符。两个数比较的结果为真,即为True,反之则为False。这里还要特别注意的是2个=代表相等,1个=代表赋值,这在以后的比较中会经常碰到,如果运行报错了,可以检查是否等式中少写了1个=:
2.17逻辑运算符。逻辑运算用于对布尔型变量进行运算,其结果也是布尔型;逻辑运算符有三种:and(与)、or(或)、not(非),代码案例如下:
2.18位运算。要理解位运算首先要理解计算机二进制的编码方式:原码、反码、补码。我们在程序中经常使用的整数,在计算机中的表示形式是二进制,这个数其实就叫机器数。机器数是带符号的,在计算机用一个数的最高位存放符号,正数为0, 负数为1。
原码就是符号位加上真值的绝对值,即用第一位表示符号,其余位表示值。比如整数11, 8 位二进制表示的原码是00001011;-11,就是10001011;
反码,正数的反码就是自身,负数的反码除符号位外,其他各位求反。11的反码=原码=00001011;-11的反码为11110100;
补码,正数的补码和原码、反码一样。而负数的补码,则在反码的基础上+1。11的补码=反码=原码=00001011;-11的补码为11110101.
那么,为什么存在这么多的编码形式呢?这是为了让符号位也参与计算,且解决反码符号位运算错误及正0、负0的问题,进而引入了补码(这部分以后可以单独成一篇来讲)。所以计算机都是用补码运算,在计算的时候,如果是减法,可以把减法看成加法。
理解了原码、反码、补码,那位运算就简单许多。Python中,按位运算符有左移运算符(<<)、右移运算符(>>)、按位与运算(&)、按位或运算(|)、按位取反运算(~)、异或运算符(^),其中按位取反运算符为单目运算符。要注意,都是以补码方式进行运算的!
以左移运算x=2<<2求解x为例讲解步骤:1.计算整数2的补码。其补码为0000 0010(此处以 8 bit 举例,实际计算机存储中不一定是 8 bit,但是不影响结果);2. 运算数的各二进位全部左移若干位,由&34;右边的数指定移动的位数,高位丢弃,低位补 0。对于有符号数,符号数不变。则0000 0010变为0000 1000(此时仍是补码形式);3.计算原码,因正数补码与原码一致,则原码为0000 1000;4.根据原码求得对应的整数,为8.
其余位运算也都是基于这样的规律,代码实例可参考如下:
三、练练手之课堂作业
1.获取个位数、十位数、百位数、千位数。实现任给一四位数,能让计算机分别输出其个位数、十位数、百位数、千位数。
2.求解x=(12&(2<<2))>>2。如果用代码运算其实很快,1s出结果,可以的话手算一遍,效果非常好。
【下期会放今天课堂作业的答案,今天就讲到这里,仍是每天进步一点点,足矣。】
本文内容由快快网络小面整理编辑!