>>> 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程序,就需要在文件编辑器中输入指令。
“文件编辑器”类似于 Notepad
或 TextMate
这样的文本编辑器,它有一些针对程序源代码的特殊处理功能。
要在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()
函数。
在尝试使用海龟绘图法的
过程中,你很快就会发现需要使用后面将介绍的一些基本编程结构。
例如,如何在前面的示 例中避免反复调用命令 forward
和 left
,
如何绘制八角形(而不是三角形)以及如何以尽可能
少的代码绘制多个边数各不相同的正多边形。
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>
''
等你按回车键后,窗口将立即关闭,因为程序结束了。