Python:变量和字符串
变量(variable)
变量就是一个名字,一个标签,通过这个变量你就能找对应的数据,比如你在大街上遇到了我,你喊"崔九八",我正好听到肯定会说"谁叫我?"
举例:我创建了一个变量,它的名字叫做"x",它的值是"3","="表示的是一个赋值操作,也就是将右边的数值"3"
Python还可以支持中文字符的变量名,如下:
变量名的规则:通常是由字母、数字和下划线构成,但不能以数字打头。变量名是区分大小写的
变量之所以叫变量而不叫常量、恒量或者定量什么的,因为它的值是可变的
比如说,我的账号名称叫崔九八,变量名定义一个"name"赋值给它一个叫做"崔九八"的值,过段时间后,我想要改个名,我将账号名称给成"崔九八学Python",可以看到变量的值是可以被替换的,它的值取决于最后一次赋值操作
不同变量的值还可以进行传递,比如:x = 9,y = 8,我们可以把x上的值传递给"y",如下:
如果你一开始就想把"x"和"y"的值都赋值为"3",你可以这么写
有时候你可能需要交换两个变量之间的值,比如"x"的值为"9","y"的值为"8",你希望它俩的值互相调换一下,你就可以这样写:
作为Python程序员,让我们以更优雅的一种方式去写:
字符串(string)
在上面提到的"崔九八","崔九八学Python"这两个值,都使用了双引号(""),为什么呢?其中一个原因是如果你不这么做的话,Python完全有可能认为"崔九八"和"崔九八学Python"就是一个中文的变量名,但我们不是这个意思,Python使用字符串来表示文本序列,Python字符串的编写方式多种多样,主要的如下图:
Single quotes就是使用一对单引号,将文本包含起来
Double quotes就是使用一对双引号,将文本包含起来
看起来都差不多,为什么这样设计那?
举例:比如说你非常喜欢的一个女生邀请你看电影,把你乐得都飙英文了,说"Let's go!"
看!Python都说你语法错误了,一定要注意,无论是使用单引号,还是双引号来表示字符串,都应该确保文本两边的引号都应该是"成双成对"的,这行代码:print('Let's go!'),被Python认为Let是字符串,而这个s、空格、go!还有一个单引号是一个无头的字符串,只有结尾没有开头,由于文本里边出现了不可避免的单引号,所以需要使用双引号来表示字符串来化解这个问题,是不是很简单!
同样的方法也适用于文本中存在双引号的情况,下面我来打印一下Python的名言,既然是名言我就用双引号把它括起来,"人生苦短,我用Python"
因为我需要把双引号显示出来,所以用单引号来表示字符串,这样就不会产生冲突了
转义字符
实现字符串回车,使用转义字符"\n"
原始字符串
哎呀,怎么会是这个样子?我的本意是要显示一个路径,但是由于windows的路径是使用反斜杠作为分隔符的,所以就会产生一个误会,Python会认为反斜杠搭配一些特定的字符就是一个转义字符,所以这里就按转义字符的含义给出了解析,"\t"就是一个Tab制表键,所以D:\three之间就会有一个制表键的空间给空出来了,"\n"就是一个换行符在one的后面就换行了,解决这个问题很简单,就是使用另外一个反斜杠去转义路径分隔符的反斜杠,如下:
但是,如果有一个很长的路径,一百多个层级,那一个个添加反斜杠那也太麻烦了!完全违背了编程是为了提高生活效率的初衷,那应该怎么办才好啊?这时使用原始字符串就可以轻松解决这个难题啦!做法就是在字符串的第一个引号的前面加上一个小写字母"r"就OK!
加上"r"就说明字符串是一个原始字符串,原始字符串的话转义字符将不再有效,它只能当作原始的字符,每一个字符都没有特殊的含义。
使用反斜杠需要注意的是"不能把它放在字符串的末尾",反斜杠放在末尾表示"这事儿还没完"。
什么意思?举例:打印一个飞机
长字符串(Triple quoted)
长字符串的发明主要是为了实现"跨行字符串",叫Triple quoted,三个双引号或者三个单引号随便都可以,但是一定要注意"前后呼应,成双成对"。前面用三个单引号开始后面就用三个单引号结束,双引号同理。
下面用长字符串打印一首人工智能写的诗:
字符串的加法和乘法
首先,问大家一个问题520和'520'是一样的吗?
看到了吗,显然字符串更懂得浪漫呀,需要区分的是:字符串其实就是文本,虽然可以进行加法操作,但是跟数字加法的含义是截然不同的,字符串相加我们叫做拼接,就是将字符串组合成一个新的长的字符串,字符串除了可以使用加法进行拼接,还可以使用乘法进行复制,比如说,你跟小姐姐说我每天爱你三千遍,但是小姐姐却让你写下来,没学会Python之前肯定会说要累死了,但是学会了Python之后,既能救你一命,还能收获爱情呦
文章灵感来源:
https://www.bilibili.com/video/BV1c4411e77t/?p=5&spm_id_from=pageDriver&vd_source=
ab33ce08435d295fd9ff199740f46a0e