写点什么

Python 语法之数据类型

作者:向阳逐梦
  • 2022 年 9 月 20 日
    四川
  • 本文字数:5623 字

    阅读完需:约 18 分钟

之前我们已经介绍了变量、变量的创建和赋值,以及变量的命名规则等等。今天我们继续来介绍 Python 的数据类型:数字类型布尔型字符串类型。我们用之前的例子来进一步讲解:


name,age,weight = '女娲',18,49.99print(name)print(age)print(weight)
复制代码


我们仔细来看这个语句:



我们看到,在我们对变量进行赋值时,有的赋值内容有引号,有的没有引号,这其实就是因为这些信息属于不同的数据类型。我们看到数字构成的信息是没有引号的,18 和 49.99 均是由数字构成,都没有引号,就像人类所了解的数学有整数、小数、分数等各种类型一样。在计算机的世界里,也有不同的数字类型,比如 18 就是整数,在 Python 中,我们用 int 来表示整数;49.99 是浮点数,在 Python 中用 float 表示;也就是说,我们人类所理解的整数,在计算机的认知中,是整型 int,而人类所理解的小数,在计算机中则是用浮点型 float 表示。

1.数字类型


(1)int


  • 相传在上古时期,老百姓无法分辨粮食和草药,只能依靠打猎维持生存,即使生病也没办法医治,神农氏因为想改变这个局面,亲自上山采药,亲口尝各类草药,辨别药性。神农氏踏遍了山野,尝了七七四十九天,发现了麦、稻、谷子、高粱能充饥,并且尝出了 365 种草药,还编写了《神农本草》。

  • 在这个故事中,我们看到了 2 个整数,七七四十九天和 365 种草药。


day = 49number = 365print(day)print(number)
复制代码


  • 根据变量命名规则,我们将整数 49 赋值给变量 day,整数 365 赋值给变量 number。 整数为正数或负数,没有小数,长度不限。这些都是整数哟!


#光速,每秒30万公里speed_of_light = 300000   #地球质量,5.97×10²⁴kgmass_of_earth = 5970000000000000000000000#地球最深峡谷的海拔,10994m,因在地下,我们这里用负数表示altitude_of_mariana_trench = -10994print(speed_of_light)print(mass_of_earth)print(altitude_of_mariana_trench)
复制代码


  • 我们可以通过下划线_将有含义的英文连接起来,让我们的代码显得规范。(2)float

  • 浮点数是包含小数的正数或负数,就是我们人类世界中的小数。

  • 比如大家非常熟悉的 π:pi = 3.1415926,π 是特殊字符,不能用作变量名,因此我们这里用谐音 pi 来代替。


pi = 3.1415926negative_pi = -3.1415926
print(pi)print(type(negative_pi))
复制代码


(3)运算符


  • 我们大家都知道数字涉及到加减乘除、比大小等各种运算,Python 中也有这些运算哦,这就是 Python 的运算符,Python 中运算符包括算术运算符、赋值运算符、比较运算符和逻辑运算符,我们逐一来介绍。

  • (3.1)算数运算符

  • 我们再来回顾下神农尝百草的故事,神农氏踏遍了山野,尝了七七四十九天,发现了麦、稻、谷子、高粱能充饥。

  • 这里面的七七十九天,就可以用算术运算符来表示哦,Python 中用*来表示两数相乘,具体语句是:


day1 = 7day2 = 7day = day1 * day2print(day)
复制代码


我们看到最终打印出的是 49,Python 中的算术运算符,我们可以收藏下方表格!



(3.1.1)+(加)运算符


a = 1b = 1
c = 3.14d = 2.71
print(a + b)print(c + d)
复制代码


(3.1.2)-(减)运算符


a = 1b = 1
c = 3.14d = 2.71
print(a - b)print(c - d)
复制代码


(3.1.3)*(乘)运算符


a = 2b = 1
c = 3.14d = 2.71
print(a * b)print(c * d)
复制代码


(3.1.4)/(除)运算符


a = 2b = 1
c = 3.14d = 2.71
print(a / b)print(c / d)
复制代码


(3.1.5)%(取模)运算符


a = 10b = 3
print(a % b)
复制代码


(3.1.6) ** (幂)运算符


a = 10b = 3
print(a ** b)
复制代码


(3.1.7)//(取整)运算符


a = 10b = 3
print(a // b)
复制代码


(3.2)赋值运算符下面,我们一起来看下赋值运算符,在变量的赋值中,我们提到了 = 的含义是赋值,在 Python 中赋值运算符 = 可以和算术运算符进行结合。



(3.2.1)=运算符= 运算符和变量的赋值是一样的。


a = 3  # =运算符print(a) 
number = 365number += 30 # +=运算符print(number)
a = 3a -= 3 # -=运算符print(a)
a = 3a *= 3 # *=运算符print(a)
a = 3a /= 3 # /=运算符print(a)
a = 10a %= 3 # %=运算符print(a)
a = 10a **= 3 # **=运算符print(a)
a = 10a //= 3 # //=运算符print(a)
复制代码


(3.3)比较运算符


  • 在神农品尝的 365 种草药中,假设有 50 种可以作为粮食食用,有 200 种是对人类疾病有益的药材,那么到底是药材的数量多还是粮食的数量多呢,这就涉及到比较啦,在人类的认知中,这种比较非常简单:200 >50,那么在 Python 的世界中,这种比较是如何表达的呢,比较运算符就可以解决这个问题!


food_number = 50drug_number = 200print(food_number < drug_number)
复制代码


因为 200 是大于 50 的,因此 print() 打印的是 True,就是这种比较的结果为真!比较运算符返回的值是 True 或者 False。



==(等于)比较运算符 和 = 赋值运算符的区别:



  • 在我们平时的认知中,等于就是用等号 = 来表达,但是在计算机中,等于要用 2 个等号来表达,单个等号 = 的含义是赋值哦,这一点,大家要熟记哈!


a = 1b = 2
print(a == b)
复制代码


(3.4)逻辑运算符


  • 神农告诉人们,麦、稻、谷子、高粱等 50 种植物可以作为粮食充饥,蒲公英、黄芪、三七等 200 种植物可以作为药材,现在我们想判断下粮食的数量小于 60 并且药材的品种大于 150,是否是真实的,该如何判断呢?在 Python 中是通过逻辑运算符 and 来实现的,我们来看下方语句:


food_number = 50drug_number = 200print(food_number < 60 and drug_number > 150)
复制代码


我们看到打印出的内容是 True,and 运算符表示当 food_number < 60 和 drug_number > 150 都为真时,返回 True,下图是常见的逻辑运算符,大家可以保存下哦!



and


a = 4b = 8
print(a > 3 and b < 10)print(a > 3 and b < 6)
复制代码


  • 我们看到当 a 赋值为 4,a > 3 为真,b 赋值为 8,b < 10 为真,b < 6 为假,逻辑运算符 and 当 a 和 b 都为真的时候,才会返回 True,因此第一个 print() 返回值为 True,第二个 print() 返回值为 False。

2.布尔型

  • 我们在进行逻辑运算和比较运算的时候,得到的结果为 True 或 False。在 Python 中,用 True、False 表示布尔值。布尔值可以用 and、or 和 not 运算。2.1 and 运算布尔值的 and 运算就是真真为真,当 and 连接的两个布尔型都是 True 的时候,为 True ,一真一假和两假都为假。


print(True and True)print(True and False)print(False and False)
复制代码


2.2 or 运算布尔值的 or 运算就是假假为假,当 and 连接的两个布尔型都是 False 的时候,为 False ,一真一假和两真都为真。


print(True or True)print(True or False)print(False or False)
复制代码


2.3 not 运算布尔值的 not 运算则表示非,非真就是假,非假就是真!


print(not True)print(not False)
复制代码

3.字符串类型

通过前面的介绍,我们知道了没有引号的数字类型是整数和浮点数,那么用引号包含起来的数据类型是什么呢?Python 中,以单引号 ' 或双引号 " 括起来的任意文本就是字符串啦,上图中 '女娲' 的数据类型就是字符串,大家这里需要注意的是,只要被引号包含的任意文本都是字符串!例如:'123456' "hello world!"。' 和 " 不是字符串的一部分,只是一种表示方式。


print('hello world!')print("hello world!")
复制代码


如果字符串横跨多行,可以使用三个单引号或三个双引号将字符串括起来。三个单引号:


print('''Beautiful is better than ugly.Explicit is better than implicit.Simple is better than complex.Complex is better than complicated.Flat is better than nested.Sparse is better than dense.''')
复制代码


三个双引号:


print("""Beautiful is better than ugly.Explicit is better than implicit.Simple is better than complex.Complex is better than complicated.Flat is better than nested.Sparse is better than dense.""")
复制代码


整型和浮点数可以赋值给变量,字符串也是可以赋值给变量的:


say_hi = "hello world!"
print(say_hi)
复制代码


3.1 索引中国古人一直有观天象的习俗,通过观天象,来获得对季节、气候、甚至是国家命运的认知。现代,通过科学家们的努力,我们知道了浩瀚宇宙的深邃,知道了八大行星的存在,海王星(neptune),八大行星之一,假设我们在 Python 的世界中,可以重见神农,让我们用 Python 的语言为神农介绍下海王星的字母构成吧!这就要运用我们下方为大家介绍的内容:索引。在 Python 中,字符串中的字符可以通过索引来提取。可以从前往后索引,也可以从后往前索引。索引语法是:变量[下标],这里的下标是由数字表示,代表所要索引的字符在变量中的位置。当从前往后索引时,下标从 0 开始。当从后往前索引时,下标从 -1 开始,如下图所示!



star = "NEPTUNE"
print(star[0])print(star[-1])print(star[6])print(star[-7])
复制代码


大家来自己试一下下面这个题目:introduce_star = 'This is the neptune',将变量中所有的 e 打印出来!(可以试下从前向后索引,也可以试下从后向前哦)3.2 切片我们看到通过索引,只能提取单个字符,神农说,难得来一趟,想多认识一些字符,这个时候怎么办呢?我们可以通过切片来提取变量的多个字符,我们一起来看下切片怎么使用。切片语法是:变量[头下标:尾下标](不包括尾下标对应的元素)。当不指定头下标和尾下标时,获取的是整个字符串:star[:]。当只指定头下标时,获取的是从头下标到字符串结尾的所有字符。当只指定尾下标时,获取的是字符串的开头到尾下标的字符串(不包括尾下标对应的元素)。头下标和尾下标也可以使用负值。大家先在心中想一下下方语句的运行结果,再运行一下,看看结果是否一致呢?


star = "NEPTUNE"
# 获取 NEPprint(star[0:3])# 获取 NEPTUNEprint(star[:])# 获取 NEprint(star[-7:-5])# 获取 EPTUNEprint(star[1:])# 获取 NEPTprint(star[:4])
复制代码


3.3 字符串长度神农:“现代社会真神奇啊,不仅能认识海王星,还能读取海王星的另一种语言表达,可是我还有一个疑问,海王星的英文是几个字母构成的呢”?我们:“这个问题简单,Python 中 len() 可以获取字符串的长度哦”


star = "NEPTUNE"
print(len(star))
复制代码


在 Python 中,我们使用 len(变量名) 来获取变量的长度,len 是长度 length 的前三个字母,也是比较好记忆和理解的!3.4 字符串方法 Python 有一组可用于字符串的内置方法,可以实现字符串的各种变换,宋老师在这里还是建议大家收藏下方表格哟!



strip() 删除开头和结尾的空白字符神农:“现代的信息技术太精彩了!”我们:“这都不算什么哟,还有更精彩的,同样的 NEPTUNE(海王星),我们也可以做出一些变换的哦”神农:“哦?快快,教教我是怎么做的”有些时候,我们会在代码的编写中做一些空格的操作,这些空格在 Python 中就是空白字符,我们可以使用 strip()来删除字符串开头和结尾的空白字符,使用方法就是变量名.strip(),我们来看下方语句:


star = " NEPTUNE "
print(star)print(len(star))print(star.strip())print(len(star.strip()))
复制代码


我们看到在没有删除开头和结尾的空白字符串之前,变量 star 的长度是 9,使用 strip() 之后,长度是 7,空白字符串被删除了!神农:“真是很神奇啊!”其余方法的使用是一样的,都是变量.方法,下方的几个方法大家自己运行体会下哈!3.5 转义我们曾经给大家介绍过转义字符,今天在进行字符串知识的学习之后,我们再给大家仔细介绍下转义字符中的 \。首先,我们先来回顾下字符串的一个要点,字符串是由单引号 ' 或双引号 " 括起来的任意文本。也就是说,在字符串的变量赋值中,是包含单引号或双引号的,那么对于有些语句本身就包含引号的,Hi, shennong, this 's the neptune! 这种情况 Python 是怎么处理的呢?在 Python 中,对于本身带有引号的字符串,有以下几种情况:(1)由双引号 " 括起来的任意文本包含单引号 '


print("You're uinique, nothing can replace you.")
复制代码


(2)由单引号 ' 括起来的任意文本包含双引号 "


print('The man who has made up his mind to win will never say "impossible".')
复制代码


运行起来,也都是正确的,但是当我们把上述例子中的双引号 " 换成单引号 ',把单引号 ' 换成双引号 " 时,便会报错。这个时候就需要对 ' 或 " 进行转义:


print('You're uinique, nothing can replace you.')print("The man who has made up his mind to win will never say "impossible"")
复制代码

4.获取数据类型与数据类型转换

神农:“这趟来的太值了,我认识了整型 int、浮点数 float、还有布尔值和字符串,可是怎么我感觉还是有些晕啊,尤其是遇到整数的数字时,到底哪些是整型?哪些是字符串呢?”我们:“神农前辈不要担心,这个 Python 也有办法解决哦!”在 Python 中,对于有些变量的数据类型,我们不太确定的时候,可以使用 type(),来获取变量的数据类型,type() 的使用方法是 type(变量名),我们一起来看下面的例子:


#变量weight1,赋值为整数50weight1= 50#变量weight2,赋值为字符串50weight2 = '50'#变量weight3,赋值为浮点数50.00weight3= 50.00#打印变量weight1的数据类型print(type(weight1))#打印变量weight2的数据类型print(type(weight2))#打印变量weight3的数据类型print(type(weight3))
复制代码


我们看到分别打印出了整型、字符串和浮点数。在 Python 中,不同的数据类型是可以互相转换的,通过类型转换函数来实现,下图为常见的类型转换函数:



我们可以使用 int(),将 50.00 转换为 50,也可以使用 float(),将 50 转换为 50.00,具体语句如下:


weight1= 50weight3= 50.00weight4= int(weight3)weight5=float(weight1)print(type(weight1))print(type(weight3))print(type(weight4))print(type(weight5))
复制代码


神农:“嗯嗯,真是太精彩了,变幻无穷!”我们:“和我们一起学 Python 吧!”下面,我们运用 str() 和字符串的+运算符打印出下列内容:神农每天品尝 3 种草药,品尝了 50 天,一共品尝了 150 种草药。


num1 = 3num2 = 50num3 = 150print('神农每天品尝 '+str(num1)+' 种草药,品尝了 '+str(num2)+' 天,一共品尝了 '+str(num3) + ' 种草药')
复制代码


发布于: 刚刚阅读数: 5
用户头像

向阳逐梦

关注

人生享受编程,编程造就人生! 2022.06.01 加入

InfoQ签约作者、阿里云“乘风者计划”签约博主

评论

发布
暂无评论
Python语法之数据类型_Python_向阳逐梦_InfoQ写作社区