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() 与金额计算避坑

语法对了,程序才能跑起来;输入输出对了,程序才能和人、和系统对话。这一篇我们只讲两件事:怎么把信息打印出来,怎么从用户那里拿进来。看似基础,但在生产脚本里,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() 始终返回字符串,并自动去掉换行
  • 输入输出的组合使用是交互式脚本的基础

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