Files
PythonLearn/01_python基础/1_3_输入与输出/README.md
2026-07-22 16:42:56 +08:00

9.8 KiB
Raw Blame History

第 1-3 课:输入与输出

一、本课目标

完成本课后,你应该能够:

  1. 解释程序的输入、处理和输出;
  2. 使用 input() 接收用户输入;
  3. 理解 input() 得到的结果始终是字符串;
  4. 将输入的数字文本转换成整数或浮点数;
  5. 使用 f-string 输出包含变量的完整句子;
  6. 使用 print()sepend 调整简单的输出格式;
  7. 编写一个能与用户进行基础交互的小程序。

二、前置知识

开始本课前,你应该已经掌握:

  • 使用 print() 输出内容;
  • 创建和使用变量;
  • 区分 strintfloatbool
  • 使用 int()float()str() 进行简单类型转换;
  • 使用 f-string 将变量放入字符串。

三、程序的输入、处理和输出

很多程序都可以简化成三个阶段:

输入Input → 处理Process → 输出Output

例如,一个计算明年年龄的程序:

  1. 输入:用户输入当前年龄;
  2. 处理:当前年龄加 1
  3. 输出:显示明年的年龄。

第一课中的程序只有固定输出。学会输入后,程序就能根据不同用户提供的数据生成不同结果。

四、使用 input() 接收输入

最简单的输入代码如下:

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

运行到 input() 时,程序会暂停并等待用户输入。用户输入内容并按下回车键后,程序才会继续向下执行。

input() 圆括号中的字符串称为提示语,用于告诉用户应该输入什么。

执行过程如下:

程序显示:请输入你的名字:
用户输入Bruce
用户按下回车键
变量 user_name 保存字符串 "Bruce"
程序显示你好Bruce

五、input() 的结果始终是字符串

无论用户输入看起来像文字、整数还是小数,input() 返回的结果都是字符串 str

age = input("请输入你的年龄:")
print(type(age))

如果输入 18,类型仍然是:

<class 'str'>

这是因为终端接收到的是用户键入的一串字符。Python 不会擅自判断这串字符应该表示姓名、年龄、电话号码还是其他内容。

六、输入数字后进行类型转换

如果输入内容需要参与数学计算,就要先进行类型转换。

6.1 转换为整数

age_text = input("请输入你的年龄:")
age = int(age_text)
next_year_age = age + 1

print(f"明年你将 {next_year_age} 岁。")

这里特意使用两个变量:

  • age_text 保存用户输入的原始字符串;
  • age 保存转换后的整数。

这样命名能清楚表达数据转换前后的区别。

也可以写成:

age = int(input("请输入你的年龄:"))

这种写法更短,但初学阶段不容易观察每一步。建议先掌握分步写法,理解后再使用组合写法。

6.2 转换为浮点数

如果用户可能输入小数,可以使用 float()

daily_hours_text = input("你计划每天学习多少小时:")
daily_hours = float(daily_hours_text)
weekly_hours = daily_hours * 7

print(f"按照计划,你每周将学习 {weekly_hours} 小时。")

七、转换失败时会发生什么

如果程序执行 int("十八")Python 无法把中文“十八”直接转换成整数,会产生类似错误:

ValueError: invalid literal for int()

ValueError 可以理解为“数据的值不适合当前操作”。

本课练习时,请按照提示输入正确格式的数据。以后学习异常处理时,我们会让程序在用户输入错误后给出友好提示,而不是直接结束。

八、使用 f-string 组织输出

从用户取得数据后,常常要把多个变量组合成容易阅读的结果:

user_name = "Bruce"
learning_days = 3
daily_hours = 2.5

print(f"{user_name} 已学习 Python {learning_days} 天,每天计划学习 {daily_hours} 小时。")

f-string 中:

  • 引号内的普通文字会原样显示;
  • 花括号中的变量会替换成变量保存的数据;
  • 花括号中也可以放简单计算。

例如:

print(f"一周计划学习 {daily_hours * 7} 小时。")

为了让代码更容易阅读,较重要或较复杂的计算通常先保存到变量中,再进行输出。

九、一次接收多个输入

程序可以连续调用多次 input()

user_name = input("请输入你的名字:")
learning_goal = input("请输入你的学习目标:")

print(f"学习者:{user_name}")
print(f"学习目标:{learning_goal}")

每次遇到 input(),程序都会等待一次输入。输入顺序必须与程序询问顺序一致。

十、进一步认识 print()

10.1 一次输出多个内容

print() 可以接收多个内容,中间使用英文逗号分隔:

print("Python", "FastAPI", "Django")

默认输出:

Python FastAPI Django

注意:代码中的英文逗号负责分隔多个数据,默认显示结果会使用空格连接它们。

10.2 使用 sep 设置分隔符

sep 是 separator 的缩写,表示多个输出内容之间的分隔符:

print("Python", "FastAPI", "Django", sep=" -> ")

输出:

Python -> FastAPI -> Django

sep 不是需要显示的普通内容,而是传给 print() 的命名参数。函数和参数将在后续课程系统讲解,本课先掌握这种常用写法。

10.3 使用 end 设置结尾

print() 默认在输出结束后换行。可以通过 end 改变结尾:

print("正在学习", end="")
print("Python")

输出:

正在学习Python

第一条 print() 没有立即换行,因此第二条内容接在后面。

现阶段不要过度使用 sepend。只有当它们能让输出格式更清楚时才使用。

十一、空字符串

如果用户看到输入提示后没有输入任何内容,直接按下回车键,input() 会返回空字符串:

""

空字符串是一个长度为零的字符串。它不是 0,也不是 False 本身。

以后学习条件判断时,我们会检查用户是否输入了内容。本课练习时,请按提示提供非空数据。

十二、运行本课示例

在 PowerShell 中执行:

cd D:\Code\Python\01_python基础\1_3_输入与输出
python input_output.py

程序会依次要求你输入:

  1. 姓名或称呼;
  2. 已学习 Python 的天数;
  3. 每天计划学习的小时数;
  4. 学习目标。

可以参考以下输入:

Bruce
3
2.5
开发 LLM Agent

输入整数和小数时暂时不要使用中文数字或附加单位。例如输入 3,不要输入 3天

十三、示例程序执行过程

input_output.py 大致完成以下步骤:

  1. 接收姓名并保存为字符串;
  2. 接收学习天数的原始文本;
  3. 把学习天数转换为整数;
  4. 接收每天学习小时数的原始文本;
  5. 把学习小时数转换为浮点数;
  6. 接收学习目标;
  7. 计算每周计划学习时间;
  8. 使用 f-string 输出个人学习计划。

请对照源代码,找出每一步对应的代码。

十四、常见错误

14.1 程序像是停止了

如果最后显示输入提示但没有出现新的 PowerShell 提示符,程序通常不是卡住,而是在等待你输入内容并按回车键。

14.2 数字后添加了单位

输入:

3天

不能直接通过 int() 转换。提示要求输入数字时,应只输入:

3

单位由程序在输出时添加。

14.3 把 input 写成大写

Python 区分大小写。正确名称是 input,不是 InputINPUT

14.4 忘记保存输入结果

input("请输入名字:")
print(user_name)

上面的输入没有赋给 user_name,之后使用该变量会产生 NameError

正确写法:

user_name = input("请输入名字:")

14.5 字符串不能直接与整数相加

age_text = input("请输入年龄:")
next_year_age = age_text + 1

age_text 是字符串,必须先使用 int() 转换后再参与加法计算。

十五、课堂练习

打开 practice.py编写一个“Agent 开发学习计划生成器”。程序需要接收用户输入,完成简单计算,并输出一份格式清晰的学习计划。

运行命令:

python practice.py

请至少使用一次:

  • input()
  • int()
  • float()
  • f-string
  • 有明确含义的英文变量名。

十六、思考题

  1. 为什么用户输入 18 后,input() 返回的仍然是字符串?
  2. 什么时候应使用 int(),什么时候应使用 float()
  3. 如果用户输入 2.5,能否使用 int() 直接转换?
  4. print("A", "B", sep="-") 会输出什么?
  5. 为什么输入数字时不建议让用户同时输入“天”“小时”等单位?

十七、本课小结

  • 许多程序都包含输入、处理和输出三个阶段;
  • input() 会显示提示并等待用户输入;
  • input() 返回的数据始终是字符串;
  • 数字文本参与计算前,通常需要使用 int()float() 转换;
  • f-string 可以将用户输入、计算结果和固定文字组合起来;
  • print() 可以一次输出多个数据;
  • sep 可以设置多个数据之间的分隔符;
  • end 可以设置输出结尾;
  • 转换数字时,输入内容必须符合对应格式。

十八、验收标准

  • 能使用 input() 接收并保存用户输入;
  • 能证明 input() 返回的是字符串;
  • 能把数字文本转换为整数或浮点数;
  • 能使用输入的数据进行简单计算;
  • 能使用 f-string 输出完整句子;
  • 能使用 sepend 调整一次输出;
  • 能完成并运行 practice.py
  • 能回答五道思考题。