Chapter 2 变量和简单数据类型
本章主要讲述:在Python程序中使用的各种数据;如何将数据存储到变量中;如何在程序中使用这些数据。
2.1 运行hello_world.py时发生的情况。
代码如下:
运行代码会看到如下输入:
即使是运行简单的程序,Python所做的工作也相当的多:
- 运行文件hello_world.py时,末尾的.py指出这是一个python文件,因此编辑器将使用python解释器来运行它。
- python解释器读取整个程序,确定其中每个单词的含义。
- 看到单词print时,解释器会将括号中的内容打印到屏幕,而不会管括号中的内容是什么。
PS:编写程序时,使用的编辑器会以各种方式突出程序的不同部分。如它(VsCode)知道print是一个函数名称,因此将其显示为黄色;它知道“Hello Python World!”不是python代码,因此将其显示为橙色。这种功能称为语法突出,刚开始编写程序时,很有帮助。
2.2 变量
- 下面尝试使用变量
运行后,结果和hello_world.py输出相同:
我们添加了一个名为message的变量;每个变量都存储了一个值--与变量相关的信息;在这里存储的值为文本“Hello Python World!”
- 添加变量后,Python解释器需要做更多的工作:
2.1处理第1行代码时,将文本“Hello Python World!”与变量message关联起来;
2.2处理第2行代码时,它将与变量message关联的值打印到屏幕。
- 进一步扩展这个程序,修改ex2.2.1.py,使其再打印一条消息。为此添加一个空行,再添加下面两行代码:
运行的结果如下:
在程序中,可随时修改变量的值,而Python将始终记录变量的最新值。
2.2.1 变量的命名和使用
在Python中使用变量时,需要遵守一些规则和指南。违反规则会引发错误,而指南旨在让你编写代码更容易阅读和理解。因此请务必牢记下述有关变量的规则。
- 变量名只能包含字母、数字、下划线。变量名可以字母或者下划线打头,但是不能以数字开头;如:message_1可以,但是1_message则不行。
- 变量名不能包含空格,但是可以使用下划线来分隔其中的单词。如:greeting_message可以,greeting message会引发错误。
- 不要将Python关键字和函数名用作变量名,即不要使用Python用于特殊用途的单词,如print。
- 变量名应该即简短又有描述性。如name比n好,name_length比length_of_persons_name好。
- 慎用小写字母l和大写字母O,应为它们可能被人错看成数字1和0.
要创建良好的变量名,需要经过一定的实践。就目前而言,应该使用小写的Python变量名,应该避免使用大写字母是个不错的主意。
2.2.2 使用变量名时,避免命名错误。
输入下面的代码,将message拼写成“mesage”:
运行时,python解释器将竭尽所能的帮助你找出问题所在。解释器会提供一个traceback,它是一条记录,指出了解释器尝试运行代码时,在什么地方陷入了困境。如下图:
- 解释器指出,在代码的第二行出现了错误。
- 列出了这行代码,目的是帮助你快速的找出错误。
- 指出了它发现的是什么样的错误。
在这里,解释器发现了一个名称错误,并指出打印的变量mesage未定义,python无法识别你提供的变量名。
一般来说,名称错误有两种情况:1. 使用变量前忘记给它赋值。2. 输入变量名时拼写不正确。
在上面的示例中,第2行的变量名中遗漏了s。由于python解释器不会对代码做拼写检查,但是要求变量名拼写一致。如果两边的变量名保持一致,即使拼写错误,程序也将会正确的运行。
2.3 字符串
我们将介绍第一种数据类型:字符串。看起来很简单,但是能够以很多不同的方式使用它们。
字符串就是一系列字符。在python中,用引号括起来的都是字符串。引号可以是单引号,也可以是双引号。如:
“This is a string.”
'This is also a string.'
这种灵活性可以让你能够在字符串中使用引号和撇号。
2.3.1使用方法修改字符串的大小写
下面这行代码,有啥作用:
运行后,如下:
我们看到了,两个单词的首字母都由小写变成了大写。
我们来分析下代码:
- 小写的字符串“ada lovelace”存储到了变量game中。
- 在print()语句中,方法title()出现在这个变量后面。
(方法即python可对数据执行的操作;在name.title()中,name后面的句点.就是让python对变量name执行方法title()指定的操作。每个方法后面都跟着一对括号,这是因为方法通常需要额外的信息来完成工作,这种信息是在括号内部提供的。由于函数title()不需要额外的信息,因此它后面的括号是空的)
- title()是以首字母大写的方式显示每个单词,将每个单词的首字母改成大写。
还有其它两个大小写的处理方法,如下:
运行后如下:
upper()方法将字符串改为全部大写。
lower()方法将字符串改为全部小写。存储数据时,无法依靠用户来提供正确的大小写,需要将字符串先转换成小写,再存储它们。以后需要显示这些信息时,在转换成最合适的大小写方式。
2.3.2 合并(拼接)字符串
如果将你的姓和名分两个不同的变量存储,等到要显示姓名的时候在放在一起,这个时候就需要合并字符串了。如例1:
运行后:
python是使用 + 来合并字符串的。这种合并方法称为拼接。
再看一个例子2:
运行后:
在这里,一个问候用户的句子中使用了全名,并使用方法title()来讲姓名设置为合适的格式。
或者使用拼接创建消息,再把整条消息都存储在一个变量中,如例3:
运行后,和例2相同。将这条消息存储 在了一个变量中,这让最后的print语句简单的多。
2.3.3 使用制表符或换行符来添加空白。
在编程中,空白泛指任何非打印字符,如空格,制表符和换行符。你可以使用空白来组织输出,以使其更易读。
- 使用制表符,\t:
- 在字符串中添加换行符,\n:
- 还可以在同一个字符串中同时包含制表符和换行符。\n\t,让python换到下一行,并在下一行开头添加一个制表符。
2.3.4 删除空白
在程序中,额外的空白令人迷惑。’python‘和’python ‘看起来几乎没有什么两样。但是对于程序来说,是两种不同的字符串。在python中,删除用户多余的空白易如反掌。
python能够找出字符串开头和末尾多余的空白,可以使用方法rstrip()。
第1行处,字符串末尾是有空白的。调用rstrip()之后呢,空白消失(见3)。 但是,这种删除只是暂时的。如果要永久的删除空白,就要将删除操作的结果存回变量中。如下图:
还可以删除字符串开头的空白,或者同时删除字符串两端的空白。删除字符串前面的空白:lstrip(),同时删除前后两端的空白:strip()
在实际程序中,这些剥除函数常量最常用于在存储用户输入前对其进行清理。
2.3.5 使用字符串时,避免语法错误。
例如,在使用单引号括起的字符串中,如果包含撇号,就将导致错误。
运行后,提示:
从上述输出可知,错误发生在第二个单引号后面。其实,从上面的代码中也能看出语法错误,代码的颜色显示不一样。
2.4 数字
2.4.1 整数
- 在编程中,经常使用数字来记录游戏得分,表示可视化数据,存储web应用信息等。
整数执行加(+)减(-)乘(*)除(/)
执行后:
- 两个乘号,表示乘方运算
运行后:
- 支持运算次序,可在同一个表达式中使用多种运算。还可以使用括号来修改运算次序。
运行后:
2.4.2 浮点数
带有小数点的数字,都为浮点数。
运行后:
但是有时候哦,小数位数可能是不确定的。
没有关系,所有的语言都存在这种问题。目前可以暂时忽略,后面可以学会处理多余小数位的方式。
2.4.3 使用函数str()避免类型错误。
你经常需要在消息中使用变量的值,例如,你要祝福生日快乐:
运行后,会引发错误:
这个是一个类型错误,意味着python无法识别你使用的信息。
在字符串中使用整数时,需要显示的指出你希望python将这个整数用作字符串,为此,可调用函数str(),它可以让python将非字符串值表示为字符串。改写如下:
运行的结果如下:
2.5 注释
在大多数编程语言中,注释都是一项很有用的功能。
2.5.1 如何编写注释
在python中,使用井号(#)来作为注释。井号后面的内容会被python解释器忽略。
解释器,忽略了第一行,只执行第二行。
2.5.2 编写什么样的注释?
- 编写注释的主要目的是阐述代码要做什么,以及是如何做的。
- 以清晰的自然语言对解决方案进行概述,可以节省很多时间。
- 要成为专业的程序员或者与其他程序员合作,必须编写有意义的注释。
- 如果不确定是否要编写注释,就问问自己,找到合理的解决方案之前,是否考虑了多个解决方案。如果答案是肯定的,就编写注释对你的解决方案进行说明。
2.6 Python之禅
Tim Peters编写的python 之禅,在解释器中执行命令:import this。
简单来说,就是简约而清晰的理念。
2.7 小结
- 如何使用变量;
- 如何创建描述性变量名以及如何消除名称错误和语法错误;
- 字符串是什么,以及如何使用小写、大写、首字母大写方式显示字符串;
- 使用空白来显示整洁的输出,以及如何提出字符串中多余的空白;
- 如何使用整数和浮点数;
- 使用数值数据时需要注意的意外行为;
- 如何编写说明性注释,让代码对你和其他人来说更容易理解;
- 让代码竟可能简单的理念。