00:00
刚刚我们说了这个数据类型里边的一个数值,接下来我们接着往下说,嗯,先还是先来创建一个新的文件,在这我来保存一下,我们0505叫做一个字符串,还是这句话啊,学习任何东西都不要脱离实际,数值在我们实际开发当中是存在的,那字符串是什么呢?哎,字符串我们来说一下,那字符串是什么东西,那我们想想啊,我们平常这个生活当中,除了我们去有数字是吧?我们发工资,我们身高体重这些东西都是用数字去去表示的是吧?玩游戏的这个你的攻击力是吧?诶,你的力量等等一系列哎,都需要用数字去去表示,那除了数字,我们平时日常生活中还有什么东西?哎,还有什么东西,还有就是我们人与人之间说的话,哎,我跟你说一句话,你跟我说一句话,那你跟我说那句话,它是一个什么东西呢?那实际上那个画就是一个一串信息对吧?一串文本信息,那这种文本信息在我们的计算机里,在我们的语言里,我们称为叫做一个字符串啊字符串诶字符串用来干嘛的呢?哎,用来表示一段这个文本信息啊文本信息字符串是我们这个程序中,诶使用的最多的一种数据,诶使用的这个最多的这个数据,诶使用最多的一种数据类型,诶它比这个数字还还要多,哎数字字符串我们会大量的使用啊,大量的使用,诶那这里边我们来看一下,那怎么去表示字符串数字123456789,就直接写就完了,那字符串呢,那注意了,在我们这个Python中,我们这个字符串需要使用这个引号引起来啊引起来那怎。
01:52
怎么就算是字符串了,来我们来写一个,来一个S等于一个我来一个这个hello,你来注意这个hello,我是不是用两个单引号引起来呀,那注意这个hello它就是一个字符串啊,字入一个字符串,然后在这我们来print一下,Print一下这个S啊,直接执行hello是不是就出来了,哎,就出来了啊,这是我们说的一个字符串,非常简单字符串,你就把它想象成我们说的话就OK了,你就当是人说的话,还有一个字符串,你想想我们上学的时候去学课文是吧,诶谁谁谁说后边是不是冒号双引号,我们都是拿引号把人的话给引起来,在这里其实是一个意思啊,其实一个意思,好,那接着看,那注意了,我这来一个S等于ABC,注意这么写行不行,哎,这么行不行啊,注意了,字符串必须使用我们这个引号引起来,而这里我有没有使用引号没有,哎,如果不使用引号,它不是字符串,那这个东西它。
02:52
是什么啊,它是什么?在这里注意它会被当成是一个变量ABC啊,变量ABC,而我们有没有用过变量ABC没有,那所以这一执行肯定又是那个name error啊,Name error名字错误啊,所以注意这一块注意啊,字符串必须使用引号引起来,那这里边我们来说引号可以是什么呢?可以是双引号,也可以是单引号,什么意思?来看看效果,直接来一个S等于一个hello,这是一个单引号,这是没问题的,或者S等于什么呢?哎,我们来一个双引号的hello也OK,双引号在单引号上面啊,Shift加那个单引号就输出的是一个双引号了啊,那这两个本质上没有任何区别,它是一模一样的,就是一个用单引号,一个用双引号啊,可以是单引号,也可以是双引号,但是注意。
03:43
哎,但是注意不要混着用啊,不要混着用,什么叫混着用啊,有同学说这么写吧,S,我来一个hello,来这么来一个,诶这个设计是不是挺巧妙的呀,但家注意干嘛了,是不是报错了,哎,Ul skin screen eter e totalal eteral,这个是一个字面量的意思啊,字面量意思语法错误,说白了就是一个错误的字面量啊错误的字面量也就说这个东西这两个嘛呀,它配不上啊,它配不上,所以注意我们这来写一下,哎,字符串无法哎引号啊引号引号不能什么呀?哎不能混合使用,哎不能混合使用你的什么呀,你的这个单引号里边不能写这什么呀,诶你的单引号里边不能写这个,诶你的单引号不能和双引号配着用,双引号也不能跟单引号配着用啊,保存,我把这错误转过来啊,把这错误粘过来,CTRLZ,这是字面量的一个错误啊,字面一个错误,好引号不能混合使用。
04:44
要么你就全都用单引号,要么你全都用双引号,那啊还有什么情况呢?还有的是是这样的啊,我写一个S等于随便写一个啊写一个这个,比如说用单引号写什么呢?写一个子曰冒号,那这个时候冒号后边是不是要我们要跟着孔子说的话嘛,子曰对吧?那这个时候我就要写一个这什么呢?写一个双引号,写双引号之来写一个什么呀?哎,学而学而时习之啊,学而时习之啊,乐呵乐呵,哎乐呵乐呵,我写这么一句话啊,写这么一句话,这很明显就想写一句孔子的话,但是注意这样写行不行,哎,很明显是不行的,一执行是不是报错了,哎,告诉你,In invalid character indent就是错误的标识符在错误的字符在标识符里,那咱们先这错误,我先不去解析它,当然我们来说,你要知道这么写会有错误,为什么出现错误,要注意相同的引号间,哎相同。
05:44
的引号之间不能嵌套啊,相同的引号之间能嵌套什么意思?双引号里边你不能再写双引号了,单引号里边也不能再写单引号了,你来看这怎么解析的呀,你看单引号,这是双引号,双引号这俩是不是配成一对了,哎来看这这是双引号,这是双引号这俩是不是配成一对了?好把中间这一这一这一段是不是就没有,没有人管了,哎,没人管了,那这东西到底是啥呀?是个字符串啊,还是个变量还是什么东西,那实际上我们的程序会把它当成一个变量啊,会把它当成一个变量,那这时候是不是告诉你这种标识符诶,不能用叹号,不能用逗号,这个标识符是错误了,所以告诉你标识符的错误啊,所以告诉标识符的错误,所以注意啊,相同的引号之间不能进行嵌套啊,不能进行嵌套,那那怎么办啊,那怎么办?那这一块我们来说一下。
06:37
呃,这里边我们来说什么呢?不能这么写,那怎么办?这个东西其实非常简单,你直接把外边这种单引,把外边这个双引号给它换成单引号,这样就没有嵌套的问题了,不同的引号之间是可以圈套的,这样是没有问题的,但是一定注意相同的之间千万不要进行嵌套啊,像这种写法千万不要写,千万不要写啊,一定注意好,这是我们说的一个字符串啊,字符串两种方式,一个是单引号,还有一个是双引号,两种方式都行,注意他们的一个建造规则,然后还有一个啊,还有一个我们的是一个长字符串,长字符串是怎么写的呢?那这一块我们要演示一个问题,S,我想写什么呢?哎,我想写一个古诗啊,一段字符串来表示一首古诗啊,我写一个是吧,著名的一个诗篇是吧,诶,锄禾日当午。
07:29
锄禾日当午,汗滴禾下土,禾下土,哎,谁知盘中餐,哎,谁知盘中餐,哎,粒粒皆辛苦啊,粒粒皆辛苦,那这是不是这么一首古诗啊,我这一执行,哎,这诗是不是就出来了,哎,就出来了啊,那现在这诗是出来了,但是现在这诗它是不是没有格式啊?哎,没有格式,我希望这诗每一句跟每一句之间是不是一个换行啊,哎,那我想吧,我先这么来一个,我先这么来一个换行,那注意这么写行不行?同理,这么写还是会给你报错啊,还是会给你报错,那注意为什么,注意我们的什么呢?
08:08
单引号和双引号是不能跨行使用的,双引号不能跨行使用。哎,就是说它只对当前这行起作用,单引号你这写了呀,它只会在当前这行找单引号,同样也会只会在当前这行去找双引号,如果你这跨行了,你现在等于这一行两行,三行,四行,是不是跨了四行呀,那对不起,他这时候就不能用了,那要怎么办?还是我们说的写跨行寓句的时候,可以后边以这个斜杠结束,这就表示我这个语句分多行使用,那这样我们这一执行这样,诶还是有问题,我来看一下哪写错了。我们来看一下啊,这个鞋盖啊,我写错了,这个鞋盖应该是写的是我们这个反鞋盖啊,一定注意不要犯我这个错误,它是一个反鞋盖,我这一直行,这样是不是就OK了,哎,这样就OK了啊好,那这个是我们说的一个它,但是问题又来了,虽然跨行了,但是这个打印出来的文本有没有体现出换行,哎,没有体现出换行,所以这是我们单引号双引号的一个缺点,就是说它不能换行,哎它不能换行,你要换行必须得使用斜盖,但是你这虽然使用斜杠,但是打印的结果是不带这个换行的,那怎么办?那在这儿我们就可以说用到我们这个长字符串,长字符串怎么写啊,长字符串我们使用什么这块其实也不用注啊,长字符串我们使用三重引号,使用我们叫做一个三重引号,哎来表示一个长字符串,长字符串那什么叫做三重引号,就是三个单引号。
09:50
三个单引号或者是三个双引号都行啊,都行,那他们的特点就是什么呢?我们这个三重引号,诶第一个特点,三重引号可以换行,并且会保留我们这个字符串中的这个格式啊,格式什么格式啊,比如说你有这个缩进呀,哎,比如说你有这个这个换行啊,它都会保留,所以这个时候来看这儿,我把这内容粘过来啊,把内容粘过来CTRLC等于它。
10:22
嗯,把这换行我都给它删掉啊。这时候我们来看啊,我可以把这个单引号改成三个单引号,注意也可以是三个双引号啊,也可以是三个双引号,这一保存我直接运行是不是效果是一样的呀?哎,所以注意,如果这你仅仅写一行,效果是一样的,但是区别来了啊,看这在这儿,我后边可以直接换行,你注意一看颜色,你就能看出来,我们这个三个引号是不是可以跨行使用啊,哎,跨行使用并且来在这儿看运行格式是不是也保留起来了,哎,格式也保留起来了啊,所以注意这就是它们的一个区别啊,单引号,单个的单引号,单个的双引号,他们只能在一行当中使用,如果你换行必须使用这斜杠,但是它不会保留格式,而我们这三重引号或者三个单引号,或者三个双引号,它可以干嘛呀,可以跨行,并且会保留我们这个格式啊,保留我们这格式,所以注意了,你在用的时候,你可以用这种,也可以用这种,根据你的实际需求,如果你的字符串内容过多,又需要保留格式,你就需要用这种诶长字符。
11:27
啊,如果你的字符串不需要保留格式,你就用这种什么呀,哎,单引号这种普通的一个字符串就完事了啊好,那这个是我们说的一个长普通字符串,还有我们这个长字符串,然后再说我们下一个概念叫做转义字符,转义字符也是我们这个字符串里边非常重要的一个概念,还是要回到我们刚才那个话题,刚才我们在这儿啊,比如说我这写这个孔子的时候。粘过来,子曰学而时习之,我们说了,由于里边出现了双引号了,出现了双引号了,所以我外边就不能再用双引号了,因为外边一旦使用双引号,就出现了我们这个,诶双引号的一个嵌套的问题,对吧?双引号嵌套问题,那这个时候我就外边就只能必须使用单引号了,但是问题就来了,现在啊,我还是说我希望外边使用双引号,里边呢,我也使用双引号,我能不能做到这个事儿呢?那注意是可以的,怎么做,我们可以什么呢?诶我们可以使用我们这个反斜盖啊反斜盖诶作为我们这个什么呢?转业字符啊,可以使用反斜杠作为转义字符,什么叫转义字符,那注意双引号单引号这种字符在我们字符串里,它是有特殊意义的,诶,双引号就是去表示引起的一个字符号,单引号也是同理,它是有特殊意义的,但是实际上当这个双引号在这个字符串内部出现的时候,像我这两个双引号他们有。
12:54
我没有特殊意义,哎,没有任何的特殊意义在这里,这两个玩意儿是不是就是一个单纯的双引号啊,所以这时候我就需要告诉我们的解析器,这个就是个单纯的双引号,没有任何特殊的意义,你不要做任何的特殊处理,是这意思吧,那问题就来了,那怎么告诉呀?哎,那我们就需要用反斜盖来表示,比如说在这个双引号前边我给加一个反斜盖啊,回车上边那个在这儿我也加一个反斜盖,那它的效果就是告诉我们的解释器这个玩意儿就是一个单纯的双引号,没有其他的任何的特殊意义,也就是说不要去把它和它配对,也不要和它配对了,懂这意思吧,就是一个转译字符啊,来我们来看效果,直接运行走一个来看这回是不是就OK了,哎,所以注意通过转译字符我们可以干嘛呢?哎,可以在字符串中表示一些特殊的字符,通过我们这个转义字符,哎,可以。
13:54
哎,在字符串中,哎,使用一些特殊的一个内容啊,特殊内容那这块,比如说我们来举几个例子,例子什么呀,比如说我斜杠单引号,还有什么呢?还有斜杠双引号,那这个斜杠单引号表示什么意思?诶斜杠单引号就表示单引号,哎表示单引号,而我们这个斜杠双引号呢,哎就表示我们这个双引号啊,非常简单,还有一些还有像什么鞋盖T啊,我们写一个鞋盖T表示我们这个制表符,制表符啊,说起常用的还有一个鞋盖N啊,表示我们这个换行符。
14:35
表示我们这个换行符来看效果看这儿了啊,那现在啊,我们这乐呵乐呵看这没有任何变化对吧?现在看这我这前面加一杠T啊,你来看看杠T能不能出现啊,杠T咱们来看效果,直接一执行,看没看见杠T,没有看见杠T,但是你会发现这是不是多了一空格啊,哎,多了一空格,杠T是什么?制表符相当于我摁了一,相当于我在这个位置按了一下我键盘上那个table键啊,在这个位置按了一下键盘推table键,在这儿做了一下缩进啊制表符经常用来对集一些内容,而杠N呢,看着我把杠T换成杠N,再来看效果走,这是不是就换行了,哎,就换行了啊,所以注意杠N在这表示换行符,所以像这个内容我们也可以用杠N来表示,我只需要在每一行的末尾加一个杠N,是不是来进行换行就OK了,哎,换行就OK了啊,所以注意杠N在这表示的是换行啊换行然后再说一个,那有一些情况下我想干嘛呢?诶,我想在这儿啊,我就想打印一个鞋盖,我就想打印一个鞋盖,比如说我。
15:36
就想让杠N的鞋盖单纯的显出来,它不是作为杠N,就是一个普通的鞋盖,那这时候怎么办呢?那注意如果你光打是没有的,对吧,那你需要干嘛呢?我需要对鞋盖也得进行转移,所以我用鞋盖鞋盖来表示我们这什么呀,反鞋盖反鞋盖啊,所以注意在这儿我们得用两个鞋盖来表示一个,所以如果你要想打这鞋盖,你再加一个,这样一执行来看,这候就看见这鞋盖了,哎,这时候就看见鞋盖了啊,所以在这儿注意我们这个两个鞋盖代表一个,那你如果想打印两个呢,那你得写四个鞋盖,这一保存是不是才有两个鞋盖,哎,所以注意啊,在这里边鞋盖鞋盖它是表示的反鞋盖,你得写两个才表示一个啊,才表示一个,然后还有一种特殊的,我们杠U4个叉,这个表示什么呢?这个表示的是我们这个UNI扣的编码啊,那这个东西是干嘛的?比如其实我们在这个Python里边,我们的代码都是以U逆扣的进行编码的,都是用UTF杠八进行编码的,那这个。
16:36
U叉叉是干嘛的?这个U4个叉的意思就是可以直接打一遍,直接使用unix编码,什么意思?咱们来看一下,比如说我写一个S等于一个这个,诶写个字符串杠U,我写一个0040,随便写一个啊我也不知道是啥,这就是一个四位的U级和编码,注意为什么写四个叉,因为我们这个编码都是用四位去表示的啊,四位去表示的,那这个时候我这一打印一执行打印了一个艾特,那证明什么0040,这个编码在我们的诶unico的编码表里对应的是艾特,诶然我改成50,我这一执行是不是就变成一个大写的P呀,诶改成一个,改成一个80,我这一执行,诶这个是这个显示,它就等于是乱码了,没显示出来啊,然后显示一个70往这一看,是不是一个一个一个小写的P呀,哎,一个小写P啊,就这样一个效果啊,就样一个效果,通过这种方式可以直接去打印,我们UN尼编码后边直接跟着编码就行了,它有什么用,其实没啥用啊,其实没啥用,那用处的话就有一些。
17:36
情况下,我们要打一些特殊编码输入法输,输不出来的时候可以通过它去输入,比如说举个例子,嗯,在这儿呢,我这有一个这个UNO的编码表。嗯,在这,呃,这里边编码表啊,我们说了unicode是一个万国码,所以它这里边什么稀奇古怪的东西都有啊,什么乱七八糟东西都有,你看这种都是各种各样,其实都是一些很奇怪的符号,对吧?很奇怪的符号,那比如说我想在我的这个程序里打印这么一个符号,诶那这个时候你直接打,你肯定不会打对吧?因为你都不知道它怎么读,你用输入法有你也打不出来,那这个时候你就需要用到我们这个,诶杠U叉叉,比如说它的编码是16A1,所以在这儿你就可以使用一个杠U。
18:19
16A一来表示它一保存一执行,这时候是不是打印出来了,哎,就打印出来了啊,所以通过它可以打印一些这种特殊的符号,这种符号还挺多,你看这这这很有意思是吧,很有意思啊,比如说打一个EC00。杠u ec001保存,我们这一执行,EC00啊ECC0啊ECC0这一保存一执行啊,也没出来,没出来,为什么?因为在我们这个sublab里,它可能这字体不支持它,所以就没有啊,所以就没有,所以这个东西打印的话,你也得需要根据你的这个什么呀,根据你的这个电脑的知识情况,我想打印这个试试吧,咱们再试一个啊,再试一个。但是没什么用啊,没什么用,了解一下就行了,它可以直接根据这个编码去输入内容,诶这能打印出来对吧,根据编码来输入内容,但是我们这块用的不多,除非极特殊,极特殊情况要表示一些特殊符号要用到,一般情况下是不会用的啊,一般情下不会用的好,那这个是我们说的一个字符串的一个简单介绍,回顾一下,首先说了表示组照方式,单引号双引号或者三重引号啊,然后呢,转移字符用我们的反斜盖啊,反斜杠,主要说这么几个东西,我们来先停一下。
我来说两句