学习完C和C++后初识python

     今天大概是对python的数据类型等基础部分进行了简单的了解,同时巩固了C和C++中忽略的一些问题。

   首先是对转义字符的认识。之前没有太在意过这些问题,一般只用到"\n"表示换行,因为在C和C++中,貌似换行必须用到"\n"。在python中当然也可以,不过python还有一个好处就是如果你将print()函数分成两行写,编译器会自动帮你换行;之后就是关于“\t”,即水平制表符的理解。水平制表符会先判断“\t”之前的字符个数除以4的余数,设为n,而该操作就可以将从该位置向后空出(4-n)个位置;接着是关于“\r”,该转义字符可以用“\r”后面的内容覆盖前面的,也就是说,遇到“\r”,光标会回显到该行的开头(此处也联想到换行符和回车符的区别);接着是关于“\b”,这个就比较简单了,可以删掉“\b”前面的一个字符。

  接着是有关二进制与字符编码的问题。中国的汉字也是由二进制存储的。在python中,利用chr()函数,例如:chr(0b100111001011000)就表示汉字“乘”(0b表示二进制,0o表示八进制,0x表示十六进制)。与之相对的,ord()函数可以将汉字转换成其对应的十进制的数。同时,我们了解到,python2中的汉字采用的是gbk编码,而python3采用的是utf-8编码,如果需要转换,可以在一行中写入“#coding:gbk”。

  接着是关于python中如何查找地址和数据类型的。地址在C语言中想要打印出来,需要用%p,而在python中只需要用id(变量名);同时,在C和C++中,定义变量的时候就必须指明数据类型,而在python中不需要,并且可以通过type(变量名)来查看数据类型。当然,提到数据类型,就必须要提到数据类型的种类。在python中,目前知道的主要类型就是整数类型,浮点类型,布尔类型和字符串类型,这跟C和C++几乎一样。重点强调浮点类型,由于计算机采用二进制存储,在计算浮点数的时候常常会出现误差。因此,最好加上下面这行代码:from decimal import Decimal   。这样,例如在运算1.1+2.2的时候,就可以使用Decimal('1.1')+Decimal('2.2')算出3.3了。在python中,布尔类型也是非常“自由的”。例如True可以直接与整数1相加得到2,False与整数1相加得到1等等。关于字符串类型,有一个小的点,就是使用’ ‘(单引号)和” “(双引号)字符串不能分两行,而使用” “ ”(三引号)就可以分两行书写字符串。

  当然,提到了数据类型,肯定还得提数据类型之间的转换。在C和C++中,由于定义变量的时候就需要写出类型名称,所以一般叫做“强制类型转换”。而在python中,不需要你写出类型名称,类型都是编译器帮你定好的。也正是因为如此,编译器定的类型往往不是我们所需要的,所以说我们需要用到类型转换,即int(变量名),str(变量名),float(变量名)。在数据类型转换中也要注意一些问题。例如当字符串型和整型混在一起时:name='张三'   age=20   print('我叫'+name+',今年'+age+'岁') ,这里面,用print输出时,+表示在前一个输出的后面接着输出下一个。当然,这行代码是错误的,因为age和name的数据类型不一样,因此需要将age改为str(age)。除此之外,当字符串想要转换成整数类型时,必须要保证字符串内是一个整数,否则无法转换成功。

  还有就是对input()函数的了解,这个函数类似于C语言中的scanf+gets()以及C++中的cin+gets()。书写的格式也很简单:如a=input()。但是有一点需要注意,就是由于一开始没有设定数据类型,所以你在控制台上输入的数据都会默认为字符串型(python3中),这就需要你进行类型转换。如增添一行a=int(a)。

  下面是关于赋值的问题。在,python,C和C++中都存在链式赋值,如a=b=c=20(强调一下,该情况下三个数的地址相同);但是在Python中,还存在系列解包赋值,如a,b,c=10,20,30,但是必须保证左右两边的数的个数相同。需要交换两个数时,直接使用:a,b=b,a。这样不仅方便,而且相较于C和C++,该赋值方法不仅实现了值传递,而且实现了址传递,避免了C和C++中指针或引用带来的麻烦。

  下面的内容就很杂啦。如采用比较运算符时,返回的值是布尔类型;还有就是is和==的区别:is比较的是两者的地址,==比较的是两者的值,如两个列表list1=[11,22,33,44],     list2=[11,22,33,44],这两者的值相同,但是地址不同,所以print(list1==list2)返回值是True,而print(list1 is list 2)返回值就是False,而在中间加入not,即print(list is not list2)返回值就是True了。这个“not”也可以对布尔类型取反,即可以print(not False)。还有就是关键词"in"和“not in”,字面意思,就是是否在其中。如a='helloworld',那么print('e' in a)返回值就是True,而print('e' not in a)返回值就是False。还有关于位运算的一些符号。这个在C和C++中略有接触,但由于上课老师不讲,考试也不考,所以也没有进行过多的研究。这块的内容也不多,有四个主要的运算符:&,|,<<和>>。先把数写成二进制的模式,然后按位进行计算即可。<<(左移运算符):高位溢出,低位补0;>>(右移运算符):低位溢出,高位补0。位运算在往年蓝桥杯的一道题中有所运用,大概是用二进制0和1来判断循环的次数以及是否选中该数的问题(0表示未选中,1表示选中)。还有就是关于python注释的问题。一行中注释可以用#,整个一起注释既可以选中想要注释的,并按ctrl+/;也可以将想注释的内容前后加上三引号。

  本人第一次写博客,难免有很多写的不准确的地方,望指正,谢谢。

  

  

热门相关:骑士归来   无限杀路   惊世毒妃:轻狂大小姐   法医王妃不好当!   特工重生:快穿全能女神