
2.3 输入与输出
程序的输入与输出是人与程序最基本的交互信息,Python中实现程序的输入与输出非常轻松。
2.3.1 py文件
在后续内容中,程序会越编写越多,此时IPython这类交互式编程环境已不适用,因为它无法保存写过的代码。
为了方便程序的编写与修改,我们直接将程序写入以.py为扩展名的文件即可。本节将介绍如何使用VS Code编辑器(简称VS Code)编写代码,如果没有下载VS Code并配置编写Python的环境,请阅读1.5.4节内容,下面直接使用VS Code。
首先,我们在本地创建一个用于存放代码的目录,然后打开VS Code,单击“Open Folder”按钮,选择并打开刚刚创建的目录,在空白处右击,在弹出的快捷菜单中选择“New File”命令,在弹出的对话框中输入一个以.py结尾的文件名,由此完成py文件的创建。图2.1所示为创建了一个名为example.py的文件。

图2.1
如果在VS Code中运行Python代码,首先打开Commands,输入“Python: Select interpreter”,选择Python解释器(具体步骤可参考1.5.4节)。然后选择完成后,在文件空白处右击,在弹出的快捷菜单中选择“Run PythonFile in Terminal”命令。
2.3.2 输出数据
Python中通过print方法实现输出,代码如下:

print方法默认会将数据输出到屏幕并且自动换行。如果不希望print方法在输出完内容后自动换行,可以使用end参数,代码如下:

print方法在面对一些需要格式化输出的变量时会显得力不从心,此时可以使用pprint模块下的pprint方法,它可以将数据格式化地输出,该方法参数如下:

● object:表示要输出的变量对象。
● stream:表示输出流,默认值为sys.stdout,即在屏幕上输出。
● indent:表示缩进空格数。
● width:表示每行最大显示字符数,默认为80个字符,如果超过80个字符,则换行显示。但单个对象超过80个字符并不会换行,如一大段文字。
● depth:表示最大数据的层级。当数据有很多层时,可以限制输出层级,超过的层级用符号“…”代替。
● compact:表示当compact为True时,输出时会尽量填满width规定的字符数;当compact为False时,如果超过width规定的字符数,则以多行形式输出。
使用pprint方法的示例代码如下:

2.3.3 获得输入数据
在Python中使用input方法,可以轻松获得用户通过键盘输入的内容,该方法会返回字符串型的数据。使用input方法的示例如下:

上述代码通过input方法接收用户输入,该方法可以将提示信息作为参数,程序运行时会暂停在input方法处等待用户键盘输入,用户在输入完成后,按“Enter”键结束输入。
通过前面介绍的内容,我们可以编写一个简单的聊天机器人程序,代码如下:

上述代码通过while关键字实现了循环(loop),与循环相关的详细内容可以阅读2.4.4节,读者目前只需理解循环可以重复执行代码块中的程序即可。这里实现了一个无限循环,即程序会一直执行代码块逻辑。
所谓的聊天机器人只是将每一个问题最后的“吗?”通过replace方法替换成空,从而实现将疑问句变成陈述句的目的。