基础知识¶
“经典的‘Python是伟大的第一语言’引出,‘Python是伟大的最后一种语言!’”
—诺亚·斯普里尔
现在我们将介绍Python编程语言的基础知识。我们从声名狼藉的 你好,世界! 程序和Python脚本的基本语法。
注意
确保您的虚拟环境已激活!如果您没有 (python101)
在命令行提示符前,需要使用以下命令激活它
$ source ~/.virtualenvs/python101/bin/activate
执行以下命令以启动交互式Python解释器:
$ python
您应该看到终端中打印了几行,第一行说明了当前日期和时间中您使用的Python版本。最后一行应该以 >>>
它指示Python提示符。您可以在那里编写Python命令并执行它们。
注意
在上一章中 Unix外壳 介绍了Unix shell的基本命令。请注意,每个命令前面都有一个 $
性格。在本教程中,以 $
Sign是在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
使用您最喜欢的文本编辑器打开它,例如, Atom 或 SublimeText 。在前一种情况下,您可以通过
$ atom 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)
如果再次执行该脚本,您应该会看到预期的输出。
整数、浮点数和字符串¶
在前面的示例中,您使用了整数、浮点数和字符串。 -4
, 0
,以及 2
都是整数。 1.2
, 1.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'
尝试这三个函数,看看哪些函数可以转换,哪些函数不能转换。尝试不同的运算符,例如,尝试将字符串与整数相乘,等等。
变量¶
与数学一样,您也可以使用变量来存储值。变量有一个用来调用它的名称和一个值。变量名必须遵守三条规则:
它必须正好是一个词。
它必须仅包含字母、数字和下划线字符。
它不能以数字开头。
除此之外,什么都行。
警告
尽管其他任何名称都是可行的变量名,但您应该特别注意不要使用内置对象的名称,例如, 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 。外部包装可以是,例如, NumPy 和 SciPy 用于使用Python进行科学计算,或 Matplotlib 用来密谋的。
您可以通过以下方式激活此附加功能 正在导入 这些软件包:
>>> import math
现在,我们可以访问中提供的所有功能 math
模块。
>>> math.pi
3.141592653589793
>>> math.sin(0.5*math.pi)
1.0
请慢慢来,浏览 math
模块,请尝试一些提供的函数,如 math.ceil()
, math.exp()
等。
摘要¶
练习¶
编写一个脚本,向用户询问圆的半径,然后在终端中显示圆的周长和面积。