Logo

郎哥编程

基础数据类型

2019-10-07 215

在前面的课程中,我们谈到了基础数据,基础数据就是不可再分割的数据。例如:39.7(一个小数)、39(一个整数)、a(一个字符)、True(一个真值)。这些数据是不可再分割的数据,称为基础数据。其它数据都是由这些基础数据组合而成的。

01.png

我们现在接触到的基础数据有小数、整数、字符、逻辑值。小数、整数、字符同学们应该比较了解了。

在这里主要说一说逻辑值,逻辑值也称为布尔值。布尔值只有真和假两个值,在Python语言中,布尔值的真值用英文单词True表示,布尔值的假值用英文单词False表示。在日常生活中,我们也会经常使用到布尔值:说这件事情是真的,就用到了布尔值的真值;当说这件事情是假的,就用到了布尔值的假值。

02.png

在Python语言中,小数和整数统称为数字类型;布尔值被称为布尔类型;字符被称为字符串类型,字符串是有一个或多个字符组合而成的,例如下面的字符组合都是字符串。

03.png

在Python语言中,如果我们声明了一个整数变量,Python会为整数变量分配可以存储整数的存储空间;如果我们声明了一个小数,Python会为小数分配可以存储小数的存储空间;如果我们声明了字符串,Python会根据字符串含有的字符数来分配存储空间。

声明不同的数据变量,Python分配的存储空间是不同的。因此Python需要对基础数据进行分类,不同类型的数据分配不同的存储空间。

04.png

在Java、C等其它编程语言中,整数和小数类型的存储空间是固定的,当整数或小数的数值非常大,超过了存储空间可存储的最大值时,就会发生数值存储溢出错误。

但在Python语言里,整数和小数的存储空间是动态变化的,存储空间会根据数值的大小自动扩充,因此小数和整数的存储基本不存在数值存储溢出错误。

05.png

Python语言把基础数据类型分为整型、浮点型、布尔型、字符串类型和复数类型,复数类型在这门课程中不涉及。

其中整数属于整型,小数属于浮点型,布尔值属于布尔型,字符属于字符串类型。

06.png

在Python语言中,小数用float表示,整数用int表示,字符串用str表示,布尔用bool表示。

虽然Python对不同数据进行了分类,但是我们在声明变量时,不需要声明变量的数据类型,Python会根据变量的值来自动给变量赋予类型。

07.png

在上面的代码中,声明了num、fnum、bnum、strTemp四个变量。num被自动赋予为整型,fnum被自动赋予为浮点型,bnum被自动赋予为布尔型,strTemp被自动赋予为字符串类型。

Python提供了type函数用于获取一个变量的数据类型。当在程序中需要明确一个变量的数据类型时,可以使用type函数。

08.png

整型和浮点型都是用来存储数值的。那么,Python的整型和浮点型能存储多大的数和多小的数呢?可以这么说,Python可以表示足够大的数和足够小的数,这一点我们无需担心。

下面我们再来讲一下字符串。

字符串是 Python 中最常用的数据类型。字符串和其它数据类型的区别是字符串的值要放在单引号’’、或者双引号””、或者三引号’’’之内。

09.png

在案例3的代码中,声明了a1、a2、a3三个字符串类型的变量,a1使用单引号,a2使用双引号,a3使用三引号。使用三引号可以将多行内容赋值到字符串变量。

案例3使用print函数输出了a1、a2和a3字符串的所有内容,如果我们需要输出部分内容呢?例如:输出a1的第一个字符”H”,该如何做呢?

10.png

Python提供了访问运算符“[ ]”,可以用来访问字符串的单个字符或多个字符。例如案例4的代码可以输出字符串的第一个字符。

11.png

案例4运行结果图如下:

12.png

在案例4中,a1[0]是访问a1字符串的第一个字符,访问运算符“[ ]”里面的0是a1字符串的索引值。

索引是一个整数序号,索引从0开始,索引的长度是字符串的长度,通过索引序号,我们可以定位字符串的任意一个字符。

13.png

上图中字符串a的值是“think”,a的索引序号是从0开始到4结束。关于索引序号的范围,同学们可能会有点困惑,字符串“think”共有5个字符,索引范围应该是0至5,为什么是0至4呢?这是因为索引序号是从0开始的,从0数到4正好是5个字符。

案例5的代码分别输出a2字符串的“P”、“t”、“n”字符。

14.png

现在我们已经学会了使用访问运算符“[ ]”访问字符串的任意一个字符。但在一些情况下,可能需要访问字符串的一个子串,子串就是字符串中一组任意连续的字符。

15.png

要访问字符串的子串,可以使用访问运算符“[:]”,该运算符在一对中括号里有一个英文符号“:”,用于标示子串的起始索引和终止索引,在“:”左侧是子串的起始索引,在“:”右侧是子串的终止索引。该运算符访问包括起始索引在内到终止索引(不包括终止索引)的所有字符。

16.png

例如:a1字符串的值是“Hello World!”,现在需要访问子串“World”,该如何处理呢?

要访问a1字符串的子串“World”,可以编写下面的代码:

a1[6:11]

其中“:”左侧的数字6是字符“W”在a1字符串的索引序号,“:”右侧的数字11是字符“d”在a1字符串的索引序号加1,由于终止索引不包含在截取的子串内,因此字符“d”的索引序号需要加上1。a1[6:11]将会截取a1字符串中起始索引为6,终止索引为11的子串。

17.png

案例06的输出结果如下图所示:

18.png

字符串还有一种比较重要的操作就是判断一个子串是否在已知的字符串中。

例如:

s1 = “张明,赵虎,马汉,李云龙,王义”

字符串s1的值包含了5位同学的名称,现在要求判断子串“赵虎”是否在s1中。

19.png

要判断一个子串是否在已知的字符串中, 可以使用成员运算符“in”和“not in”来判断。成员操作符“in”和“not in”用于判断一个子串是否包含或不包含在已知的字符串中,若包含返回True,否则返回False。

20.png

21.png

运算符“in”用于判断一个子串是否包含在已知字符串中。前面要求判断字符串“赵虎”是否在s1中,实现代码如下:

22.png

在案例07的代码中,使用if-else结构来判断字符串“赵虎”是否在s1中,if语句的条件表达式:

"赵虎" in s1

使用了成员运算符“in”,运算结果是布尔型。用于判断运算符左边的字符串,是否包含在运算符右边的字符串中,如果子串包含在字符串中,运算结果返回True,否则返回False。

运算符“not in”用于判断一个子串是否不包含在已知的字符串中。前面的代码也可以用成员运算符“not in”来实现:

23.png

使用成员运算符“not in”替换运算符“in”后,需要修改if语句块和else语句块内的代码,因为判断逻辑改变了,if语句块内处理的是字符串“赵虎”不在s1字符串中,else语句块内处理的是字符串“赵虎”在s1字符串中。


课程小结

Python的基础数据类型有数字类型、字符串类型和布尔类型。其中数字类型又分为整型、浮点型和复数型,整型表示整数,浮点型表示小数,复数型在本课程中暂不涉及;字符串类型是有一个或多个字符组合而成的数据;布尔类型只有两个值,真值或假值。

本节课还讨论了字符串的访问和判断操作。字符串的访问操作主要是使用访问运算符“[ ]”和“[ :]”,访问字符串的单个字符或子串。字符串的判断操作是使用成员运算符“in”或“not in”,判断一个子串是否在已知的字符串中。


课后练习

1、小明要编写一个登记个人信息的程序,个人信息包括姓名、年龄、身高(单位米,保留两位小数)、年收入(单位分),小明需要在程序中声明4个变量来存储上面的个人信息。请给出这4个变量的数据类型。

2、已知字符串:

s1 = “我要学习Python编程”

s2 = “学习编程需要数学知识吗?”

请按下面的要求编写程序:

(1)拼接s1和s2,并用print函数输出拼接后的新字符串;

(2)在s1中查找子串“Python”;

(3)使用print函数输出s1的子串“Python”。

代码在线纠错(通义千问 qwen-max)

支持粘贴多个代码文件,提交后由阿里云通义千问自动分析代码漏洞、语法错误、逻辑问题并给出修改建议。
您已解锁 AI 代码纠错功能,可正常使用!

评论区

登录 后发表评论
暂无评论