Menu

Python print() 和 input():读取用户输入并显示输出

Python 的 print() 和 input() 函数是怎么工作的,还有分隔符、结尾字符,以及如何把用户输入转换成数字。

本页包含可运行的编辑器。编辑、运行,立即查看输出。

让程序能与人交互的两个函数

大多数早期的 Python 程序都是同一种结构:用 input() 向用户要点东西,处理这个回答,再用 print() 反馈结果。这两个内置函数就是你的代码与外界对话的方式。

我们一个一个来看。

print():写出输出

最简单的用法是,print() 向终端写一行文本:

它会输出单词 hello,后面跟一个换行。屏幕上正是靠这个换行把一次 print 调用和下一次分隔开。

你可以在一次调用中传入多个值,Python 会在它们之间加一个空格:

输出:

Name: Ada Age: 36

这些值不一定是字符串。print 会对每个参数调用 str(),所以你可以随意混用各种类型:

修改分隔符

如果你不想在值之间用空格,就用 sep:

修改行尾

print 默认会在末尾加一个换行。用 end 可以改变这一点,比如让输出保持在同一行:

end="" 是一点一点拼出一行内容的诀窍。

默认情况下,print 写入 stdout(标准输出),也就是终端输出通常出现的地方。你可以用 file 参数把它重定向到 stderr、文件或任何其他类文件对象:

如果需要格式化输出,比如保留两位小数、填充对齐的列、给大数字加逗号,就在 print 里使用 f-string:

input():读取用户输入

input(prompt) 会让程序停下来,向用户显示提示语,然后等待。用户在按下回车之前输入的所有内容,都会作为字符串返回。

关于 input,有三点经常让新手踩坑:

它总是返回字符串

即使用户输入的是 42,你得到的也是字符串 "42"。你不能直接对它做算术运算:

这就是为什么你会经常看到 int(input(...)) 或 float(input(...)) 这样的写法。如果用户输入的不是有效数字,int() 会抛出 ValueError,我们会在讲异常的那一章中正确处理它。

提示语是可选的

如果你不传提示字符串,input() 就会默默地等待,这几乎总是不对的:用户根本不知道你在要什么。一定要传入清晰的提示语:

它不会去掉任何东西

用户输入的任何内容,包括开头和结尾的空白,都会原样返回。如果这会影响你的逻辑,就调用 .strip():

一个完整的小程序

把这些结合起来:几行代码向用户询问信息,然后打印一份小报告:

十二行代码。它从上往下读起来像一份说明,而不像代码。这正是这些文档想要倡导的风格。

用 print 调试怎么样?

你有时会听到这种说法:“真正的开发者用调试器,不用 print 语句。”这说得太绝对了。print 是一个非常好的调试工具,尤其适合小脚本和快速实验。在弄清楚某个问题时,尽管多加一些 print 调用,完成后再删掉它们。

两个提升体验的小技巧:

f-string 里的 = 会同时打印名字和值,省去大量 print("name =", name) 这样的样板代码。

继续前进

print 和 input 组成了一个完整的对话循环:提问、读取、回应。下一章开始加入条件:if 语句,以及根据程序看到的值来决定它做什么的运算符。

常见问题

Python 中的 print() 有什么作用?

它把值写到终端上。print("hello") 会输出 hello,后面跟一个换行。你可以传入多个用逗号分隔的值,print() 默认会在它们之间加一个空格。

Python 中的 input() 是怎么工作的?

input(prompt) 会暂停程序,向用户显示提示语,等待用户输入内容并按下回车,然后把输入的内容作为字符串返回。返回的总是字符串,如果你想要数字,就把调用包在 int(...) 或 float(...) 里。

Python 中怎么在同一行打印?

给 print 传入 end=""。默认情况下,print 会在输出后加一个换行;把 end 设为空字符串(或其他任意字符)就会替换掉这个换行。

Coddy 编程语言插图

和 Coddy 一起学编程

开始