下面我们结合代码,逐一介绍Python中的几种基本数据类型。
Python中的整数型(int)所表示的数据就是数学意义上的整数,如10、0、-3等。
【示例4-8程序】
在编辑器中输入如下示例程序并运行。
第1行:创建一个变量x,并通过等号赋值为123。
第2行:使用print函数输出这个变量的值。
第3行:使用type函数查看这个变量的数据类型并输出。
第4行:输出数字456的数据类型。
前面提到过,Python中变量的数据类型由赋给变量的值所决定。赋值一个整数,这个变量的数据类型就是整数型。
保存并运行程序,输出结果如图4-9所示。<class 'int'> 表示数据类型是整数型。同时可以看到,不赋值给任何变量的一个单独的数字也是有数据类型的。
图4-9 示例4-8运行结果
Python中的浮点型(fl oat)所表示的数据就是我们通常说的小数,如3.14、-0.5等。
【示例4-9程序】
在编辑器中输入如下示例程序并运行。
第1行:创建一个变量x,并通过等号赋值为123.456。
第2行:使用print函数输出这个变量的值。
第3行:使用type函数查看这个变量的数据类型并输出。
第4行:输出数字0和0.0的数据类型。
这里特别对比了一下0和0.0的数据类型,看看它们是否相同。
保存并运行程序,输出结果如图4-10所示。从结果中可以看出,0是整数型,而0.0是浮点型。
图4-10 示例4-9运行结果
与上面两种表示数字的数据类型不同,布尔型(bool)只有两个值:True和False,分别代表“真”和“假”,作用是表示一个条件是否成立。
【示例4-10程序】
在编辑器中输入如下示例程序并运行。
第1行:创建一个变量x,通过等号赋值为True。
第2行:输出变量x。
第3行:使用type函数查看变量x的数据类型并输出。
第4行:输出False的数据类型。
保存并运行程序,输出结果如图4-11所示。从结果中可以看出,True和False的数据类型都是布尔型。
图4-11 示例4-10运行结果
字符串型(str)用来表示文本,其特点是被引号括起来。表示字符串的引号可以是单引号、双引号或三引号(三个单引号或三个双引号),但必须是英文字符的引号。
【示例4-11程序】
在编辑器中输入如下示例程序并运行。
第1行:创建一个变量x,通过等号赋值为’Crossin'。
第2行:输出变量x。
第3行:使用type函数查看变量x的数据类型并输出。
第4行:输出"Python"的数据类型。
第5~8行:通过三引号创建一个多行的字符串变量s。
第9、10行:输出变量s及其数据类型。
保存并运行程序,输出结果如图4-12所示。从结果中可以看出,不管是单引号、双引号还是三引号,其数据类型都是字符串型。
图4-12 示例4-11运行结果
相比前面几种数据类型,空值(NoneType)比较特殊,我们先让ChatGPT来讲讲。
提问:讲解一下Python中的None和NoneType。
ChatGPT:
在Python中,None是一个特殊的常量,表示一个空值或缺失值。同时,None也是一个对象,属于NoneType类型。这个数据类型只有一个实例,即None。
NoneType是Python中的一种内置数据类型,它表示没有值的对象。可以使用type()函数来获取一个对象的数据类型,如type(None)会返回<class 'NoneType'>。
在Python中,NoneType类型的对象只有一个实例,即None。这意味着在使用None时,可以直接使用“is”运算符来比较两个对象是否相等,而不必使用“==”运算符。例如,if x is None:可以判断变量x是否为None。
同时,需要注意的是,当一个函数或方法没有返回值时,它会返回None。这意味着如果一个函数没有显式地使用return语句返回结果,那么它的返回值将为None。这是Python中常见的情况之一。
在Python程序中,None常常用于表示一个变量或值的缺失,或者用于初始化变量。使用None可以使代码更加清晰和易于维护,避免了在程序中使用特定的值来代表缺失情况,如使用-1或空字符串等。同时,NoneType类型也是Python语言中的一个重要概念,需要程序员熟悉和理解。
从ChatGPT的讲解中可以看出,NoneType只有一个值:None,用来表示什么都没有的空值。
下面用一个简单的例子来看看None这个特殊的值。
【示例4-12程序】
在编辑器中输入如下示例程序并运行。
第1行:创建一个变量x,通过等号赋值为None。
第2行:输出变量x。
第3行:使用type函数查看变量x的类型并输出。
保存并运行程序,输出结果如图4-13所示。
图4-13 示例4-12运行结果
Python为字符串提供了很多操作,其中很常用的一类操作就是字符串格式化。下面我们将结合ChatGPT来了解一下字符串格式化的具体用法。
提问:什么是字符串格式化,它有什么作用?
ChatGPT:
字符串格式化是指将一些变量或值以一定的格式嵌入一个字符串中,以生成一个新的字符串。它是在编程中常用的一种字符串操作技术。
字符串格式化的作用是可以将数据以特定的格式呈现出来,使其更具可读性和易于理解。比如在输出日志信息、生成报告、格式化日期时间等方面都可以用到字符串格式化。
在不同编程语言中,字符串格式化的方式和语法可能有所不同,但它们都可以完成类似的功能。一些常见的字符串格式化语法包括使用占位符、格式化字符串、模板字符串等。
如ChatGPT所述,字符串格式化的主要目的就是将变量或数值嵌入固定的字符串格式当中,拼接出所需要的文字。下面再结合实例来看一看Python中字符串格式化的几种方法。
提问:结合代码说明Python中有哪些字符串格式化的方法。
ChatGPT:
在Python中,常用的字符串格式化的方法有以下几种。
1.使用百分号(%)进行格式化
这种方法使用百分号(%)作为占位符,然后在字符串中使用一些特定的字符来表示不同的数据类型,如%s表示字符串,%d表示整数等。例如:
输出结果为:My name is John and I'm 30 years old.
2.使用字符串的format()方法进行格式化
这种方法使用一对花括号({})作为占位符,可以在花括号中指定变量的位置和格式。例如:
输出结果为:My name is John and I'm 30 years old.
3.使用f-string进行格式化
这是Python 3.6及以上版本新增的一种字符串格式化方法,它使用以字母f开头的字符串作为模板,可以在其中使用一对花括号({})表示变量或表达式。例如:
输出结果为:My name is John and I'm 30 years old.
以上三种方法都可以实现字符串格式化,选择哪种方法取决于个人喜好和具体的应用场景。
我们将ChatGPT提供的三段代码合并一下。
【示例4-13程序】
在编辑器中输入如下示例程序并运行。
第1行:创建一个字符串变量name。
第2行:创建一个整数变量age。
第3行:使用百分号进行格式化并输出。
第4行:使用format方法进行格式化并输出。
第5行:使用f-string进行格式化并输出。
保存并运行程序,输出结果如图4-14所示。可以看到,三种格式化方法的结果是一样的,都可以成功把不同数据类型的变量嵌入字符串当中。但相比之下,f-string方法更加便捷易用。
图4-14 示例4-13运行结果
在开发中,经常会遇到数据类型不满足需要,必须转换成其他数据类型的情况。比如通过input函数获取的用户输入都是字符串型,如果要对输入数值进行计算,必须先转换成整数型或浮点型。
下面让ChatGPT来演示一下不同数据类型之间的相互转换。
提问:演示一下Python中基本数据类型之间的相互转换。
ChatGPT:
在Python中,可以使用一些内置的函数来进行基本数据类型之间的转换。以下是一些常见的转换示例。
1.整数和浮点数之间的转换
2.字符串和整数/浮点数之间的转换
3.布尔值和整数之间的转换
以上是一些常见的基本数据类型之间的转换示例。需要注意的是,有些数据类型之间的转换可能会出现精度丢失或溢出等问题,需要谨慎处理。
我们将ChatGPT提供的三段代码合并,保存并运行程序,输出结果如图4-15所示。可以看到,通过int、fl oat、str、bool几个函数可以实现相应的数据类型转换。
图4-15 ChatGPT演示代码运行结果
在进行数据类型转换时,有以下几点需要注意。
(1)浮点数转换整数时,小数点后的部分会被直接舍去,而不是四舍五入。
(2)字符串转换数字时,字符必须符合数字规范,否则会引起报错。
(3)布尔值的True相当于整数1,False相当于整数0。
(4)非零、非空值转换布尔值的结果都是True,零、空值、空集合转换布尔值的结果都是False。
下面来看一个新手经常会遇到的数据类型转换问题。
提问:"3.14159"转换为整数为什么会报错?
ChatGPT:
将字符串"3.14159"转换为整数时会报错,是因为该字符串表示的是一个浮点数,而在Python中,使用int()函数将一个浮点数转换为整数时会触发ValueError错误。
如果要将一个字符串表示的浮点数转换为整数,可以先将其转换为浮点数,再将浮点数转换为整数。例如:
在上面的代码中,先使用float()函数将字符串"3.14159"转换为浮点数3.14159,再使用int()函数将浮点数3.14159转换为整数3。
将ChatGPT给出的代码复制到编辑器中,保存并运行,结果如图4-16所示。可见此方法可以成功将一串小数字符串转换为整数。在开发中,如果遇到类型报错,可以通过前面提到的type函数输出引起报错的变量数据类型,检查是否符合要求。
图4-16 ChatGPT演示代码运行结果