【Python3教程 第1章】基本概念

什么是Python?

欢迎来到Python!

Python是一个应用于很多领域(包括web编程,脚本,科学计算,以及人工智能)的高级编程语言。

同时它也非常流行,在Google、NASA、CIA以及Disney等这些机构都在使用。

Python在运行时被解释器(interpreter)处理。在你的程序执行之前,不需要被编译。

Python有三个主要的版本,分别是1.x,2.x和3.x。进一步细分为一些主要的版本,例如2.7和3.3。

由Python3.x版本写的代码保证能够在未来的所有版本中运行。

有两个版本的Python分别是2.x和3.x版本现在还在被使用到。这套课程主要涵盖的是Python 3.x版本的内容,但切换到另一个版本其实并不困难。

Python有一些由其他语言写成的不同的实现。这套课程中用到的,CPython是目前最流行的。

解释器是运行以解释性语言(例如Python)编写的脚本的程序。

Python控制台

你的第一个程序

这节课,我们将通过Python控制台来开始使用Python。第一步是从www.python.org下载Python。

你应该下载与你系统兼容的Python 3.x的版本。一旦安装完毕,Python控制台就可以使用以下的几种方式之一来访问了:

  • 使用命令行
  • 直接运行Python解释器
  • 运行一个图形化的Python IDLE(集成化的Python开发环境)程序

运行IDLE之后,你将看到一个三个箭头的提示。输入print('Hello world!')然后按下回车。你会看到以下结果:

1
2
>>>print('Hello world!')
Hello world!

恭喜!你已经写完了你的第一个程序。

这个展示”Hello world!”的小程序在其他任何语言中像是一个传统一样,都是作为第一个程序存在的。

Python控制台

Python控制台是一个允许你输入一行Python代码,重复执行那一行代码,并输出结果的程序。这被称为REPL – 一个“读取-计算-打印输出”的循环。

print('Hello world!')行的输出已经显示之后,您可以重新输入代码,并且您将再次获得相同的输出。尝试输入相同的代码,但使用不同的文本:

1
2
3
4
5
6
>>> print('Hello world!')
Hello world!
>>> print('Hello world!')
Hello world!
>>> print('Spam and eggs...')
Spam and eggs...

Python代码通常包含对喜剧组Monty Python的引用。这就是为什么“垃圾邮件”和“鸡蛋”这些词经常在Python中用作占位符变量,其中“foo”和“bar”将用于其他编程语言。

结束Python控制台的使用后,您需要关闭它。您可以以关闭操作系统上其他程序的相同方式关闭IDLE,但其他类型的控制台必须通过不同的方法关闭。要关闭控制台,请键入“quit()”或“exit()”,然后按Enter键。

1
>>> quit()

一些Python控制台也可以通过按Ctrl-Z关闭,这是一个控制代码,发送退出信号到控制台程序。另一个控制代码,Ctrl-C,停止正在运行的程序,如果你不小心创建了一个死循环的程序时,可以用这个指令来终止它。

简单操作

加减法操作

Python有计算能力。直接在Python控制台中输入计算,它将输出答案。

1
2
3
4
>>> 2 + 2
4
>>> 5 + 4 - 3
6

在这里的加号和减号周围的空格是可选的(代码的执行对它们是无效的),但这些空格使代码更容易阅读。

乘除法操作

Python还可以执行乘法和除法,使用星号(*)表示乘法和正斜杠(/)表示除法。

使用括号确定优先执行的操作。

1
2
3
4
>>> 2 * (3 + 4)
14
>>> 10 / 2
5.0

使用单斜杠来分割数字会产生一个小数(或浮点数)。我们将在后面的课程中更多地了解浮点数

负数运算

减号与数字组合会得到一个负数。在负数上的操作运算和在正数上的操作运算是一样的。

1
2
3
4
>>> -7
-7
>>> (-7 + 2) * (-4)
20

加号也可以跟在数字的前面,但它其实没有什么效果。其实它通常是用来强调数字是正数,目的是为了增强代码的可读性。

除以0

在Python中被0除会产生一个错误(error),因为没有答案能被算出。

1
2
3
4
>>> 11 / 0
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ZeroDivisionError: division by zero

在Python中,最后一行的错误信息展示了错误类型。仔细读错误信息,因为它通常会告诉你如何修改程序!

浮点数(Float)

Float在Python中用于表示不是整数的数字。以浮点数表示的实例如:0.5-7.8237591。它们可以通过输入带小数点的数字直接创建,也可以使用整数除法等操作来得到。在数字末尾的多余的0会被忽略。

1
2
3
4
>>> 3/4
0.75
>>> 9.8765000
9.8765

事实上,电脑无法精确的计算浮点数,同样,我们无法写出浮点数1/3的完整的十进制形式(0.3333333333333333...)。记住这一条,因为这里总是会导致一些令人生气的bug!

正如你上面看到的,两个整数相除可以得到一个float

一个浮点数也可以由两个浮点数之间的运算得出,或者一个整数一个浮点数的运算也可以得出。

1
2
3
4
5
6
>>> 8 / 2
4.0
>>> 6 * 7.0
42.0
>>> 4 + 1.65
5.65

一个浮点数可以和一个整数相加,因为Python会自动将整数转变为浮点数。然而,这种隐式转型在Python中是一种例外情况,通常情况下,在Python中,如果你想要进行类型转换,都需要手动处理。

其他数值运算

乘方运算

除了加,减,乘,除,Python也支持乘方操作。乘方操作是使用两个星号执行的。

1
2
3
4
>>> 2 ** 5
32
>>> 9 **(1/2
3.0

商和余

要确定一个除法运算的商和余数,可以分别使用floor division取模运算。

Floor division使用两个下划线构成。取模运算由百分号(%)组成。

这些操作都可以用在浮点数和整数上。

下面的代码展示了20可以被6除三次,以及1.25除以0.5之后余0.25:

1
2
3
4
>>> 20 // 6
3
>>> 1.25 % 0.5
0.25

字符串

如果你想在Python中使用一个text,你必须用到字符串。

一个字符串是由单引号双引号以及之间的文本构成的。

当Python控制台显示一个字符串时,它通常是由单引号括起来的。用于字符串上的分隔符不会影响到字符串的行为。

1
2
3
4
>>> "Python is fun!"
'Python is fun!'
>>> 'Always look on the bright side of life'
'Always look on the bright side of life'

转义字符

某些字符串无法直接包含在一个字符串内。例如,双引号不能直接包含双引号的字符串,这将导致字符串提前结束。

想这些字符必须通过一个用于转义的反斜杠()在他们前面,才能满足我们的要求。

必须转义的其他常见字符还有换行符反斜杠

双引号只需要在双引号字符串中转义,对于单引号字符串也是如此。

1
2
>>> 'Brian\'s mother: He\'s not the Messiah. He\'s a very naughty boy!'
'Brian's mother: He's not the Messiah. He's a very naughty boy!'

\n代表新的一行。

反斜杠也可用于转义标签、任意Unicode字符 以及许多其他并不能被打印的东西。这些字符称为转义字符。

换行

Python提供了一种简单的方式来避免手工编写”\n”来进行字符串的换行转义。创建一个三引号包裹的字符串,回车键将自动处理为转义换行符。

1
2
3
4
>>> """Customer: Good morning.
Owner: Good morning, Sir. Welcome to the National Cheese Emporium."""
'Customer: Good morning.\nOwner: Good morning, Sir. Welcome to the National Cheese Emporium.'

正如你看到的那样,当我们按下回车键时,\n会自动地添加到输出中去。

简单的输入与输出

输出

通常情况下,程序接受输入然后处理之后产生输出

在Python中,你可以使用print方法来生成输出。它将在屏幕上输出某些东西的文本表示形式。

1
2
3
4
5
>>> print(1 + 1)
2
>>> print("Hello\nWorld!")
Hello
World!

当一个字符串被打印时,两边的括号是不被展示的。

输入

在Python中,你可以使用input方法来获取用户的输入。这个方法会提示用户输入,并且返回用户按下回车时输入的字符串(内容自动转义)。

1
2
3
4
>>> input("Enter something please: ")
Enter something please: This is what\nthe user enters!
'This is what\\nthe user enters!'

能够自动的执行输入和输出的输入输出方法在Python的控制台中并不是很有用。然而,在实际的程序中,它很有用。

字符串操作

级联

与整数浮点数相同,字符串在Python中也可以使用加法运算,这种可以在任意两个字符串之间完成的操作被称为级联

执行级联操作时,不管字符串是由单引号创建的还是双引号创建的,都可以正常执行。

1
2
3
4
5
>>> "Spam" + 'eggs'
'Spameggs'
>>> print("First string" + ", " + "second string")
First string, second string

即使你的字符串中包含数字,它们在进行相加操作时,依然是以字符串的形式进行运算,而不是整数。将一个字符串与一个数字相加会产生错误,即使它们看起来很相似,但它们任然是两种不同的实体。

1
2
3
4
5
6
>>> "2" + "2"
'22'
>>> 1 + '2' + 3 + '4'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'str'

在后面的课程中,错误信息只显示最后一行,因为它是唯一提供当前发生的错误的详细信息的消息。

字符串操作

字符串也可以和整数相乘。这种操作会生成由原始字符串重复出现组成的字符串。字符串和整数的顺序并不重要,但通常情况下,字符串是放在最前面的。

字符串不能被其他字符串相乘。字符串也不能被浮点数相乘,即使浮点数是整数。

1
2
3
4
5
6
7
8
9
10
11
>>> print("spam" * 3)
spamspamspam
>>> 4 * '2'
'2222'
>>> '17' * '87'
TypeError: can't multiply sequence by non-int of type 'str'
>>> 'pythonisfun' * 7.0
TypeError: can't multiply sequence by non-int of type 'float'

类型转换

在Python中,由于类型所以有些操作不能完成。例如,你不能把字符串“2”和字符串“3”相加得到字符串“5”,由于这种加法操作是在字符串上进行的,得到的结果是“23”。

解决这个问题的方式是类型转换

在这个例子中,你可以使用int函数。

1
2
3
4
>>> "2" + "3"
'23'
>>> int("2") + int("3")
5

在Python中,我们使用的类型是整数浮点数字符串。用于转换为这些的函数分别是intfloatstr

另一个类型转换的例子是转换用户的输入(是一个string)成为一个数字(integers或者floats),以至于可以进行计算。

1
2
3
4
>>> float(input("Enter a number: ")) + float(input("Enter another number: "))
Enter a number: 40
Enter another number: 2
42.0

变量

变量在大多数编程语言中都起到了重要的作用,Python也不例外。一个变量通过赋予一个名字,然后可以存储一个值,在其后面的程序中进行调用。

通过一个等号来定义一个变量。不同于到目前我们看到的大部分代码,它不会在控制台产生任何输出信息。

1
2
3
4
5
6
7
>>> x = 7
>>> print(x)
7
>>> print(x + 3)
10
>>> print(x)
7

您可以使用变量执行相应的操作,就像使用数字和字符串一样。正如你所看到的,这个变量在整个程序中都保存着它的值。

变量可以多次的重新赋值。在Python中,变量没有被指定类型,因此你可以赋值一个string到一个变量上,然后你也可以赋值一个integer型的数据到同一个变量上。

1
2
3
4
5
6
>>> x = 123.456
>>> print(x)
123.456
>>> x = "This is a string"
>>> print(x + "!")
This is a string!

变量名

在Python中,对于变量名有一些限制,在变量名中只可以使用字母、数字和下划线。另外,不能以数字开头。

如果不遵循这些规则,则会产生错误。

1
2
3
4
5
6
7
>>> this_is_a_normal_name = 7
>>> 123abc = 7
SyntaxError: invalid syntax
>>> spaces are not allowed
SyntaxError: invalid syntax

Python是一种大小写敏感的编程语言。因此,Lastnamelastname在Python中是两个不同的变量名。

如果使用了一个没有被赋值的变量,将产生一个错误

你可以使用del语句来删除一个变量,这意味着这个变量从名称到值的引用都会被删除,并且尝试使用被删除的变量会导致错误。被删除的变量可以正常的重新被赋值。

1
2
3
4
5
6
7
8
>>> foo = "a string"
>>> foo
'a string'
>>> bar
NameError: name 'bar' is not defined
>>> del foo
>>> foo
NameError: name 'foo' is not defined

你也可以接受用户的输入作为变量的值:

1
2
3
4
>>> foo = input("Enter a number: ")
Enter a number: 7
>>> print(foo)
7

赋值运算符

赋值运算符允许你将像x = x + 3这样的代码写的更简洁,像这样x += 3

同样的操作也适用于其他操作例如-,*,/%

1
2
3
4
5
6
>>> x = 2
>>> print(x)
2
>>> x += 3
>>> print(x)
5

这些运算符也可以用于数字以外的类型,例如字符串

1
2
3
4
5
6
7
>>> x = "spam"
>>> print(x)
spam
>>> x += "eggs"
>>> print(x)
spameggs

许多其他的语言有像++这样的对于x += 1的简写的写法。Python中不支持这样做。

使用编辑器

到目前为止,我们仅仅通过Python控制台来写Python。这样我们每次仅能同时输入并允许一行代码。

在实际的开发中其实并不是这样的,我们会将多行代码写入一个文件中,并通过Python解释器来运行它。

IDLE中,这种操作是通过创建一个文件,输入一些代码,保存文件,然后运行它来执行。这些操作可以通过点击菜单来完成或者通过键盘快捷键’Ctrl-N’,’Ctrl-S’和‘F5’来完成。

文件中的每行代码都被解释为在控制台中一次输入的一行代码。

1
2
3
x = 7
x = x + 2
print(x)

执行结果:

Python源代码有一个.py的扩展名。

坚持原创技术分享,您的支持将鼓励我继续创作!