
6.3 标准输入和标准输出函数
6.3.1 输入和输出函数
通过Python内置的输入函数input()和输出函数print()可以使程序与用户进行交互。
input()函数的格式如下。

input()函数提示用户输入,并返回用户从控制台输入的内容(字符串)。
print()函数的格式如下。

print()函数用于打印一行内容,即将多个以分隔符(sep,默认为空格)分隔的值(value,…,以逗号分隔的值)写入到指定文件流(file,默认为控制台sys.stdout)。其中,参数end指定换行符,flush指定是否强制写入到流。
【例6.3】 输入函数和输出函数示例1(io_test1.py)。

【例6.4】 输入函数和输出函数示例2(io_test2.py)。

程序运行结果如下。

【例6.5】 从控制台读取n个整数并计算其累计和(io_sum.py)。其中,n由程序的第一个命令行参数所确定。

程序运行结果如图6-4所示。

图6-4 命令行参数确认所需求和的整数个数
6.3.2 交互式用户输入
在编写控制台应用程序时经常需要实现交互式用户输入,根据用户输入可以在程序执行过程中改变其控制流程。
编写支持用户交互的程序必须考虑各种可能的用户输入,因此会导致程序的复杂度提高。注意,现代程序一般使用图形用户界面接收用户输入。
【例6.6】 编写程序(stat.py),输入批量数据(假定当输入-1时中止输入),统计所输入的数据个数,并求总和以及平均值。

程序运行结果如下。

6.3.3 运行时提示输入密码
如果在程序运行时需要提示用户输入密码,则可以使用模块getpass,以保证用户输入的密码在控制台中不回显。在getpass模块中包含以下两个函数:

如果系统不支持不回显,则getpass模块将导致getpass.GetPassWarning。
【例6.7】 运行时提示输入密码(getpass1.py)。

程序运行结果如图6-5所示。注意,该程序在集成开发环境IDLE下按F5键(或者执行IDLE菜单命令Run|Run Module)运行时会产生安全问题,将导致运行失败。

图6-5 运行时提示输入用户名和密码