课时3:小插曲之变量和字符串

目录:

一、变量

二、字符串

  >原始字符串

  >长字符串

三、课时03课后习题及答案

***********

一、变量

***********

  变量名就像我们现实社会的名字,把一个值赋值给一个名字时,Ta会存储在内存中,称之为变量(variable),在大多数语言中,都把这种行为称为“给变量赋值”或“把值存储在变量中”。

不过Python与大多数其他计算机语言的做法稍有不同,Ta并不是把值存储在变量中,而更像是把名字贴在值的上边。所以有些Python程序员会说“Python”没有“变量”,只有“名字”。

看个例子:

>>> teacher = "小甲鱼"
>>> print(teacher)
小甲鱼
>>> teacher = "老甲鱼"
>>> print (teacher)
老甲鱼

 变量为什么不叫”恒量“而叫变量?正因为它是可变的!再看另外一个例子:

>>> x = 3
>>> x = 5
>>> y = 8
>>> z = x + y
>>> print(z)
13

 同样的方法也可以应用到字符串中:

>>> myteacher = "小甲鱼"
>>> yourteacher = "老甲鱼"
>>> ourteacher = myteacher + yourteacher
>>> print(ourteacher)
小甲鱼老甲鱼

 这种字符串加字符串的语法,在Python里称为字符串的拼接。

 这里进行了一番想法的测试,想看看变量的值变过后,其相应的id地址是否发生了变化:

>>> y = 1
>>> print(y)
1
>>> id(y)
140728562340896
>>> y = 2
>>> print(y)
2
>>> id(y)
140728562340928

经实验证明,同一变量的值发生变化过后,其id地址也发生了变化。

需要注意的地方:

>在使用变量之前,需要对其先赋值。
>变量名可以包括字母、数字、下划线,但变量名不能以数字开头。
>字母可以是大写或小写,但大小写是不同的。也就是说fishc和FishC对于Python来说是完全不同的两个名字
>等号(=)是赋值的意思,左边是名字,右边是值,不可写反咯。

*************

二、字符串

*************

到目前为止,我们所认知的字符串就是引号内的一切东西,我们也把字符串叫做文本,文本和数字是截然不同的,咱看例子:

>>> 5+8
13
>>> “5”+”8″ #字符串的拼接
’58’
>>> ‘5’+’8′
’58’
>>> ‘Python I love you!”
SyntaxError: EOL while scanning string literal

要告诉Python你在创建一个字符串,就要在字符两边加上引号,可以是单引号或者双引号,Python女士表示不挑剔。但必须成对,你不能一边单引号,另一边却花心的用上双引号结尾。

如果字符串中需要出现单引号或双引号怎么办?
例如我想打印字符串:Let’s go!

有两种方法,第一种比较常用,就是使用我们的转义符号(\)对字符串中的引号进行转义。

还有一种就是利用Python既可以用单引号也可以用双引号来表示字符串这一特点,用上不同的引号表示字符串。

>>> 'Let\'t go'
"Let't go"
>>> print('Let\'t go')
Let't go
>>> "Let't go"
"Let't go"
>>> print("Let't go")
Let't go

因为\now中的\n是被print识别成了转移符号——回车。
然而直接显示字符串转义符号不会被解释,
所以就会这样。

原始字符串:

好像反斜杠是一个好东西,但不妨试试打印:

>>> str = 'C:\now'
>>> str
'C:\now'
>>> print(str)
C:
ow

我们可以用反斜杠对自身进行转义:

>>> str = 'C:\\now'
>>> str
'C:\\now'
>>> print(str)
C:\now

但如果对于一个字符串中有很多个反斜杠:
原始字符串的使用非常简单,只需要在字符串前边加一个英文字母r即可:

>>> str = r"C:\Program Files\Intel\WiFi\Help"
>>> str
'C:\\Program Files\\Intel\\WiFi\\Help'
>>> print(str)
C:\Program Files\Intel\WiFi\Help

在使用字符串的时候需要注意一点是:无论是否原始字符串,都不能以反斜杠作为结尾。如果你坚持这样会报错。

>>> string = 'FishC\'
SyntaxError: EOL while scanning string literal

长字符串:

如果希望得到一个跨越多行的字符串,例如:
我爱鱼C,
正如我爱小甲鱼,
他那呱唧呱唧
呱唧呱唧
呱唧呱唧的声音,
总缠绕于我的脑海,
久久不肯散去……
这我们就需要使用到三重引号字符串!

>>> print("""
我爱鱼C,
正如我爱小甲鱼,
他那呱唧呱唧
呱唧呱唧
呱唧呱唧的声音,
总缠绕于我的脑海,
久久不肯散去……
""")

我爱鱼C,
正如我爱小甲鱼,
他那呱唧呱唧
呱唧呱唧
呱唧呱唧的声音,
总缠绕于我的脑海,
久久不肯散去……

*******************************

三、课时03课后习题及答案

*******************************

 测试题:

0. 如果非要在原始字符串结尾输入反斜杠,可以如何灵活处理?

错误1:
>>> str = r'C:\Program Files\FishC\Good\\'
>>> str
'C:\\Program Files\\FishC\\Good\\\\'
错误2:
>>> str = r'C:\Program Files\FishC\Good\'
  File "<stdin>", line 1
    str = r'C:\Program Files\FishC\Good\'
                                        ^
SyntaxError: EOL while scanning string literal

正确:
>>> str = r'C:\Program Files\FishC\Good''\\'
>>> str
'C:\\Program Files\\FishC\\Good\\'

发表回复