
Hello, everyone,我是小K,很高兴又和大家见面了。

现在, 请大家将屏幕调整成全屏模式,与小K一起继续饱览 Python 河山。【江湖秘籍:Windows 系统:F11(或Fn+F11);Mac系统:Control+Command+F。】

在上一关,我们已经进入 Python 世界,通过 print()函数与变量,在 Python 江湖上扬名立万。现在,我们总结下上一关的经验。




大家是否还记得《美国队长2》剧情中的“洞察计划”:通过一个人过去的行为,包括说过的话,看过的书,听过的音乐,看过的电影,参加的社团,发表、点赞、转发的微博,发送的电子邮件,每一通电话、每一条短信,活动圈子,职业属性,教育经历,医疗情况,血型星座等,来对这个人的未来进行预测。

这些电影中收集的信息、概念都可在 Python 江湖中对应。比如:电子邮件中的文字内容,点赞微博的数字量、血型星座中的表情符号在 Python 江湖中就是数据。

数据五花八门,各式各样,颜面都不一样。只有记清它们的颜面,了解它们的擅长专属, 才能一起探究美国队长的洞察计划。




今天要讲的主要内容就是美国队长洞察计划中的数据,完成与 AI 的对话。让小K 带着大家一起探究美国队长的洞察计划。



数据类型

在 Python 江湖里,常用的数据类型有三种:字符串,整数,浮点数。
字符串

首先, 我们来看一下“黄袍加身”的字符串, 字符串英文名 string,简称 str。 其实, 在上一关初入江湖的时候, 你已经用过它了,看面庞很熟悉。

代码片段
xxxxxxxxxx
1
name='哪吒'
2
print("Let's go go go")

是不是很熟悉? 你猜对了,穿上单引号、双引号、三引号黄袍的内容就是字符串,无论引号里面内容是中文、英文、法文、数字、符号、甚至是火星文。

在上面代码里 '哪吒' ,"Let's go go go" 都属于字符串类型。

下面,请观察一下左边代码,然后点击运行按钮,跟小K 一起体验字符串的应用。

编程题
已完成课堂练习
main.py
8
1
movie = '美国队长2'
2
name = 'The Winter Soldier'
3
price = "7.14"
4
word = '''≡(▔﹏▔)≡'''
5
print(movie)
6
print(name)
7
print(price)
8
print(word)
重做
终端
python main.py
美国队长2
The Winter Soldier
7.14
≡(▔﹏▔)≡
答案提示
取消
再试一次


感觉怎么样? 字符串是不是很简单。

字符串,江湖行话,就是由一个个字符连接起来的组合,你平时所见的字母、数字、汉字、符号都是字符。 字符串可以用来表示词、语句、甚至是数学公式。

下面,小K 带你去探究美国队长洞察计划中字符串的用法。请你来试一试,输出下面代码框中的内容,具体文本可以直接复制。【江湖秘籍:记得用引号括住,创建字符串;将字符串赋值给变量;使用 print()函数打印。】

复制下列文字到代码框中:
我们强者就该无所畏惧。
那你为什么要跑?
我们强者就该无所畏惧。
那你为什么要跑?

编程题
已完成课堂练习
main.py
2
1
print('''我们强者就该无所畏惧。
2
那你为什么要跑?''')
重做
终端
python main.py
我们强者就该无所畏惧。
那你为什么要跑?
答案提示
取消
再试一次


怎么样,你 OK 了吗? 点击下方,运行一下老师代码。

编程题
已完成课堂练习
main.py
4
1
say = '我们强者就该无所畏惧。'
2
print(say)
3
say1 = '那你为什么要跑?'
4
print(say1)
重做
终端
python main.py
我们强者就该无所畏惧。
那你为什么要跑?
答案提示
取消
再试一次


江湖秘籍:字符串类型必须有引号。字符串没有引号,就会向你吐槽的。

下面,我们来总结一下字符串小结。



整数

是时候,脱去黄马甲了,某些数据脱去黄马甲, 也照样能打印出来。比如上一关的 print(1314)

这就是我们常见的数据类型第二种:整数, 英文为 integer, 简称 int。 Python 江湖的整数和我们现实数学中定义的一样:整数是正整数、零和负整数的统称。说白了,就是没有小数点的数字。

在下面代码中,所有变量的内容都是整数。

代码片段
xxxxxxxxxx
1
age = 18
2
height = 192
3
weight = 80

单选
现在,我们趁热打铁,请问以下三个数据 “hello world” 36 “72” 的数据类型分别为:
A:字符串 整数 字符串
B:字符串 整数 整数
C:文字 数字 英文

恭喜你答对了,选 A。 由引号括起来的“hello world” “72”是字符串,无引号的 36 才是整数。

整数就是一个不带小数点的数字,还不能穿黄马甲。直接用 print()函数打印。 比如如下代码:

编程题
已完成课堂练习
main.py
2
1
# 打印整数
2
print(521)
重做
终端
python main.py
521
答案提示
取消
再试一次


✬ 输出结果521

整数和字符串不一样,它不能穿黄马甲,只能独自玩耍,一旦遇到其他文字、字母、符号立马会吐槽。

请运行下面代码,如报错请点击跳过本题。

编程题
已跳过课堂练习
main.py
2
1
num=老铁666
2
print(num)
重做
终端
python main.py
Traceback (most recent call last):
File "main.py", line 2, in <module>
num=老铁666
NameError: name '老铁666' is not defined
答案提示
取消
再试一次


整数, so easy。下面让我们来总结一下整数的知识点。



浮点数

整数是不带小数点的纯数字,那么带小数点的纯数字怎么表示呢?Python 江湖中,将带有小数点的纯数字定义为浮点数。 它是我们最常见的数据类型之一。

浮点数是显而易见的,它比整数多了一个小数点【.】,下列代码中的数字都是浮点数。

代码片段
xxxxxxxxxx
1
3.1415926
2
95.27
3
999.00

浮点数,英文称为 float。只是浮点型没有简写形式。

浮点数虽说比整数多一个小数点,但是它存在一个 bug。因为浮点数的特点,导致它在计算机内运算时,结果不是那么精确,会有四舍五入的差。这是什么意思呢?

下面,请你先口算一下【0.35+0.11】的结果?

然后我们使用 Python 程序运行一下, 请点击下面运行按钮,并阅读答案:

编程题
已完成课堂练习
main.py
1
1
print(0.35+0.11)
重做
终端
python main.py
0.45999999999999996
答案提示
取消
再试一次


呀? 怎么不是 0.46 呢,而是一个比 0.46 小的数字? 这是因为 Python 在计算浮点数时,会有相应的转换机制,所以最终的小数精度会缺失。

下面我们来回顾一下浮点数的主要内容。




以上,就是我们接触的三种常用的数据类型: 字符串、整数、浮点数。




感觉不错吧, 来测试一下?

单选
请问以下数据【88】、【-3】、【‘99’】的数据类型分别为:
A:整数、小数、字符串
B:整数、整数、字符串
C:整数、浮点数、整数

恭喜你答对了,选 B。88 是正整数属于整数,-3 是负整数属于整数 '99'有引号属于字符串。
四则运算

Python 江湖中的整数、浮点数和数学上的整数、小数是一样的,它最重要的作用是结合运算符号进行数学计算。 接下来我们看一下 Python 如何利用整数、浮点数进行四则运算。

Python 江湖中的四则运算,法则和数学上的一致,符号有点差别。

首先,我们看一看 Python 江湖的运算符。




还是加减乘除,但是乘与除的符号变了哦。

江湖秘籍:先把这张图存下来,放到储物袋里,等需要用到放大招的时候,再拿出来看看。

有了四则运算,再说一下 Python 江湖里的运算优先级。

啥叫优先级呢?

先算乘除,再算加减,有括号的先算括号里的,从左往右。这不和数学上的运算一样一样一样的嘛。




运行下面代码,试一试。

编程题
已完成课堂练习
main.py
4
1
print(999.99*56)
2
print(103*50)
3
print(999.99*56-103*50)
4
print((55+22)*99+(38-21)*10)
重做
终端
python main.py
55999.44
5150
50849.44
7793
答案提示
取消
再试一次


我们看一下 print((55+22)*99+(38-21)*10)的运算顺序:

第一步计算 55+22 =77;第二步计算 77*99= 7623;第三步计算 38-21=17;第四步计算 17*10 =170;第五步计算 7623+170 = 7793 。

好复杂的运算啊,算的有点慢。算的有点慢,就把这个工作交给 Python 干呀,省下的时间就可以风花雪月了。

单选
那么,按照这个运算法则,请问以下代码的计算顺序是什么?print((55-22)*3 -99/9)
A: (55-22) 上一步结果*3 上一步结果-99上一步结果除9
B:(55-22) 上一步结果*3乘法结果-99/9除法结果
C:(55-22) 3-99 上一步结果/9 减法的结果*除法的结果

恭喜你答对了,选 B。 按照运算法则,先算括号,再算乘除,最后加减,自左至右。

好了,我们已经在掌握了洞察计划中的四则运算了。下面,我们来探究一下,如何在 Python 江湖中将不同的词语内容组成一句话。
字符串的拼接

例如,小K 这里有几个零碎的词语,也就是变量。然后组合成一句话,‘美国队长取材于漫威漫画',在 Python 江湖中,你要如何实现呢?

代码片段
xxxxxxxxxx
1
hero = '美国队长'
2
title = '漫威漫画'
3
action = '取材于'

#输出
美国队长取材于漫威漫画
美国队长取材于漫威漫画

这就涉及到了我们下一个知识点—字符串拼接。

字符串拼接的方法简单的很, 就是利用字符串拼接符号【+】,将需要拼接的变量连接在一起。

比如上面的例子,我可以如何写。

编程题
已完成课堂练习
main.py
4
1
hero = '美国队长'
2
title = '漫威漫画'
3
action = '取材于'
4
print(hero+action+title)
重做
终端
python main.py
美国队长取材于漫威漫画
答案提示
取消
再试一次


有了拼接符号, 我们就可以拼接我们想要的内容,'美国队长取材于漫威漫画'。 当然我们还可以调整拼接顺序, 输出不同内容。

下面我们就来试一下,如何打印出 '美国队长于漫威漫画编写'。

编程题
已完成课堂练习
main.py
5
1
hero = '美国队长'
2
title = '漫威漫画'
3
action = '编写'
4
place= '于'
5
print(hero+place+title+action)
重做
终端
python main.py
美国队长于漫威漫画编写
答案提示
取消
再试一次


下面,请你点击运行,来看一下小K的答案:

编程题
已完成课堂练习
main.py
5
1
hero = '美国队长'
2
title = '漫威漫画'
3
action = '编写'
4
place= '于'
5
print(hero+place+title+action)
重做
终端
python main.py
美国队长于漫威漫画编写
答案提示
取消
再试一次


学会了字符串拼接,就能让我们整合数据更加灵活,组合出我们想要的任意内容。

这就是我们所学的字符串拼接。




好了,现在你已经是探究洞察计划里面的大神了。 那么如何在 Python 江湖中玩的更 6 呢? 下面我们就要学会施展法术,输出 '美国队长2'。

请点击下面运行按钮,下面这段代码有 bug,报错请点击白色文字按钮【跳过本题】:

编程题
已跳过课堂练习
main.py
3
1
name = '美国队长'
2
num= 2
3
print(name+num)
重做
终端
python main.py
Traceback (most recent call last):
File "main.py", line 4, in <module>
print(name+num)
TypeError: must be str, not int
答案提示
取消
再试一次


理想很丰满,现实很骨感。计算机又向我们吐槽了。
江湖秘籍:只有字符串与字符串才能拼接。
江湖秘籍:只有字符串与字符串才能拼接。

到底是那里不对呢?你会发现 num=2中的2没有引号,也就是说 num 不是字符串,而是一个整数。

就是它,出不来结果,就是 num 的锅。

那么问题来了,当我们探查洞察计划中更多的数据时怎么办? 总不能通过肉眼一个一个去看呀。

这一点,Python 已经给我写好了,它抛给我们一个月光宝盒,能够帮助我们来查询不确定数据的类型。 这个月光宝盒是一个函数,叫做 type()函数 。
数据类型的查询— type()函数

这个 type()函数应该如何使用呢? So easy,只需要把查询的内容放进括号里就得了。




只要你把内容写在括号里,type()函数会自动查询它的类型。

点击下面的运行按钮,试一下。

编程题
已完成课堂练习
main.py
4
1
name = '美国队长'
2
num = 2
3
type(name)
4
type(num)
重做
终端
python main.py
答案提示
取消
再试一次


呀?咋啥都没出现呢?

没有内容就对了。 对于 Python 而言,你只是下了一个查询类型的命令,type()函数已经执行结束,就……就……就没然后了。

在你的命令里,你没有告诉 Python 查询完类型后打印结果再告诉你。你不多说这一步,它都不做的。

因此,我们要结合 print()函数打印出结果。 下面,补全代码,将 type()函数查询结果放进 print() 中,例如 print(type(name))。

编程题
已完成课堂练习
main.py
4
1
name = '美国队长'
2
num = 2
3
print(type(name))
4
print(type(num))
重做
终端
python main.py
<class 'str'>
<class 'int'>
答案提示
取消
再试一次


你也运行一下小K 的代码, 看看输出的结果。

编程题
已完成课堂练习
main.py
4
1
name = '美国队长'
2
num = 2
3
print(type(name))
4
print(type(num))
重做
终端
python main.py
<class 'str'>
<class 'int'>
答案提示
取消
再试一次


name = '美国队长' 查询的结果是< class 'str'>,属于字符串类型。
num = 2 查询的结果是< class 'int'>,属于整数类型。
num = 2 查询的结果是< class 'int'>,属于整数类型。

在月光宝盒 type()函数的帮助下,我们可以一一识别洞察计划中各类数据的类型。

貌似到现在,我们的问题还没有解决啊,我们还是没有将 name = '美国队长'与 num = 2 拼成'美国队长 2'啊。

为什么一个字符串类型的变量与一个数字类型的变量不能连接起来呢?就是他俩不是一类人。

打个比方,美女配英雄,总不能美女配野兽啊,美女和野兽聊不起天啊。

但是,你现在非得让美女配野兽,怎么办?怎么才能把两个不同类型的数据拼在一起?

这就涉及到了这堂课的最后一个知识点: 数据转换。
数据转换

数据转换的方法有3个: str() ,int(),float()

下面我们先来看一下 str()函数。
str()函数

str()函数可以帮助我们解决刚才问题,它可以将其他类型的数据变换成 str 类型。




str()函数, 不管你之前属于啥类型。 只要到了我的地盘,就得听我的,我就把任何数据都转成字符串类型。

下面,运行一下左边代码,看如何完成字符串拼接。

编程题
已完成课堂练习
main.py
3
1
name = '美国队长'
2
num = 2
3
print(name+str(num))
重做
终端
python main.py
美国队长2
答案提示
取消
再试一次


是不是很简单?我们只需要通过 str(num)一个步骤,就将整数类型的【2】转换成字符串类型的【2】,成功拼接。

下面你来试一试: 补全代码,成功打印结果【美国队长的身高 198】

编程题
已完成课堂练习
main.py
5
1
name = '美国队长'
2
add = '的'
3
height = '身高'
4
gaodu = 198
5
print(name+add+height+str(gaodu))
重做
终端
python main.py
美国队长的身高198
答案提示
取消
再试一次


来,看看老师的代码是不是这个样子:

编程题
已完成课堂练习
main.py
5
1
name = '美国队长'
2
add = '的'
3
height = '身高'
4
gaodu = 198
5
print(name+add+height+str(gaodu))
重做
终端
python main.py
美国队长的身高198
答案提示
取消
再试一次


怎么样,str()函数是不是很简单。我们来做道题验证一下。

单选
请问, 下面选项的代码, 运行后, 哪一句会报错?
A:print(9+6+5)
B:print('Python'+'江湖')
C:print('小女今年'+18)

恭喜你答对了,选 C。18 是 int 类型,与字符串类型拼接肯定报错。

下面, 我们总结一下 str()函数




既然整数类型能够转换成字符串类型,那字符串类型能转换为整数类型吗?

那必须的啊。
int()函数




int()函数可以将其他类型的数据转换成整数类型,像 str()一样,你只需要将转换的数据放进 int()中。

下面,我们来试验一下,请补全代码,计算 num1 与 num2 的和。

编程题
已完成课堂练习
main.py
3
1
num1 = '3'
2
num2 = '6'
3
print(int(num1)+int(num2))
重做
终端
python main.py
9
答案提示
取消
再试一次


老师的答案是这样的:

编程题
已完成课堂练习
main.py
3
1
num1 = '3'
2
num2 = '6'
3
print(int(num1)+int(num2))
重做
终端
python main.py
9
答案提示
取消
再试一次


不过对于 int()函数的使用,大家要注意一点: 只有字符串中的内容是纯数字时,才能够使用 int()函数进行强制转换。

对于文字、英文、火星文都不能使用 int()进行转换。

浮点形式的字符串也是不能使用 int()强制转换的。

比如下方代码,如果点击运行就会报错。【ValueError: invalid literal for int() with base 10: '9.9'】

江湖秘籍: 浮点形式的字符串是无法使用 int()进行数据转换的。

代码片段
xxxxxxxxxx
1
print(int('9.9'))

运行后结果:ValueError:invalid literal for int() with base 10: '9.9'

这是不是就说浮点数不能转换成整数类型了?

不,虽然浮点形式的字符串不能使用 int()函数转换,但是浮点数是可以使用 int()函数来转换的。

下面,请观察左边代码框中的代码,然后运行点击按钮:

编程题
已完成课堂练习
main.py
1
1
print(int(9.9))
重做
终端
python main.py
9
答案提示
取消
再试一次


上方代码,就是将浮点数 9.9 转换成整数。 可是,为什么输出结果是 9 呢?

int()函数的本质是将数据转换整数,对于浮点数,就是取整处理,也就是只拿走整数部分。 不会做四舍五入操作。

现在,对于 int()函数探究的是不是更深了? 我们来做道题检验一下吧。

单选
请找出下列选项中, int()不能转换为整数的数据 。
A:‘2019’
B:99.99
C:'38.56'

恭喜你答对了,选 C。 C 项 '38.56'是字符串形式的浮点数,int()会报错的。

最后, 小结一下 int()函数使用




可是, 如果我想把字符串形式的浮点数'38.56'转换成浮点数怎么办?

有法子, 这就涉及到我们最后一个知识点—float()函数 。
float()函数




float()函数的使用和 str()、int()的方法一致。也是将需要转换的数据放在括号里。

float()函数可以将整数和字符串转换成浮点数类型,但前提是,这个字符串中的内容一定是数字形式。

经过 str()与 int()的探究, float()是不是更好懂一些?

下面, 让我们敲段代码来试试,请补齐代码,将下面所有变量转换为浮点类型,并打印。

编程题
已完成课堂练习
main.py
6
1
height = 198.2
2
weight = 97.56899
3
age = '30'
4
print(float(height))
5
print(float(weight))
6
print(float(age))
重做
终端
python main.py
198.2
97.56899
30.0
答案提示
取消
再试一次


运行一下小K 的代码, 看看是不是和你的一样。

编程题
已完成课堂练习
main.py
6
1
height = 198.2
2
weight = 97
3
age = '30'
4
print(float(height))
5
print(float(weight))
6
print(float(age))
重做
终端
python main.py
198.2
97.0
30.0
答案提示
取消
再试一次


到现在为止, 你已经知道转换数据类型的方法啦。 下面, 我们通过一张图来总结一下这三个函数。




怎么样? 掌握了数据类型、数据拼接、数据转换的你,已经可以加入到美国队长的团队,一起探究洞察计划中的数据了。

最后,让我们总结一下这关你都学到了什么?




以上这些,只是我们开始探究数据的开始,以后你还会学习更加复杂的代码及命令,掌握 Python 江湖中更多的炫技。

课堂练习 >>
美国队长的审问
数据拼接、数据转换
中等


课堂练习