Python课程学习-ch2基本数据类型
导学
在正课开始之前对所要学习的内容进行梳理。
主要内容–7个部分
变量
数字类型
字符串
基本输入输出
编程规范
编码格式
两个实例
目标和要求
在本节,要求完成第一个实训作业:turtle作品,会阅读官方文档。
下面我们就按照上面的规划进行深入的学习——>
2.1 变量
下面给出本小节思维导图
变量的定义
- 在编程语言的学习中,变量是最基础的东西。
- 与其他语言不同的是,Python是一个弱类型语言,不需要事先声明变量名及其类型,直接赋值即可创建各种类型的对象变量。
- 使用type(x)查看对象类型
Python采用基于值的内存管理方式
- 为不同变量赋予相同的值,那么这个值在内存中只有一份,多个变量执行同一块内存地址
- 使用
id(x)
获取对象x的内存地址
变量的命名规范
一个规范的变量名应该符合以下6条规则(最后一条是更深的要求):
- 以字母、下划线开头,后面可以跟任意字母、下划线、数字
- 变量名不能以数字开头
- 变量名对字母大小写敏感
- 不可以有空格以及标点符号
- 不可以使用关键字或者内置函数作为变量名
- 作为一名合格的程序员,变量的命名要与其含义相关,尽量不要使用简单的字母命名,一时的便利会带来长久的麻烦。(所以要学号英语哦)
查看关键字和内置函数
上面我们已经提到变量的命名规则,其中有一条是不可使用关键字和内置函数。在实际的编程中,我们可以一些帮助文档进行查看。
- 关键字的查看:
help('keywords')
注:使用import keyword
—> keyword.kwlist
也可以看到。
使用len()可以得到关键字的个数:35个
(len属于内置函数,解释器启动既有;而内置模块需要import)
- 内置函数的查看:
import builtins
—>dir(builtins)
ps:该模块提供对Python的所有“内置”标识符的直接访问
常量
- 常量在指定初始值后不再改变
- 一般使用大写字母表示
- 遵循常量阅读,使得代码具有良好的可读性(PI = 3.14等)
2.2数字类型
本小节思维导图
ps:本节要求掌握基本数字类型的表示与进制之间的转换
- Python中的数据类型很多,比如数字、字符串、列表、字典、文件等基本数据类型
- 数据类型和值相关,而不是和变量相关。(基于值的内存管理模式)
- 数字类型包括:整数、浮点数、复数
整数、浮点数、复数
整数和浮点数
- 整数和浮点数的差异在于是否包含小数部分
- 浮点数必须包含一个小数点,否则会被当做整数
-
int
表示整数;float
表示浮点数
浮点数补充——>
浮点数有两种表示形式:
- 十进制形式,例如:3.14 5.21等
- 科学计数形式:5.21e2或5.21E2 就是指5.21* 10^2
注:只有浮点数可以使用科学计数的方法
并且如果运算是既有整数又有浮点数,结果为浮点数。
复数
复数的虚部用j或J表示:a=3+4j
使用 x.real
和 x.imag
获取实部、虚部的数值,以浮点数的形式输出。
进制之间的转换
整数的表示方法
一个整数可以采用多种进制进行表示:
- 十进制
- 二进制 0b或者0B
- 八进制 0o或者0O
- 十六进制 0x或者0X
不同进制之间可以进行转换(使用Python的内置函数)
int(x, d)
—> 接收的是字符串x,转换d进制的整数为十进制bin(x)
—> 将十进制数x转换为二进制oct(x)
—> 将十进制数x转换为八进制hex(x)
—> 将十进制数x转换为十六进制
内置模块
Python中含有很多标准库,也就是封装好的已有的代码合集。
Python中的标准库被组织为模块,相关的函数和数据类型被分组封装在不同的模块中,需要使用时需要进行模块的导入
内置模块–math
import math
导入模块
注:使用dir(math)
查看math模块下的内置函数
内置模块–random
random,random()
随机生成一个实数,在[0, 1]范围random.randint(a, b)
用于生成一个指定范围的整数。(前闭后开)
2.3 字符串
下面给出本节思维导图
- 字符串也是Python中最常用的数据类型
- 文本就是由一些列字符组成的字符串
字符串的表示
字符串可以使用单引号(‘…’) 或者双引号(“…”) 表示—->
对于字符串中含有引号的形式,需要进行特殊处理:—->
- 第一种方法:使用不同的引号将字符串括起来。
- 第二种方法:使用三引号
- 第三章方法:使用转义字符\,在引号之前使用\进行转义
注:使用\n可以实现换行输出
原始字符串的使用—->
如果我们输出的字符串含有\符号,那么处理可以使用转义字符外,还可以在字符串前加上r,就表示原始字符串,不会把\当成特殊符号。
字符串的常用操作
思维导图如下:
字符串的索引
在Python中,不支持单字符类型,单字符也是作为一个字符串使用。
可以使用索引访问单个字符。
注:通过[x]获取对应位置的单字符,下标从0开始
字符串的拼接
这是最基础的字符串操作:+
常用的字符串方法
什么是方法?对象的行为称为方法,方法只能用于定义好的对象,函数是独立的操作。
调用对象的方法:对象名.方法名
s.lower()
转换为小写形式s.upper()
转换为大写形式s.replace('old', 'new')
内容的替换s.find(p)
查找p,存在返回下标,不存在返回-1
注:通过上例我们可以看见,使用方法后不会改变对象的原始内容
's'.join(str)
以指定的字符‘s’作为分隔符,将字符串str连接成一个新的字符串str.split(s,[num])
以s为指定的识别分隔符,将str字符串进行分割,num为分割次数。(无参数,默认按照空格进行分割)
注:通过上例我们可以看到,str.split(s, [num])会在字符串里寻找s,并以此为分隔符进行分割,分割过的字符串以引号隔开;而’s’.join(str1)则是将s作为分隔符加入到字符串,形成一个整体。
如果使用str.split()则会自动以空白字符为分隔符。
reversed()
内置函数:字符串置逆
注:在进行分割后再使用置逆,会以分割的部分为整体进行,而不是以一个字符。
字符串的转换
字符串与数字中间的转换
str(x)
:将数字转换为字符串int(x)
:将字符串x转换为数字int(x,d)
:将d进制的字符串转换为数字
注:在使用int(x,d)指定d进制时要符合规范,例如:8进制时不可出现8以上数字。
字符串与字符值
在内存,字符是以整数值的形式进行存储的,具体值取决于编码规则。
ord()
:返回字符的值chr()
:返回给定编码指定的字符
补充内容:删除字符串里的空格(几种方法)
2.4 输入、输出
本节思维导图如下:
输入是Input,输出是Output,所以我们把输入输出简写为IO。
用户和计算机程序的交互离不开输入输出。
输出:Output
最基本的输出:
print()
作用:以字符的形式向控制台输出结果
print() 可以接受一个或多个字符串,以逗号进行分割,输出时会使用空格进行替代
输出格式:
(使用格式限定符对输出的格式进行美化)
- %形式
- str.format()形式
%形式的输出
- %d 格式化一个整数
- %f 格式化一个浮点数
- %s 格式化一个字符串
注: 和C语言类似,小数点后为精度,前为宽度,不足以空格替。
但是和C语言不同的是在字符串之后的替换中没有逗号,而是**使用%**进行。
注:对应于多个替换,需要使用上图格式。
“{}”.dormat(str)格式化字符串函数
{}叫做替换槽,其中可以指定填充的字符、对其方式、替换字符的宽度。
其中,^ < > 分别代表中间对齐、左对齐、右对齐
如果是数字,可以在槽里指定数字的格式
注:使用:b,o 指定进制格式。
输入:Input
最基本的输入:input
- 作用:从控制台接收用户信息的输出,并返回字符串
- 格式:
变量 = input(<提示信息>)
- 注意:接收到的变量属于字符串形式
格式的转换
我们知道通过input接收的变量为字符串格式,所以如果需要使用数字类型,要使用前面的转换方法。
eval()评估函数
作用:执行一个字符串表达式,并返回计算值
本质:剥离引号
2.5 代码规范
编程语言从某种意义上来说作为一种工具,需要遵循一套编码规范
在PEP8中有具体的描述:https://www.python.org/dev/peps/pep-0008
规范1:缩进
- 在Python里,使用缩进来体现代码之间的逻辑关系。
- 同一级别的代码块的缩进必须相同。
- 一般使用4个空格或者一个Tab作为一个缩进量。
规范2:注释
- 单行注释:以#开头,其后的内容为注释内容
- 多行注释:使用三个单引号或者双引号作为开始和结束标识
注:前面我们知道,三引号也可以作为字符串的标识
规范3:换行
如果一个语句太长,可以使用换行符\进行换行
规范4: 必要的空行或空格
- 运算符两侧、逗号后面建议加一个空格。
- 不同功能之间的代码块建议之间加一个空行
2.6 字符编码
常用的编码格式:
- ACSII编码:最早只有127个字符被编码到计算机里,也就是大小写英文字母、数字和一些符号。这个编码表被称为ASCII编码。
- GB2312编码:处理中文显然一个字节是不够的,至少需要两个字节,而且还不能和ASCII码冲突,所以中国制定了GB2312编码用于处理中文。
- Unicode编码:使用两个字节表示一个字符,把所有的语言统一到一个编码格式下。
- UTF-8编码:为了节省空间,出现了“可变长编码”即UTF-8编码,UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节。常用的英文字母为1个字节,汉字通常为3个字节,很生僻的字符我为4-6个字节。
注:一般我们使用记事本编写代码时,如果使用了中文,记得设置为UTF-8的编码格式。
在开头使用:# coding=utf-8
即可进行声明
解码和编码:
综合示例程序:芳名和芳龄
1 | first_name = input("请输入你的姓氏:") |
注意点:
1、print之中的不同字符串可以使用逗号隔开,不用+
2、进制的转换输出可以直接使用%o,%d,%x。
3、编码格式时要使用引号”GBK”