第 3 课 / 共 9 课14 分钟2 个闯关

输入与类型:文字和数字不是一回事

input 拿回来的永远是字符串——新手第一个大坑,这节课拆开讲。

让程序听你说话

name = input("请输入你的名字:")
print(f"你好,{name}!")

input() 做三件事:把括号里的提示打到屏幕上 → 停下来等你敲字符并回车 → 把你敲的内容交出来,装进左边的抽屉。

最经典的一个坑

age = input("你今年多大?")
print(age + 1)

报错:TypeError: can only concatenate str (not "int") to str

翻译成人话:"文字"和"数字"不能相加

关键事实是:input() 拿回来的永远是字符串,哪怕你输入的看起来是数字。 你输入 18,它给你的是文字 "18",不是数字 18

文字的 + 是"拼接",数字的 + 是"相加"。Python 看到左边是文字、右边是数字,不知道你要哪种,干脆报错——这其实是好事,总比默默算错强。

类型转换

int() 把文字变成整数:

age = int(input("你今年多大?"))
print(f"明年你就 {age + 1} 岁了")

常用的三个转换函数:

int("18")      # 18      文字 → 整数
float("1.5")   # 1.5     文字 → 小数
str(18)        # "18"    数字 → 文字

注意 int("abc") 会报错 ValueError,因为 abc 没法解释成数字。int("1.5") 同样会报错——整数转换不接受小数点,要先 float("1.5")int(...),结果是 1(直接砍掉小数部分,不是四舍五入)。

除法的两种

print(7 / 2)    # 3.5   普通除法,结果一定是小数
print(7 // 2)   # 3     整除,砍掉小数部分
print(7 % 2)    # 1     取余数

% 取余非常有用。判断一个数是不是偶数,就看它除以 2 的余数是不是 0。

运算符速查

a + b    # 加(数字相加 / 文字拼接)
a - b    # 减
a * b    # 乘("ab" * 3 得到 "ababab",也合法)
a / b    # 除,得小数
a ** b   # 幂,2 ** 10 得 1024

一个完整的小程序

# BMI 计算器
weight = float(input("体重(公斤):"))
height = float(input("身高(米):"))
bmi = weight / (height ** 2)
print(f"你的 BMI 是 {bmi:.1f}")

{bmi:.1f} 里的 :.1f 是格式说明:保留 1 位小数。不写的话会打出一长串小数,很难看。

10 秒自测

print("3" + "4") 输出什么?

答案是 34。两个都是文字,+ 做的是拼接不是加法。想得到 7,要写 int("3") + int("4")

广告位(未配置 AdSense,上线后在此展示)

动手闯关

读懂了不算会,写出来才算

0/2 已通过

闯关和判题完全免费,交错了不扣任何东西。卡住随时点「问 AI」,它能看到你正在写的代码。

关卡 01选择+10 点 · +15 XP

为什么会报 TypeError

这段代码报错 `TypeError`: ```python age = input("年龄:") print(age + 1) ``` 最直接的原因是什么?

  • 可能是多选,选错不扣点数,随便试。
登录后闯关拿点数
关卡 02写代码+15 点 · +25 XP

写一个加法器

程序会从键盘读入两行,每行一个整数。请输出它们的和。 例如输入 `3` 和 `4`,输出 `7`。

示例输入

3
4

应该输出

7
pythonTab 缩进 4 空格

学完了?标记一下

标记完成会记进度、涨 20 XP,还会点亮连续学习天数。