现在我们开始第三关的学习啦,在正式开始之前,我们来回顾下上一关的内容:

上一关中,我们主要介绍了变量、变量的创建及赋值,以及变量的命名规则,我们也提到了 Python 中并没有声明变量的命令,变量的创建是在为其赋值时完成的,这样变量的类型便由值的类型决定。本关我们就来介绍 Python 的数据类型:数字类型、布尔型和字符串类型。

我们先来看一下上关中我们学习过的语句:

name,age,weight = '女娲',18,49.99
print(name)
print(age)
print(weight)
1
2
3
4

我们仔细来看这个语句:

image.png

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

# 1 数字类型

image.png

# 1.1 int

相传在上古时期,老百姓无法分辨粮食和草药,只能依靠打猎维持生存,即使生病也没办法医治,神农氏因为想改变这个局面,亲自上山采药,亲口尝各类草药,辨别药性。

神农氏踏遍了山野,尝了七七四十九天,发现了麦、稻、谷子、高粱能充饥,并且尝出了 365 种草药,还编写了《神农本草》。

这个故事里面,我们看到了 2 个整数,七七四十九天和 365 种草药:

day = 49
number = 365
print(day)
print(number)
1
2
3
4

根据变量命名规则,我们将整数 49 赋值给变量 day,整数 365 赋值给变量 number。

整数为正数或负数,没有小数,长度不限。

这些都是整数哟!

#光速,每秒30万公里
speed_of_light = 300000   
#地球质量,5.97×10²⁴kg
mass_of_earth = 5970000000000000000000000
#地球最深峡谷的海拔,10994m,因在地下,我们这里用负数表示
altitude_of_mariana_trench = -10994
print(speed_of_light)
print(mass_of_earth)
print(altitude_of_mariana_trench)
1
2
3
4
5
6
7
8
9

宋老师在这里用了比较复杂的变量名称,就是给大家展示下变量名的意义表达,通过下划线 _ 可以将有含义的英文串联起来,做到我们的代码规范哟!

下面我们一起看浮点数:

# 1.2 float

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

比如大家非常熟悉的 π:pi = 3.1415926,π 是特殊字符,不能用作变量名,因此我们这里用谐音 pi 来代替哦!(宋老师时刻不忘提醒大家注意变量的命名规则,大家一定要从基础开始养成好的代码习惯!是受益终身的习惯哦!)

pi = 3.1415926
negative_pi = -3.1415926

print(pi)
print(type(negative_pi))
1
2
3
4
5

# 1.3 运算符

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

image.png

# 1.3.1 算术运算符

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

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

day1 = 7
day2 = 7
day = day1 * day2
print(day)
1
2
3
4

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

image.png

每一个运算符,我们都给大家附上了相应的例子,大家可以运行感受下。

# 1.3.1.1 +(加) 运算符
a = 1
b = 1

c = 3.14
d = 2.71

print(a + b)
print(c + d)
1
2
3
4
5
6
7
8
# 1.3.1.2 -(减) 运算符
a = 1
b = 1

c = 3.14
d = 2.71

print(a - b)
print(c - d)
1
2
3
4
5
6
7
8
# 1.3.1.3 *(乘) 运算符
a = 2
b = 1

c = 3.14
d = 2.71

print(a * b)
print(c * d)
1
2
3
4
5
6
7
8
# 1.3.1.4 /(除) 运算符
a = 2
b = 1

c = 3.14
d = 2.71

print(a / b)
print(c / d)
1
2
3
4
5
6
7
8
# 1.3.1.5 %(取模) 运算符
a = 10
b = 3

print(a % b)
1
2
3
4
# 1.3.1.6 **(幂) 运算符
a = 10
b = 3

print(a ** b)
1
2
3
4
# 1.3.1.7 //(取整) 运算符
a = 10
b = 3

print(a // b)
1
2
3
4

# 1.3.2 赋值运算符

下面,我们一起来看下赋值运算符,在变量的赋值中,我们提到了 = 的含义是赋值,在 Python 中赋值运算符 = 可以和算术运算符进行结合,具体如下表,还是建议大家保存下,有需要的时候方便查看!

image.png

# 1.3.2.1 = 运算符

= 运算符和变量的赋值是一样哒。

a = 3

print(a)
1
2
3
# 1.3.2.2 +=

神农在品尝了 365 种草药之后,并没有放弃寻找更多草药和粮食的脚步,现在他又新品尝了 30 种草药,你能使用 += 运算符帮他计算出他一共品尝了多少种草药么?

number = 365
number += 30

print(number)
1
2
3
4

其他的赋值运算符,宋老师也都一一给大家准备了示例,大家可以对照示例自己体会下赋值运算符的使用:

(自己动手,丰衣足食!!!小伙伴们,加油!!!)

# 1.3.2.3 -=
a = 3
a -= 3

print(a)
1
2
3
4
# 1.3.2.4 *=
a = 3
a *= 3

print(a)
1
2
3
4
# 1.3.2.5 /=
a = 3
a /= 3

print(a)
1
2
3
4
# 1.3.2.6 %=
a = 10
a %= 3

print(a)
1
2
3
4
# 1.3.2.7 **=
a = 10
a **= 3

print(a)
1
2
3
4
# 1.3.2.8 //=
a = 10
a //= 3

print(a)
1
2
3
4

# 1.3.3 比较运算符

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

food_number = 50
drug_number = 200
print(food_number < drug_number)
1
2
3

因为 200 是大于 50 的,因此 print() 打印的是 True,就是这种比较的结果为真!

比较运算符返回的值是 True 或者 False

下图是一些常用的比较运算符,还是建议各位小伙伴收藏哈!

image.png

# 1.3.3.1 ==(等于)

【敲重点】宋老师在这里要和大家重点强调下,`` 比较运算符 和 = 赋值运算符的区别:

image.png

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

我们也为大家准备了比较运算符的例子,大家可以逐一体验下:

a = 1
b = 2

print(a == b)
1
2
3
4

a 是 1,b 是 2,显然 a 不等于 b,因此打印的结果是 False

# 1.3.3.2 !=(不等于)
a = 1
b = 2

print(a != b)
1
2
3
4

a 是 1,b 是 2,a 不等于 b,因此打印的结果是 True

# 1.3.3.3 >(大于)
a = 1
b = 2

print(a > b)
1
2
3
4

a 是 1,b 是 2,a < b,因此打印的结果是 False

# 1.3.3.4 <(小于)
a = 1
b = 2

print(a < b)
1
2
3
4

a 是 1,b 是 2,a < b,因此打印的结果是 True

# 1.3.3.5 >=(大于或等于)
a = 2
b = 2

print(a >= b)
1
2
3
4

a 是 2,b 是 2,a 等于 b,符合 a 大于或等于 b,因此打印的结果是 True

# 1.3.3.6 <=(小于或等于)
a = 2
b = 2

print(a <= b)
1
2
3
4

a 是 2,b 是 2,a 等于 b,符合 a 小于或等于 b,因此打印的结果是 True

# 1.3.4 逻辑运算符

神农告诉人们,麦、稻、谷子、高粱等 50 种植物可以作为粮食充饥,蒲公英、黄芪、三七等 200 种植物可以作为药材,现在我们想判断下粮食的数量小于 60 并且药材的品种大于 150,是否是真实的,该如何判断呢?

在 Python 中是通过逻辑运算符 and 来实现的,我们来看下方语句:

food_number = 50
drug_number = 200
print(food_number < 60 and drug_number > 150)
1
2
3

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

image.png

# 1.3.4.1 and
a = 4
b = 8

print(a > 3 and b < 10)
print(a > 3 and b < 6)
1
2
3
4
5

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

其他两个运算符的例子大家可以自己运行体验下哈:

# 1.3.4.2 or
a = 4
b = 8

print(a > 3 or b < 10)
print(a > 3 or b < 6)
print(a > 5 or b < 6)
1
2
3
4
5
6
# 1.3.4.3 not
a = 4
b = 8

print(not(a > 3 or b < 10))
print(not(a > 3 or b < 6))
print(not(a > 5 or b < 6))
1
2
3
4
5
6

# 2 布尔型

我们在进行逻辑运算和比较运算的时候,得到的结果为 TrueFalse。在 Python 中,用 TrueFalse 表示布尔值。

布尔值可以用 andornot 运算。

# 2.1 and 运算:

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

print(True and True)
print(True and False)
print(False and False)
1
2
3

# 2.2 or 运算:

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

print(True or True)
print(True or False)
print(False or False)
1
2
3

# 2.3 not 运算:

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

各位小伙伴加油哦,用我们的慧眼来分辨这大千世界的真真假假!

print(not True)
print(not False)
1
2

# 3 字符串类型

我们还是回到这张图片:

image.png

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

print('hello world!')
print("hello world!")
1
2

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

三个单引号:

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.''')
1
2
3
4
5
6

三个双引号:

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.""")
1
2
3
4
5
6

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

say_hi = "hello world!"

print(say_hi)
1
2
3

宋老师出个题目考考大家,看看大家是否已经灵活掌握了本部分知识:

下列数据类型属于字符串的是:

A.weight = 90

B.gift = '鲜花'

C.gift_spend = 300

D.math_grade = 96.5

正确答案:B

选A提示:正确答案为B!引号包含的数据类型是字符串哦! 选B提示:回答正确!引号包含的数据类型是字符串! 选C提示:正确答案为B!引号包含的数据类型是字符串哦! 选D提示:正确答案为B!引号包含的数据类型是字符串哦!

# 3.1 索引

中国古人一直有观天象的习俗,通过观天象,来获得对季节、气候、甚至是国家命运的认知。现代,通过科学家们的努力,我们知道了浩瀚宇宙的深邃,知道了八大行星的存在,海王星(neptune),八大行星之一,假设我们在Python 的世界中,可以重见神农,让我们用 Python 的语言为神农介绍下海王星的字母构成吧!这就要运用我们下方为大家介绍的内容:索引。

在 Python 中,字符串中的字符可以通过索引来提取。可以从前往后索引,也可以从后往前索引。

索引语法是:变量[下标],这里的下标是由数字表示,代表所要索引的字符在变量中的位置。

当从前往后索引时,下标从 0 开始。

当从后往前索引时,下标从 -1 开始,如下图所示!

image.png

star = "NEPTUNE"

print(star[0])
print(star[-1])
print(star[6])
print(star[-7])
1
2
3
4
5
6

大家来自己试一下下面这个题目:

introduce_star = 'This is the neptune',将变量中所有的 e 打印出来!

(可以试下从前向后索引,也可以试下从后向前哦)

# 3.2 切片

我们看到通过索引,只能提取单个字符,神农说,难得来一趟,想多认识一些字符,这个时候怎么办呢?我们可以通过切片来提取变量的多个字符,我们一起来看下切片怎么使用。

切片语法是:变量[头下标:尾下标](不包括尾下标对应的元素)。

当不指定头下标和尾下标时,获取的是整个字符串:star[:]

当只指定头下标时,获取的是从头下标到字符串结尾的所有字符。

当只指定尾下标时,获取的是字符串的开头到尾下标的字符串(不包括尾下标对应的元素)。

头下标和尾下标也可以使用负值。

大家先在心中想一下下方语句的运行结果,再运行一下,看看结果是否一致呢?

star = "NEPTUNE"

# 获取 NEP
print(star[0:3])
# 获取 NEPTUNE
print(star[:])
# 获取 NE
print(star[-7:-5])
# 获取 EPTUNE
print(star[1:])
# 获取 NEPT
print(star[:4])
1
2
3
4
5
6
7
8
9
10
11
12

# 3.3 字符串长度

神农:“现代社会真神奇啊,不仅能认识海王星,还能读取海王星的另一种语言表达,可是我还有一个疑问,海王星的英文是几个字母构成的呢”?

我们:“这个问题简单,Python 中 len() 可以获取字符串的长度哦”

star = "NEPTUNE"

print(len(star))
1
2
3

在 Python 中,我们使用 len(变量名) 来获取变量的长度,len 是长度 length 的前三个字母,也是比较好记忆和理解的!

# 3.4 字符串方法

Python 有一组可用于字符串的内置方法,可以实现字符串的各种变换,宋老师在这里还是建议大家收藏下方表格哟!

image.png

# 3.4.1 strip() 删除开头和结尾的空白字符

神农:“现代的信息技术太精彩了!”

我们:“这都不算什么哟,还有更精彩的,同样的NEPTUNE(海王星),我们也可以做出一些变换的哦”

神农:“哦?快快,教教我是怎么做的”

有些时候,我们会在代码的编写中做一些空格的操作,这些空格在 Python 中就是空白字符,我们可以使用

strip()来删除字符串开头和结尾的空白字符,使用方法就是变量名.strip(),我们来看下方语句:

star = " NEPTUNE "

print(star)
print(len(star))
print(star.strip())
print(len(star.strip()))
1
2
3
4
5
6

我们看到在没有删除开头和结尾的空白字符串之前,变量 star 的长度是 9,使用 strip() 之后,长度是 7,空白字符串被删除了!

神农:“真是很神奇啊!”

其余方法的使用是一样的,都是变量.方法,下方的几个方法大家自己运行体会下哈!

# 3.4.2 lower() 返回小写的字符串

star = "NEPTUNE"

print(star.lower())
1
2
3

# 3.4.3 upper() 返回大写的字符串

star = "neptune"

print(star.upper())
1
2
3

# 3.4.4 replace() 用另一段字符串来替换字符串

say_hi = "Hello World!"

print(say_hi.replace("World", "Kitty"))
1
2
3

# 3.4.5 split() 按指定的分隔符分隔字符串

say_hi = "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune,Pluto"

print(say_hi.split(","))
1
2
3

# 3.4.6 使用 in 或 not in 来检查字符串中是否存在特定短语或字符

book_name = "Men Are from Mars, Women Are from Venus"

is_exist = "Mars" in book_name
print(is_exist)
1
2
3
4
book_name = "Men Are from Mars, Women Are from Venus"

is_exist = "Mars" not in book_name
print(is_exist)
1
2
3
4

# 3.4.7 使用 + 运算符对字符串进行拼接

first_part = "Men Are from Mars"
second_part = "Women Are from Venus"

print(first_part + ', ' + second_part)
1
2
3
4

# 3.4.8 字符串中引用变量的值

  • 在字符串前面加小写字母 'f'
  • 在字符串中,将需要引用的变量,用花括号包起来 {name}
name = 'Earth'
age = 4.543E9

print(f"My name is {name}, {age} years old")
1
2
3
4

# 3.5 转义

在第一章中,我们曾经给大家介绍过转义字符,今天在进行字符串知识的学习之后,我们再给大家仔细介绍下转义字符中的 \

首先,我们先来回顾下字符串的一个要点,字符串是由单引号 ' 或双引号 " 括起来的任意文本。也就是说,在字符串的变量赋值中,是包含单引号或双引号的,那么对于有些语句本身就包含引号的,Hi, shennong, this 's the neptune! 这种情况 Python 是怎么处理的呢?

在 Python 中,对于本身带有引号的字符串,有以下几种情况:

(1)由双引号 " 括起来的任意文本包含单引号 ' ,例如:

print("You're uinique, nothing can replace you.")
1

运行起来,并不会出现问题,正常打印出字符串。

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

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

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

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

(3)单引号括起来的字符串中使用单引号,对字符串中的单引号进行转义,使用转义字符\,在每一个字符串中的单引号前使用\

print('You\'re uinique, nothing can replace you.')
1

(4)双引号括起来的字符串中使用双引号,需要对字符串中的双引号进行转义,转义使用字符 \,在每一个字符串中的双引号前使用\

print("The man who has made up his mind to win will never say \"impossible\"")
1

# 4 获取数据类型和数据类型转换

神农:“这趟来的太值了,我认识了整型 int、浮点数 float、还有布尔值和字符串,可是怎么我感觉还是有些晕啊,尤其是遇到整数的数字时,到底哪些是整型?哪些是字符串呢?”

我们:“神农前辈不要担心,这个 Python 也有办法解决哦!”

在 Python 中,对于有些变量的数据类型,我们不太确定的时候,可以使用 type(),来获取变量的数据类型,type() 的使用方法是 type(变量名),我们一起来看下面的例子:

#变量weight1,赋值为整数50
weight1= 50
#变量weight2,赋值为字符串50
weight2 = '50'
#变量weight3,赋值为浮点数50.00
weight3= 50.00
#打印变量weight1的数据类型
print(type(weight1))
#打印变量weight2的数据类型
print(type(weight2))
#打印变量weight3的数据类型
print(type(weight3))
1
2
3
4
5
6
7
8
9
10
11
12

我们看到分别打印出了整型、字符串和浮点数。

在 Python 中,不同的数据类型是可以互相转换的,通过类型转换函数来实现,下图为常见的类型转换函数:

image.png

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

weight1= 50
weight3= 50.00
weight4= int(weight3)
weight5=float(weight1)
print(type(weight1))
print(type(weight3))
print(type(weight4))
print(type(weight5))
1
2
3
4
5
6
7
8

神农:“嗯嗯,真是太精彩了,变幻无穷!”

我们:“和我们一起学 Python 吧!”

下面,我们运用str() 和字符串的+运算符打印出下列内容:

神农每天品尝 3 种草药,品尝了 50 天,一共品尝了 150 种草药

num1 = 3
num2 = 50
num3 = 150
print('神农每天品尝 '+str(num1)+' 种草药,品尝了 '+str(num2)+' 天,一共品尝了 '+str(num3) + ' 种草药')
1
2
3
4

# 5 小结

# 6 练习题

# 6.1 将 x 转换成浮点数,并进行输出

x = 5
1

# 6.2 将 x 转换成整数,并进行输出

x = 5.5
1

# 6.3 获取字符串 str 的长度,并进行输出

str = "Hello World!"
1

# 6.4 获取字符串 str 的第一个字符 H,并进行输出

str = "Hello World!"
1

# 6.5 获取字符串 str 的子字符串 llo,并进行输出

str = "Hello World!"
1

# 6.6 去除字符串 str 中的空格,并进行输出

str = "  Hello World!  "
1
更新于: 12/30/2021, 2:46:39 AM