基础

“规范的‘python是一种伟大的第一语言’,引出‘python是一种伟大的最后语言!’

—诺亚·斯普里尔

现在我们将介绍Python编程语言的基础知识。我们从臭名昭著的开始 你好,世界! 程序和Python脚本的基本语法。

注意

确保您的虚拟环境已激活!如果你没有 (python101) 在命令行提示前,需要使用

$ source ~/.virtualenvs/python101/bin/activate

执行以下命令以启动交互式python解释器:

$ python

您应该看到终端中打印了几行,第一行说明了当前日期和时间中所使用的Python版本。最后一行应该从 >>> 表示python提示。您可以在那里编写python命令并执行它们。

注意

在上一章 Unix外壳 介绍了UNIX shell的基本命令。注意每个命令是如何被 $ 性格。在本教程中,代码块以 $ 符号应该在unix shell中执行。如果代码块前面有 >>> 这意味着它要么在Python解释器中执行,要么在Python脚本中使用。

作为交互式计算器的python

为了让你的脚被python弄湿,你可以使用python解释器作为计算器。你可以使用一些常用的数学运算符,比如

+

添加,

-

减法,

*

乘法,

/

部门,

**

指数,

//

整数除法,和

%

模量。

如果您不熟悉其中一个,只需在python解释器中进行一次尝试——不仅要使用整数,还要使用浮点数。您也可以像在数学表达式中那样使用括号。尝试python是否使用与运算符执行顺序相关的适当数学规则。

注解

在某一时刻,您将输入一个“无效”表达式,如 1 + * 2 .然后,python将提升 SyntaxError 告诉您键入的内容不是有效的python语法。在许多情况下,python还将提供有关错误的其他信息。您可能会遇到更多的错误,而出现错误是完全正常的。经验丰富的程序员和初学者之间的唯一区别是修复这些错误所需的时间。你犯的错误和错误越多,你就越懂得如何解决它们。

要离开python解释器,要么执行

>>> quit()  

或者你按 Ctrl + D .除了交互式python解释器之外,您还可以用python编写脚本。脚本是可以从命令行界面执行的文件。它们包含在调用脚本后执行的python表达式。脚本可以是简单的,也可以只是重命名文件,也可以是复杂的,可以对车祸进行完整的模拟。你决定它们有多简单。

你的第一个python脚本

我们将从臭名昭著的开始 Hello, World! Program .打开一个新终端,激活虚拟环境,并创建一个名为 hello_world.py 通过

$ touch hello_world.py

用您最喜欢的文本编辑器打开它,例如, AtomSublimeText .在前一种情况下,您可以通过

$ atom hello_world.py

现在键入(不是复制!)文件中的以下内容

hello_world.py
print('Hello, World!')

保存文件,切换到命令行界面,然后执行

$ python hello_world.py

如果你做的一切都正确,你应该看到这个短语 Hello, World! 在命令行界面中弹出。如果你看到

  File "hello_world.py", line 1
    print('Hello, World!)
                        ^
SyntaxError: EOL while scanning string literal

  File "hello_world.py", line 2

                         ^
SyntaxError: unexpected EOF while parsing

这意味着你要么忘了关门 ') ,分别。正如您所看到的,python尽最大努力向您描述错误,以便快速修复错误。

如果一切顺利: 祝贺你! 你写了第一个python脚本!

这个 print 功能

在第一个python脚本中使用的函数 print() 函数有一个相当简单的目标:获取其中的所有内容,并将其显示在命令行界面中。在python解释器中(命令行以 >>> )表达式的结果将自动显示。尝试创建新文件 math_expressions.py 然后输入几个数学表达式,就像前面一样。保存文件,切换到终端并通过执行文件

python math_expressions.py

你不应该看到任何事情发生。这是因为您从未告诉过Python如何实际处理这些表达式。所以它所做的就是评估它们,而不是更多。现在将数学表达式包装在 print() 函数,例如:

print((3 + 4)*6)

如果您再次执行脚本,您应该看到预期的输出。

整数、浮点数和字符串

在前面的示例中,您使用整数、浮点数和字符串。 -402 都是整数。 1.21.0-2e2 (这是科学符号 -200.0 )是浮点数。最后, 'Hello, World!' 是一个字符串。这些类别称为数据类型。python中的每个值都是特定的数据类型。

运算符的含义可能取决于其周围值的数据类型。例如,加法运算符 +

>>> 1 + 2
3
>>> 1.2 + 3.4
4.6
>>> 'My first sentence.' + 'My second sentence.'
'My first sentence.My second sentence.'
>>> 'My ' + 3 + 'rd sentence.'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: Can't convert 'int' object to str implicitly

在最后一种情况下,加法运算符不知道如何组合整数 1 用绳子。要解决这个问题,您可以使用 str()

>>> 'My ' + str(3) + 'rd sentence.'
'My 3rd sentence.'

如果要将某些内容转换为字符串,请使用 str() ,转换为使用的整数 int() ,对于您使用的浮点数字 float() .

>>> '1.2' + '3.4'
'1.23.4'
>>> float('1.2') + float('3.4')
4.6
>>> int('1.4')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '1.4'
>>> str(1e2)
'100.0'

玩转这三个函数,看看能转换什么,不能转换什么。尝试使用不同的运算符,例如,尝试将字符串与整数相乘等。

变量

和数学一样,你也可以使用变量来存储值。变量有一个名称和一个值。变量名必须遵守三条规则:

  1. 必须是一个词。

  2. 它必须只包含字母、数字和下划线字符。

  3. 不能以数字开头。

除此之外,任何事情都会发生。

警告

尽管其他任何东西都是一个可行的变量名,但是您应该特别注意不要使用内置对象的名称,例如, int .如果在某个函数或类之后命名一个变量,那么它在随后的代码中就不再可用了。

要为变量赋值,请使用等号 = 变量名在左边,值在右边:

>>> my_first_variable = 21
>>> 2*my_first_variable
42
>>> my_second_variable = 3
>>> my_first_variable/my_second_variable
7.0
>>> my_third_variable = my_first_variable
>>> print(my_third_variable)
21

下面是一个稍微复杂一点的例子:

students = 35
tutors = 2
classrooms = 1
pizza_orders = 20

students_per_tutor = students / tutors
persons = students + tutors
persons_per_classroom = persons / classrooms
hungry_persons = persons - pizza_orders

print('There are', students, 'students and', tutors, 'tutors.')
print('That makes', persons, 'persons in', classrooms, 'class room(s).')
print(hungry_persons, 'have to stay hungry...')

使用变量的优点有两个方面:

  • 如果学生、导师、教室或比萨饼订单数量发生变化,您只需更新一行而不是多行即可。这不太容易出错,而且速度更快。

  • 您给这些值一些应该在变量名中表示的含义。原则上,你可以阅读“每个导师的学生数是学生数除以导师数”。这使得你的代码易于理解,你需要的评论更少。但是你还是应该在它们有意义的时候写它们!

输出结果应该是这样的:

There are 35 students and 2 tutors.
That makes 37 persons in 1 class room(s).
17 have to stay hungry...

注意我们如何使用 , 在中分隔字符串和变量名 print() 但是所有的东西都是以一种很好的方式组成的?原因是 print() 可以接受任意数量的参数。用链子就可以了 , 你很高兴去。如何工作是本节的一部分 功能 .

用户输入

在某些情况下,您可能希望要求脚本的用户提供一些附加信息,例如文件的路径或模拟的参数。为此, input() 可以使用。

print('What is your name?')
name = input()
print('Nice to meet you,', name)

注解

返回的值 input() 总是一个字符串。所以当你要求数字的时候,你必须转换它们。

print('What is your age in years?')
age = int(input())
print('In 5 years you will be', age+5, 'years old.')

进口

有时候,默认情况下,python提供的功能是不够的。如果你想使用 \(\sin(x)\) 功能?对于更专业的主题,python提供模块或包,无论是已经随每个python安装一起提供的模块或包,还是来自外部方的包。python附带的包称为 standard library .外部包装可以是,例如, NumPySciPy 用于科学计算的python,或 Matplotlib 用于绘图。

您可以通过以下方式激活此附加功能: 输入 这些包:

>>> import math

现在我们可以访问 math 模块。

>>> math.pi
3.141592653589793
>>> math.sin(0.5*math.pi)
1.0

花点时间浏览 math 模块,尝试提供的一些功能,例如 math.ceil()math.exp() 等。

总结

  • 您可以使用交互式Python解释器执行小命令。

  • 可以使用python执行包含多个命令的脚本。

  • 您可以使用 print() 功能

  • 你可以使用 str()int()float() 从一种数据类型转换为另一种数据类型——如果可能的话。

  • 您可以将值存储在变量中,以便稍后在脚本中访问它们。

  • 您可以导入模块或包来扩展pythons内置功能,方法是使用 import 语句。

练习

  1. 编写一个脚本,要求用户输入圆的半径,然后在终端中显示圆的周长和面积。