第一个程序
虽然交互式环境对于一次运行一条 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 时重新输入。从文件编辑器窗口顶部的菜单,选择 FileSave As。在“Save As”窗口中,在输入框输入hello.py,然后点击“Save”
在保存文件后,让我们来运行程序。选择 win+R,输入cmd。在弹出的窗口输入 cd + 刚才文件的地址,接着输入 ‘python hello.py’。在程序要求输入时,输入你的名字。在交互式环境中,程序输出应该看起来像这样:
如果没有更多代码行要执行,Python 程序就会“中止”。也就是说,它停止运行。(也可以说 Python 程序“退出”了。)
程序剖析
新程序在文件编辑器中打开后,让我们快速看一看它用到的 Python 指令,逐一查看每行代码。
注释
下面这行称为“注释”:
# This program says hello and asks for my name.
Python 会忽略注释,你可以用它们来写程序注解,或提醒自己代码试图完成的事。这一行中,#标志之后的所有文本都是注释。
有时候,程序员在测试代码时,会在一行代码前面加上#,临时删除它。这称为“注释掉”代码。在你想搞清楚为什么程序不工作时,这样做可能有用。稍后,如果你准备还原这一行代码,可以去掉#。
Python 也会忽略注释之后的空行。在程序中,想加入空行时就可以加入。这会让你的代码更容易阅读,就像书中的段落一样。
print()函数
print()函数将括号内的字符串显示在屏幕上:
print('Hello world!')
print('What is your name?') # ask for their name
代码行 print(‘Hello world!’)表示“打印出字符串’Hello world!'的文本”。Python执行到这行时,你告诉 Python 调用 print()函数,并将字符串“传递”给函数。传递给函数的值称为“参数”。请注意,引号没有打印在屏幕上。它们只是表示字符串的起止,不是字符串的一部分。
也可以用这个函数在屏幕上打印出空行,只要调用 print()就可以了,括号内没有任何东西。在写函数名时,末尾的左右括号表明它是一个函数的名字。
input()函数
函数等待用户在键盘上输入一些文本,并按下回车键。
myName = input()
这个函数求值为一个字符串,即用户输入的文本。前面的代码行将这个字符串赋给变量 myName。
你可以认为 input()函数调用是一个表达式,它求值为用户输入的任何字符串。如果用户输入’Al’,那么该表达式就求值为 myName = ‘Al’。
打印用户的名字
接下来的 print()调用,在括号间包含表达式’It is good to meet you, ’ + myName。
print('It is good to meet you, ' + myName)
要记住,表达式总是可以求值为一个值。如果’Al’是上一行代码保存在 myName中的值,那么这个表达式就求值为’It is good to meet you, Al’。这个字符串传给 print(),它将输出到屏幕上。
len()函数
你可以向 len()函数传递一个字符串(或包含字符串的变量),然后该函数求值为一个整型值,即字符串中字符的个数。
print('The length of your name is:')
print(len(myName))
len(myName)求值为一个整数。然后它被传递给 print(),在屏幕上显示。请注意,print()允许传入一个整型值或字符串。
str()、int()和 float()函数
如果想要连接一个整数(如 29)和一个字符串,再传递给 print(),就需要获得值’29’。它是 29 的字符串形式。str()函数可以传入一个整型值,并求值为它的字符串形式,像下面这样:
因为 str(29)求值为’29’,所以表达式’I am ’ + str(29) + ’ years old.‘求值为’I am ’ + ‘29’ + ’ years old.’,它又求值为’I am 29 years old.'。这就是传递给 print()函数的值。
str()、int()和 float()函数将分别求值为传入值的字符串、整数和浮点数形式。请尝试用这些函数在交互式环境中转换一些值,看看会发生什么:
前面的例子调用了 str()、int()和 float()函数,向它们传入其他数据类型的值,得到了字符串、整型或浮点型的值。
如果想要将一个整数或浮点数与一个字符串连接,str()函数就很方便。如果你有一些字符串值,希望将它们用于数学运算,int()函数也很有用。例如,input()函数总是返回一个字符串,即便用户输入的是一个数字。在交互式环境中输入 spam = input(),在它等待文本时输入 101:
保存在 spam 中的值不是整数 101,而是字符串’101’。如果想要用 spam 中的值进行数学运算,那就用 int()函数取得 spam 的整数形式,然后将这个新值存在 spam 中。
现在你应该能将 spam 变量作为整数,而不是字符串使用。
请注意,如果你将一个不能求值为整数的值传递给 int(),Python 将显示出错信息。
如果需要对浮点数进行取整运算,也可以用 int()函数。
在你的程序中,最后 3 行使用了函数 int()和 str(),取得适当数据类型的值:
print('What is your age?') # ask for their age
myAge = input()
print('You will be ' + str(int(myAge) + 1) + ' in a year.')
myAge 变量包含了 input()函数返回的值。因为 input()函数总是返回一个字符串(即使用户输入的是数字),所以你可以使用 int(myAge)返回字符串的整型值。这个整型值随后在表达式 int(myAge) + 1 中与 1 相加。
相加的结果传递给 str()函数:str(int(myAge) + 1)。然后,返回的字符串与字符串’You will be ‘和’ in a year.'连接,求值为一个更长的字符串。这个更长的字符串最终传递给 print(),在屏幕上显示。
假定用户输入字符串’4’,保存在 myAge 中。字符串’4’被转换为一个整型,所以你可以对它加 1。结果是 5。str()函数将这个结果转化为字符串,这样你就可以将它与第二个字符串’in a year.'连接,创建最终的消息。