>>> from env_helper import info; info()
页面更新时间: 2024-01-06 08:46:29
运行环境:
    Linux发行版本: Debian GNU/Linux 12 (bookworm)
    操作系统内核: Linux-6.1.0-16-amd64-x86_64-with-glibc2.36
    Python版本: 3.11.2

1.6. 写一个应用程序

虽然交互式环境对于一次运行一条Python指令很好,但要编写完整的Python程序,就需要在文件编辑器中输入指令。 “文件编辑器”类似于 NotepadTextMate 这样的文本编辑器,它有一些针对程序源代码的特殊处理功能。 要在IDLE中打开文件编辑器,请选择 File New Window

出现的窗口中应该包含一个光标,等待你输入,但它与交互式环境不同。在交互式环境中,按下回车,就会执行Python指令。文件编辑器允许输入许多指令,保存为文件,并运行该程序。下面是区别这两者的方法:

  • 交互式环境窗口具有 >>> 提示符。

  • 文件编辑器窗口没有 >>> 提示符。

现在是创建第一个程序的时候了!在文件编辑器窗口打开后,输入以下内容:

# This program says hello and asks for my name.

print('Hello world!')
print('What is your name?') # ask for their name
myName = input()
print('It is good to meet you, ' + myName)
print('The length of your name is:')
print(len(myName))
print('What is your age?') # ask for their age
myAge = input()
print('You will be ' + str(int(myAge) + 1) + ' in a year.')

在输入完源代码后保存它, 这样就不必在每次启动IDLE时重新输入。 从文件 编辑器窗口顶部的菜单,选择 File>SaveAs 。 在“SaveAs”窗口中,在输入框输入 hello.py , 然后点击 Save

在输入程序时,应该过一段时间就保存你的程序。 这样,如果计算机崩溃,或者不小心退出了 IDLE , 也不会丢失代码。作为快捷键, 可以在Windows和Linux 上按Ctrl-S, 在OS X上按 ⌘-S ,来保存文件。

在保存文件后,让我们来运行程序。 选择 Run Run Module ,或按下 F5 键。 程序将在交互式环境窗口中运行,该窗口是首次启动IDLE时出现的。 记住, 必须在文件编辑器窗口中按 F5 , 而不是在交互式环境窗口中。在程序要求输入时,输入你的名字。 在交互式环境中,程序输出应该看起来像前面代码的运行结果那样:

如果没有更多代码行要执行,Python程序就会“中止”。 也就是说,它停止运行。(也可以说Python程序“退出”了。)

可以通过点击窗口上部的X,关闭文件编辑器。 要重新加载一个保存了的程序, 就在菜单中选择File ►Open。现在请这样做, 在出现的窗口中选择 hello.py , 并点击“Open”按钮。 前面保存的程序 hello.py 应该在文件编辑器窗口中打开。

1.6.1. 保存并执行程序

交互式解释器是Python的亮点之一,它让你能够实时地测试解决方案以及尝试使用Python。 要了解隐藏在背后的工作原理,只需尝试使用即可! 然而,等你退出交互式解释器时,你在其中编写的所有代码都将丢失。 你的终极目标是编写自己和他人都能运行的程序。本节将介绍如何达成这种目标。

首先,你需要一个文本编辑器——最好是专门用于编程的(不推荐使用Microsoft Word之类 的软件,但如果你使用的是这样的软件,务必以纯文本的方式保存代码)。如果你使用的是IDLE, 那就太幸运了。在这种情况下,只需选择菜单File→New File。这将新建一个编辑器窗口,其中没有交互式提示符。首先,输入如下代码:

>>> print("Hello, world!")
Hello, world!

接下来,选择菜单File→Save保存程序(其实就是一个纯文本文件)。务必将文件存储在以后 能够找到的地方,并指定合理的文件名,如hello.py(扩展名.py很重要)。

保存好了吗?请不要关闭包含程序的窗口。如果关闭了,选择菜单File→Open重新打开。现在可以运行这个程序了,方法是选择菜单Run→Run Module。

结果如何呢?在解释器窗口中打印了Hello, world!,这正是我们想要的结果。根据你使用的版本,解释器提示符可能消失,要让它重新出现,可在解释器窗口中按回车键。

接下来,将脚本扩展成下面这样:

>>> name = input("What is your name? ")
>>> print("Hello, " + name + "!")
What is your name? Python
Hello, Python!

如果你运行这个脚本(别忘了先保存),将在解释器窗口中看到如下提示信息:

What is your name?

输入你的名字(如Gumby)并按回车键,你将看到类似于下面的内容:

Hello, Gumby!

1.6.2. 使用海龟绘图法

编写简单示例时,print语句很有用,因为几乎在任何地方都可使用它。如果你要尝试提 供更有趣的输出,应考虑使用模块turtle,它实现了海龟绘图法。如果你正在运行IDLE,就 可使用这个模块,它让你能够绘制图形(而不是打印文本)。通常,应避免导入模块中所有的 名称,但尝试使用海龟绘图法时,这样做可提供极大的方便。

>>> from turtle import *

确定需要使用哪些函数后,可回过头去修改import语句,以便只导入这些函数。

海龟绘图法的理念源自形如海龟的机器人。这种机器人可前进和后退,还可向左和向右 旋转一定的角度。另外,这种机器人还携带一只铅笔,可通过抬起或放下来控制铅笔在什么时候接触到脚下的纸张。模块turtle让你能够模拟这样的机器人。例如,下面的代码演示了如何绘制一个三角形:

forward(100)
left(120)
forward(100)
left(120)
forward(100)

如果你运行这些代码,将出现一个新窗口,其中有一个箭头形“海龟”不断地移动,并 在身后留下移动轨迹。 要将铅笔抬起,可使用 penup() ; 要将铅笔重新放下,可使用 pendown() 。 要了解如何绘图,可尝试在网上搜索海龟绘图法(turtle graphic)。 学习更多的概念后,你可能想用海龟绘图法替换平淡的 print() 函数。 在尝试使用海龟绘图法的 过程中,你很快就会发现需要使用后面将介绍的一些基本编程结构。 例如,如何在前面的示 例中避免反复调用命令 forwardleft , 如何绘制八角形(而不是三角形)以及如何以尽可能 少的代码绘制多个边数各不相同的正多边形。

1.6.3. 从命令提示符运行 Python 脚本

实际上,运行程序的方式有多种。首先,假定你打开了DOS窗口或UNIX shell, 并切换到了 Python可执行文件(在Windows中为python.exe,在UNIX中为python)或将该可执行文件所在的 目录加入到了环境变量 PATH 中。 另外,假定前一节的脚本( hello.py )存储在当前目录下。 满足上述条件后,就可在Windows中使用如下命令来执行这个脚本:

C:\>python hello.py

在UNIX系统中,可使用如下命令:

$ python hello.py

如你所见,命令是一样的,只是系统提示符不同。

1.6.4. 让脚本像普通程序一样

在有些情况下,你希望能够像执行其他程序(如Web浏览器或文本编辑器)一样执行Python 脚本,而无需显式地使用Python解释器。 UNIX提供了实现这种目标的标准方式:让脚本的第一 行以字符序列#!(称为pound bang或shebang)开始, 并在它后面指定用于对脚本进行解释的程序(这里是Python)的绝对路径。 即便你对这一点不太明白,只需将下面的代码作为脚本的第一行, 就可在UNIX中轻松运行脚本:

!/usr/bin/env python

不管Python库位于什么地方,这都将让你能够像运行普通程序一样运行脚本。 如果你安装了 多个版本的Python,可用更具体的可执行文件名(如python3)替换python。

要像普通程序一样运行脚本,还必须将其变成可执行的:

$ chmod a+x hello.py

现在,可以像下面这样来运行它(假定当前目录包含在执行路径中):

$ hello.py

如果这不管用,请尝试使用 ./hello.py ,这在当前目录( . )未包含在执行路径中时也管用(负责的系统管理员会告诉你执行路径是什么)。 如果你愿意,可对文件进行重命名并删除扩展名.py,使其看起来更像普通程序。 如果双击会如何呢 在Windows中,扩展名 .py 是让脚本像普通程序一样的关键所在。 请尝试双击前一节保存的文件 hello.py 。 如果正确地安装了Python,这将打开一个DOS窗口,其中包含提示信息What is your name?。 然而,这样运行程序存在一个问题:输入名字后,程序窗口将立即关闭,你根本来不及看清结果。 这是因为程序结束后窗口将立即关闭。尝试修改脚本,在末尾添加如下代码行:

>>> input("Press <enter>")
Press <enter>
''

等你按回车键后,窗口将立即关闭,因为程序结束了。