课时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来说是完全不同的两个名字
>等号(=)是赋值的意思,左边是名字,右边是值,不可写反咯。
*************
二、字符串
*************
到目前为止,我们所认知的字符串就是引号内的一切东西,我们也把字符串叫做文本,文本和数字是截然不同的,咱看例子:
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")
答案:
测试题答案:
(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 貌似不介意我们对内置函数进行赋值操作,所以这点我们以后就要注意啦.
动动手答案:
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
小甲鱼备注:大家看到了要给变量起一个合适的名字并不容易,但在很多文档中,这类名字随处可见,所以要习惯。