1
2
3
4
5
6
7
作者:李晓辉

联系方式:

1. 微信:Lxh_Chat

2. 邮箱:939958092@qq.com
  1. Python 系列(一) 从零开始认识 Python,入门其实没那么难
  2. Python 系列(二) 学 Python 的第一步,把开发环境搭建好
  3. Python 系列(三) 基础语法避坑指南,缩进、大小写、续行与注释
  4. Python 系列(四) Python 输入输出详解,print()、input() 与常见避坑指南
  5. Python 系列(五) 数值类型与运算符详解,整除、浮点精度与进制转换实战
  6. Python 系列(六) 字符串处理实战,查找、替换、切片与日志分析
  7. Python 系列(七) 类型转换详解,int()、float()、str() 与金额计算避坑
  8. Python 系列(八) Python 流程控制入门,掌握 if、elif 和 else
  9. Python 系列(九) Python 逻辑运算符详解,and、or、not 一篇搞懂
  10. Python 系列(十) while、for 循环实战,彻底搞懂 range、break 与 continue

语法对了,程序才能跑起来;输入输出对了,程序才能和人、和系统对话。这一篇我们只讲两件事:怎么把信息打印出来,怎么从用户那里拿进来。看似基础,但在生产脚本里,print 的 sep 和 end 用错、input 返回永远是字符串这个特性没搞清,会导致无数低级 Bug。

上一篇我们搞定了大小写、缩进、续行和注释。从这一篇开始,我们进入 Python 的交互层,先把输出和输入的底层行为摸透。

简单输出:print 的默认行为

print() 能接受零个或多个参数,用逗号分隔。

1
print("Hello", 123, "Goodbye", 5 + 9)

运行结果:

1
Hello 123 Goodbye 14

默认行为是:

  • 多个参数时,每个参数之间用单个空格分隔
  • 最后一个参数后自动换行

很多人第一次用 print 时会疑惑,为什么参数之间会自动加空格。答案就是默认的 sep=" "。

可选参数:sep、end、file

默认行为可以改。

sep:参数之间的分隔符
end:最后一个参数之后显示的字符,默认是换行 \n
file:输出的目标文件,后面章节再讲

实战例子:

1
print("Hello", 123, "Goodbye", 5 + 9, sep=":", end="###")

运行结果:

1
Hello:123:Goodbye:14###

没有换行,末尾是 ###。在写日志或做简易进度条时,end 用来避免每次都换行很有用。

我老李在写运维脚本时常用 sep 把多字段拼成 key:value 的简易格式,方便后续用 split 解析。

简单输入:input 的三大特性

input() 提供运行时从键盘获取用户输入的机制。它有三个必须记住的特性:

  1. 接受可选的提示字符串作为参数
  2. 自动删除键盘输入中的换行符
  3. 始终返回字符串

提示字符串的用法

1
response = input("Please enter some text:")

运行:

1
Please enter some text: Hello

response 的值是 Hello。

如果提示里本身带换行:

1
response = input("Please enter some text:\n")

运行:

1
2
Please enter some text:
Goodbye

提示会先换行,再等待输入。

输入永远是字符串

这是新手最容易踩的坑。

1
2
response = input("Please enter a number: ")
print("The response of", response, "is of type", type(response))

输入 456 后运行结果:

1
2
Please enter a number: 456
The response of 456 is of type <class 'str'>

即使你输入的是数字,input() 也会把它当成字符串返回。后面需要把它转成 int 或 float 才能做数学运算,否则会直接报 TypeError。

再看一个组合例子:

1
2
response = input("Please enter some text:\n")
print("The last response is", response, sep=":")

运行:

1
2
3
Please enter some text:
Goodbye
The last response is:Goodbye

这里用 sep=":" 把两部分连成一行。

flowchart LR
    A[用户输入] --> B["input() 读取"]
    B --> C{返回类型?}
    C -->|始终| D[str 字符串]
    D --> E[需要时手动转换]
    E --> F[计算或处理]
    F --> G["print() 输出"]
    G --> H[屏幕/日志]

生产环境常见坑与建议

  • 忘记转换类型:input 返回字符串,直接 + 会拼接而不是相加。我建议在获取数值输入后立刻做 int() 或 float() 转换,并在转换时加 try/except 兜底。
  • 多参数输出乱序:print 忽略参数间的额外空格,靠 sep 控制分隔符比手动加空格更可靠。
  • 换行控制不当:写进度日志时用 end="" 或 end="\r",避免刷屏。
  • 提示不清晰:交互脚本的提示要写完整,包含单位和示例,减少用户输入错误。

小练习思路

前面我们用 print 输出了信息,用 input 拿到了输入。现在可以把它们连起来:

  1. 提示用户输入名字和姓氏
  2. 用 print 拼接成全名
  3. 再让用户输入年龄,打印出完整的个人信息

注意年龄需要先转成 int 才能判断是否合法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 1. 提示输入名字和姓氏
first_name = input("请输入名字: ")
last_name = input("请输入姓氏: ")

# 2. 用 print 拼接成全名
full_name = f"{first_name} {last_name}"
print("全名:", full_name)

# 3. 输入年龄并转成 int
age_input = input("请输入年龄: ")
try:
age = int(age_input)
if age > 0 and age < 150:
print(f"个人信息 -> 姓名: {full_name}, 年龄: {age} 岁")
else:
print("年龄不合法,请输入 1~149 之间的数字")
except ValueError:
print("年龄必须是数字,请重新输入")
1
2
3
4
5
请输入名字: 晓辉
请输入姓氏: 李
全名: 晓辉 李
请输入年龄: 35
个人信息 -> 姓名: 晓辉 李, 年龄: 35 岁

写在最后

这一篇我们掌握了:

  • print() 的默认行为和 sep、end 参数
  • input() 始终返回字符串,并自动去掉换行
  • 输入输出的组合使用是交互式脚本的基础

把输出和输入的边界搞清楚,下一步才能安心地讲数值类型和字符串方法。