学径 LearnPath

CAICP-E · Python 编程基础

数字和文字不是一家

input 拿到的是文字。要算数,先转换。

讲解模式

这一节要学会什么

#what

上一课会提问了。这节课揭开一个误会: 看起来像数,不一定能拿去加。

你会做 类型转换。 帮手是 int()float()str()。 你会再认一认 数据类型

小目标很具体: 问两个数,转成整数,相加。打出一张合计小票。

这一课还不学 if。先把「文字」和「数字」分开。

3 加 5,怎么变成了 35

#hook

上一课如果把两个输入直接用 +。你打 3,再打 5。 屏幕上可能出现 35。

那不是算错了,那是两张纸条粘在一起。

"3" + "5" 是拼接。3 + 5 才是 8。

3 和 5 两张纸条粘成 35

如果觉得有点难 先问:盒子里是文字,还是数字? 要算账,先 int()

如果已经会了 问两个价钱,转完再加。 再用 str() 把合计贴进一句「一共xx元」。

同一张脸,两副身份

#explore-glue

第四课见过盖子。盖子会从键盘走进来。

python
print("3" + "5")
print(3 + 5)

第一行是 35。第二行是 8

input 拿到的,永远先走第一行那条路。

python
a = input("请输入第一个数:")
b = input("请输入第二个数:")
print(a + b)

你打 3 和 5。这里会打印 35。 因为 ab 都是文字。

数字 3 和带引号的 3

整数能加减。文字遇到 +,是在拼接。两家不是一家。

int:把文字变成整数

#explore-int

要把文字变成整数,用 int()

python
text = "12"
n = int(text)
print(n + 1)

会显示 13。因为现在 n 是整数。

问两个数再相加,常见写法是:

python
a = input("请输入第一个数:")
b = input("请输入第二个数:")
n1 = int(a)
n2 = int(b)
print(n1 + n2)

也可以写在同一行里:

python
n1 = int(input("请输入第一个数:"))
n2 = int(input("请输入第二个数:"))
print(n1 + n2)

先读入,立刻转换,后面就能当真的数来算。

程序在提问

转换常常做出一个新值,旧的盒子不一定被改掉。

python
text = "8"
n = int(text)
print(text)
print(n)

text 还是字符串。n 才是整数 8。

另外两把钥匙,轻轻摸一下

#explore-helpers

要把文字变成小数,用 float()

python
text = "3.5"
x = float(text)
print(x * 2)

会显示 7.0

3 是整数。3.5 是小数。 第 3 课认过整数和小数。还要知道:有小数点,别塞进 int()

python
int("12")      # 可以,得到 12
float("3")     # 可以,得到 3.0
int("3.2")     # 不行,整数不要小数点
int("十二")    # 不行,汉字不是数字

要把别的东西变成文字,用 str()

python
total = 18
print("一共" + str(total) + "元")

文字和数字不能直接用 + 拼接。先把数字变成字符串。

整苹果和带小数的派

如果已经会了 想问「这是哪种类型」,可以用 type()print(type(3)) 会告诉你:这是整数。 这节课不要求会默写。

打出一张合计小票

#explore-receipt

问两个价钱,转成整数,相加,打印小票。

python
a = input("第一种多少元:")
b = input("第二种多少元:")
price1 = int(a)
price2 = int(b)
total = price1 + price2

print("—— 小票 ——")
print("商品一:", price1, "元")
print("商品二:", price2, "元")
print("合计:", total, "元")
print("一共" + str(total) + "元")

你打 12 和 8,合计应是 20。如果出现 128,就是忘了 int()

3 和 5 两张纸条粘成 35

试着改成你的两个数。先猜合计,再跑。跑出来对了,小票才算做成。

不要在这里写 if。这节课只转换、只相加、只打印。

这节课我学会了

#review

记住这些:

  1. "3" + "5" 是 35。int("3") + int("5") 是 8。
  2. input 拿到的先是文字。要算账,先转换。
  3. int() 转整数,float() 转小数,str() 转文字。
  4. 转不成的内容会报错。比如 int("十二")

试着在心里跑一遍:

python
n1 = int(input("请输入第一个数:"))
n2 = int(input("请输入第二个数:"))
print(n1 + n2)

打 3 和 5,屏幕上应出现 8

下一课才比大小。先让两家认清楚。

试一试

#evaluate

看完就来检查一下。选错了也可以再想。

单选题

不转换就相加

a 和 b 都来自 input。用户依次输入 3 和 5。print(a + b) 最可能看到什么?

单选题

转换结果

int(「12」) + 1 的结果更接近哪一种?

单选题

哪把钥匙

float(「3」) 的结果更接近哪一种?

多选题

提问和转换

下列说法正确的有哪些?可以多选。

可多选

未登录时不会保存学习进度