课时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. 以下哪个变量的命名不正确?为什么?
    (A) MM_520  (B) _MM520_  (C) 520_MM  (D) _520_MM

1. 在不上机的情况下,以下代码你能猜到屏幕会打印什么内容吗?

1 >>>myteacher = '小甲鱼'
2 >>>yourteacher = myteacher
3 >>>yourteacher = '黑夜'
4 >>>print(myteacher)

解释一下,这几行代码:首先,想象一下有一个叫做“小甲鱼“数据,代码myteacher = '小甲鱼'实现了将变量myteacher指向了这一个数据,进而存入了内存中,也就是为”小甲鱼“贴上了myteacher的标签;代码yourteacher = myteacher,将变量yourteacher也指向了这一个数据,这时候有两个变量指向同一数据;第三行代码,(我们说python并不是把值存储在变量中,而更像是将名字贴在值上面)所以,变量yourteacher变卦了,指向了”黑夜“这一数据,而myteacher还是指向小甲鱼这一数据。我们可看看它们id地址的变换情况。

 

>>> myteacher = "小甲鱼"
>>> id(myteacher)
3249577405872
>>> yourteacher = myteacher
>>> id(yourteacher)
3249577405872
>>> yourteacher = "黑夜"
>>> id(yourteacher)
3249577880632
>>> id(myteacher)
3249577405872

 

2. 在不上机的情况下,以下代码你能猜到屏幕会打印什么内容吗?

1 >>> myteacher = '小甲鱼'
2 >>> yourteacher = myteacher
3 >>> myteacher = '黑夜'
4 >>> print(yourteacher)

3. 在不上机的情况下,以下代码你能猜到屏幕会打印什么内容吗?

1 >>>first = 520
2 >>>second = '520'
3 >>>first = second
4 >>>print(first)

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

5. 在这一讲中,我们说变量的命名需要注意一些地方,但小甲鱼在举例的时候貌似却干了点儿“失误”的事儿,你能看得出小甲鱼例子中哪里有问题吗?

 动动手:

0. 还记得我们第一讲的动动手的题目吗?这一次要求使用变量,计算一年有多少秒?
提示:可以以 DaysPerYear(每年天数),HoursPerDay(每天小时数),MinutesPerHour(每小时分钟数),SecondsPerMinute(每分钟秒数)为变量名。
1. 关于最后提到的长字符串(三重引号字符串)其实在 Python3 还可以这么写,不妨试试,然后比较下哪种更方便?

1 >>> string = (
2 "我爱鱼C,\n"
3 "正如我爱小甲鱼,\n"
4 "他那呱唧呱唧的声音,\n"
5 "总缠绕于我的脑海,\n"
6 "久久不肯散去……\n")

 

答案:

 

测试题答案:

 

0. 以下哪个变量的命名不正确?为什么? (A) MM_520 (B) _MM520_ (C) 520_MM (D) _520_MM

(C)选项不正确,因为 Python 中的变量名不能以数字开头。

1. 在不上机的情况下,以下代码你能猜到屏幕会打印什么内容吗?

会打印:小甲鱼

2. 在不上机的情况下,以下代码你能猜到屏幕会打印什么内容吗?

会打印:小甲鱼

3. 在不上机的情况下,以下代码你能猜到屏幕会打印什么内容吗?

会打印:520,注:这里没有单引号括起来,但是他是一个字符串,因为使用 print() 打印,所以不包含单引号。可以试试直接>>>first,它是一个字符串的。

4. 如果非要在原始字符串结尾输入反斜杠,可以如何灵活处理?
>>> str = r'C:\Program Files\FishC\Good''\\'
>>> str
'C:\\Program Files\\FishC\\Good\\'
>>> print(str)
C:\Program Files\FishC\Good\

6. 在这一讲中,我们说变量的命名需要注意一些地方,但小甲鱼在举例的时候貌似却干了点儿“失误”的事儿,你能看得出小甲鱼例子中哪里有问题吗?

  在例子中小甲鱼起了个 str 名字的变量,但事实上我们发现,str 的颜色跟普通变量貌似不同?没错,str() 和 print() 都是内置函数,但 Python 貌似不介意我们对内置函数进行赋值操作,所以这点我们以后就要注意啦.

 

动动手答案:

 

0. 还记得我们第一讲的动动手的题目吗?这一次要求使用变量,计算一年有多少秒?
1 >>> DaysPerYear = 365
2 >>> HoursPerDay = 24
3 >>> MinutesPerHour = 60
4 >>> SecondsPerMinute = 60
5 >>> result = DaysPerYear * HoursPerDay * MinutesPerHour * SecondsPerMinute
6 >>> result
7 31536000
8 >>> print(result)
9 31536000

小甲鱼备注:大家看到了要给变量起一个合适的名字并不容易,但在很多文档中,这类名字随处可见,所以要习惯。

posted @ 2018-07-19 22:30  那是个好男孩  阅读(885)  评论(0编辑  收藏  举报