一、插曲之变量
1、变量名就像我们现实社会的名字,把一个值赋值给一个名字时,它会存储在内存中,称之为变量(variable),在大多数语言中,都把这种行为称为“给变量赋值”或“把值存储在变量中”。
2、不过Python与其他大多数计算机语言的做法稍有不同,它并不是把值存储在变量中,而更像是把名字贴在值的上面。
3、所以有些Python程序员会说python没有“变量”,只有“名字”。
4、代码示例(一)
teacher='小甲鱼'
print(teacher)
小甲鱼
teacher='老甲鱼'
print(teacher)
老甲鱼
5、代码示例(二)
first=3
second=8
third=first+second
print(third)
11
6、一点想法
我发现如果是下面这种形式:
>>> first=3
second=8
third=first+second
print(third)
SyntaxError: multiple statements found while compiling a single statement
必须得是下面这样:
>>> first=3
>>> second=3
>>> third=first+second
>>> print(third)
11
我在想这种限制是不是和Python中的语句不用以分号结尾有一点关系。
7、代码示例(三)
myteacher="小甲鱼"
yourteacher="黑夜"
ourteacher=myteacher+yourteacher
print(ourteacher)
小甲鱼黑夜
这个代码示例用到了我们前面说过的字符串拼接。
8、需要注意的地方
■在使用变量之前,需要对其先赋值。
比如在上面的过程中,我们没有对fishc进行赋值,然后:
>>>fishc
Traceback (most recent call last):
File "<pyshell#14>", line 1, in <module>
fishc
NameError: name 'fishc' is not defined
但我们上面已经对first赋值了,那么:
>>>first
3
■变量名可以包括字母、数字、下划线,但变量名不能以数字开头。
■字母可以是大写或小写,但大小写是完全不同的,如fishc和FishC对Python来说是完全不同的两个名字。
■等号(=)是赋值的意思,左边是名字,右边是值,不能写反咯。
■变量的命名理论上可以取任何合法的名字,但作为一个优秀的程序员,请尽量给变量取专业一点的名字。比如>>>teacher="小甲鱼“就比>>>t="小甲鱼"要好得多,因为t可以代表的意义实在是太多了。
二、插曲之字符串
1、到目前为止,我们所认知的字符串就是引号内的一切东西,我们也把字符串叫做文本,文本和数字截然不同:
>>>5+8
13
>>>'5'+'8'
'58'
2、要告诉Python你在创建一个字符串,就要在字符串两边加上引号,可以是单引号或是双引号,Python女士表示不挑剔,但必须成对,你不能一边用单引号,另一边却花心地用双引号。
3、如果字符串中需要出现单引号或双引号怎么办?例如我们想打印字符串:Let's go!,有两种方法,我们这里先介绍第一种方法,即使用转义符号(\):
>>>'Let's go!'
SyntaxError: invalid syntax
>>>'Let\'s go!'
"Let's go!"
注意是(\)!!!,不是(/)!!!
3、原始字符串
■好像反斜杠是一个好东西,但见下例:
>>>str='C:\now'
>>>str
'C:\now'
>>>print(str)
C:
ow
可以发现这里\n构成了回车的转义字符,和我们的预期不符。
■我们可以用反斜杠对反斜杠自身进行转义,见下例:
>>>str='C:\\now'
>>>str
'C:\\now'
>>>print(str)
C:\now
■但如果一个字符串里面有很多反斜杠,如>>>str='C:\Program Files\Intel\WiFi\Help',一个一个的去加反斜杠就不现实,这时我们就要用到原始字符串。原始字符串的使用非常简单,只需要在字符串前面加一个英文字母r即可:
>>>str=r'C:\now'
>>>str
'C:\\now'
>>>str='C:\Program Files\Intel\WiFi\Help'
>>>str
'C:\\Program Files\\Intel\\WiFi\\Help'
但原始字符串在最后不可以加上反斜杠:
>>>str='C:\Program Files\Intel\WiFi\Help\'
SyntaxError: EOL while scanning string literal
4、长字符串
■如果希望得到一个跨越多行的字符串,如:
春日宴
绿酒一杯歌一遍
再拜陈三愿
一愿郎君千岁
二愿妾身康健
三愿如同梁上燕
岁岁常相见
■我们就需要用到三重引号字符串:
>>>str="""
春日宴
绿酒一杯歌一遍
再拜陈三愿
一愿郎君千岁
二愿妾身康健
三愿如同梁上燕
岁岁常相见"""
>>>str
'\n\n春日宴\n\n绿酒一杯歌一遍\n\n再拜陈三愿\n\n一愿郎君千岁\n\n二愿妾身康健\n\n三愿如同梁上燕\n\n岁岁常相见'
>>>print(str)
春日宴
绿酒一杯歌一遍
再拜陈三愿
一愿郎君千岁
二愿妾身康健
三愿如同梁上燕
岁岁常相见
■最后提醒大家编程的标点符号一定要用英文!!!
三、课后习题知识点记录
0. 以下哪个变量的命名不正确?为什么?
(A) MM_520 (B) _MM520_ (C) 520_MM (D) _520_MM
答:(C)选项不正确,因为 Python 中的变量名不能以数字开头。
1.在不上机的情况下,以下代码你能猜到屏幕会打印什么内容吗?
>>>myteacher = '小甲鱼'
>>>yourteacher = myteacher
>>>yourteacher = '黑夜'
>>>print(myteacher)
答:小甲鱼
2.在不上机的情况下,以下代码你能猜到屏幕会打印什么内容吗?
>>> myteacher = '小甲鱼'
>>> yourteacher = myteacher
>>> myteacher = '黑夜'
>>> print(yourteacher)
答:小甲鱼
3.在不上机的情况下,以下代码你能猜到屏幕会打印什么内容吗?
>>>first = 520
>>>second = '520'
>>>first = second
>>>print(first)
答:会打印:520.
Extension:这里没有单引号括起来,但是它是一个字符串,因为使用print()打印,故不包含单引号,可以试试>>>first:
>>>first = 520
>>>second = '520'
>>>first = second
>>>first
'520'
4.除了使用反斜杠(\)进行字符转义,还有什么方法可以打印:Let's go! 这个字符串?
答:用双引号引起这个字符串:
>>>"Let's go!"
"Let's go!"
5.如果非要在原始字符串结尾输入反斜杠,可以如何灵活处理?
答:在最后用转义字符再加上一个反斜杠。
>>>str=r'c:\Program Files\FishC\Good''\\'
>>>str
'c:\\Program Files\\FishC\\Good\\'
6.在这一讲中,我们说变量的命名需要注意一些地方,但小甲鱼在举例的时候貌似却干了点儿“失误”的事儿,你能看得出小甲鱼例子中哪里有问题吗?
答:在例子中小甲鱼起了一个str名字的变量,但我们发现,str的颜色和普通变量的颜色是不同的。没错,str()和print()都是内置函数,但Python貌似不介意我们对内置函数进行赋值操作,所以这点我们以后要注意啦,否则可能出现下面的BUG:
>>>print=1
>>>print("I love FishC")
Traceback (most recent call last):
File "<pyshell#34>", line 1, in <module>
print("I love FishC")
TypeError: 'int' object is not callable
7.还记得我们第一讲的动动手的题目吗?这一次要求使用变量,计算一年有多少秒?
答:小甲鱼的答案给出的代码如下:
>>>DaysPerYear = 365
>>>HoursPerDay = 24
>>>MinutesPerHour = 60
>>>SecondsPerMinute = 60
>>>result = DaysPerYear * HoursPerDay * MinutesPerHour * SecondsPerMinute
>>>print(result)
Traceback (most recent call last):
File "<pyshell#46>", line 1, in <module>
print(result)
TypeError: 'int' object is not callable
运行出错了,原因大概是int类型不能在函数中调用之类的,修改成:
>>>DaysPerYear = 365
>>>HoursPerDay = 24
>>>MinutesPerHour = 60
>>>SecondsPerMinute = 60
>>>result = DaysPerYear * HoursPerDay * MinutesPerHour * SecondsPerMinute
>>>print(result)
31536000
注:大家看到了要给变量起一个合适的名字并不容易,但在很多文档中,这类名字随处可见,所以要习惯。
8.关于最后提到的长字符串(三重引号字符串)其实在 Python3 还可以这么写,不妨试试,然后比较下哪种更方便?
>>> string=(
"春日宴\n"
"绿酒一杯歌一遍\n"
"再拜陈三愿\n"
"一愿郎君千岁\n"
"二愿妾身康健\n"
"三愿如同梁上燕\n"
"岁岁常相见\n")
>>>string
'春日宴\n绿酒一杯歌一遍\n再拜陈三愿\n一愿郎君千岁\n二愿妾身康健\n三愿如同梁上燕\n岁岁常相见\n'