Python入门 01https://www.zhihu.com/video/1138936103439638528
1. 安装及运行Python
下面这张图就是Python官网的界面,根据我在图中的提示选择你所需要在下的版本,这里我以windows平台为例,演示Python的安装及运行。Python官网
进入下载页面点击我圈出的连接进行下载,我们在这里选择Python3作为教程安装的版本,因为Python2马上就要不支持了。
安装程序启动后页面如下,就下windows上的其它软件一样只要傻瓜式地一直点击下一步就行,记得要先勾上添加到环境变量的选项。
一切就绪后,就安装完了Python的运行环境到我们的电脑上。在开始菜单里面找到我们安装的Python程序点击运行如下。Python原生自带的。
2. 变量和算术表达式
在这里让我们以一段小程序为例,让大家能对Python的语法有更直观的感受。
principal = 1000
rate = 0.05
numyears = 5
year = 1
while year <= numyears:
principal = principal * (1 + rate)
print(year,principal)
year += 1
这是一段简单的Python代码,在这段代码中我赋了四个值分别是principal、rate、year和numyears。在这里有一点需要注意Python属于动态编译的语言,它与类似C、Java这样的静态语言在赋值上有些许不同,Python并不需要提前确定好变量的类型就可以给变量进行赋值。
Python是严格判断缩进空格的,如何你直接在文本编辑器上编译忽略了缩进的话,编译一定会出错了。这一点是需要大家注意的地方。
3. 条件语句
if与else语句格式如下:
if a < b:
print ("I like Python")
else:
print ("I don't like Python")
如果某个判断条件需要执行什么语句,你还有想好的话可以使用pass进行略过:
if a < b:
pass
else:
print ("I don't like Python")
使用or、and、not关键字可以组成布尔表达式:
if a != 1 and b == 2 and not (c<4 or d>5):
pass
Python中没有专门的switch或者case语句用于检测多个值,在这里我们使用if...elif...的方式来进行替代:
if suffix == ".html":
pass
elif suffix == ".jpg":
pass
else:
pass
4. 文件输入和输出
以下程序可打开一个文件并逐行读取该文件的内容:
f = open("foo.txt") #返回一个文件内容
line = f.readline() #调用文件的readline()方法
while line:
print(line,end='') #逐行打印文件内容
f.close() #关闭文件
5. 字符串
声明字符串:
a = "hello python"
b = 'python is groovy'
c = """computer says no"""
以上是三种Python声明字符串的三种形式。
在Python的语法中,字符串可以看做是一种列表,我们可以通过例如a[0],这种方式获取到字符串中某一特定的字符,也可以通过a[:4]这种方式获得字符串的子串。
两个字符串可以用+号进行结合成为新的字符串。
6. 列表
列表是任意对象组合的序列。把值放入方括号中就可以创建列表。
names = ["Dave","Mark","Ann","Phil"]
列表可以使用从0开始的整数进行索引。
a = names[2] # 获取下标为2的元素
names[0] = "Jeff" # 将下标为0的元素值修改为jeff
在末尾增加元素使用append()方法。
names.append("Paula")
要将一项插入到列表中,可使用insert()方法。
names.insert(2,"Thomas")
创建一个空的列表有两种方法。
names = []
names = list()
7. 元组
要创建简单的数据结构,可以使用元祖将一组值打包到一个对象中。
stock = ('GOOG',100,490.10)
元祖的许多特性和列表类似,在这里我就不重复说明了, 但是有一点需要注意的是,元祖一旦创建是不允许修改的。
8. 集合
集合用于包含一组无序的对象。要创建集合,可使用set()函数并像下面这样提供一系列的项。
s = set([3,5,9,10])
t = set("Hello")
与列表和元祖不同的是,集合存放的无序的数组所以存放在集合中的元素是唯一的,而且不能通过索引的方式去便利集合。
9. 字典
字典是一种键值对([K:V])形式存储的数据结构。
stock = {
"name" : "GOOG",
"shares" : 100,
"price" : 190.10
}
在字典中,健是唯一的,可以通过健来索引到值。
name = stock['name']
插入或修改对象的方法是。
stock["shares"] = 75
stock["data"] = "June 7, 2007"
创建空字典的方法如下。
prices = {}
prices = dict()
10. 迭代和循环
在Python中最常用的循环结构是for语句,它可以用来对容器成员进行迭代操作。
for n in [1,2,3,4,5,6,7,8,9]:
print(n)
在Python中我们还可以使用range()函数进行快速的迭代数字列表。
for n in range(1,10):
print(n)
还可以循环字符串、列表、元组以及集合,这里就以字符串为例子演示一下, 剩下的大家可以自己去一下相关实验。
a = "hello world"
for n in a:
print(n)
11. 函数
在Python中声明函数的格式如下。
def remainder():
pass
Python的函数可是接收并返回多个值。
def remainder(a,b):
c=a
a=b
b=c
return (a,b)
调用函数如下。
remainder()
12. 生成器
如果使用yield语言,可以让函数生成一个结果序列,而不仅仅是一个值,例如:
def countdown(n):
print("Counting down!")
while n > 0:
yield n
n -= 1
任何使用yield的函数都称为生成器。调用生成器函数可以创建一个对象,该对象通过连续调用next()方法。
13. 协程
函数可以编写成一个任务程序,用来处理发送给它的一系列输入。这类函数被称为协程,它是通过将yield语句作为表达式(yield)的形式创建的。
def print_matches(matchtext):
print ("Looking for",matchtext)
while True:
line = (yield)
if matchtext in line:
print (line)
14. 对象与类
在Python中所有的值都是对象。对象由内部数据和各种方法组成,这些方法会执行与这些数据相关的各种操作。前面在处理像字符串和列表这样的内置类型时,就已经用到了对象和方法。
items = [37,42]
items.append(73)
class语句用于定义新的对象类型,实现面向对象编程。例如,下面的类定义了一个支持push()、pop()和length()操作的简单栈。
class Stack(object):
def __init__(self):
self.stack = []
def push(self,object):
self.stack.append(object)
def pop(self,object):
return self.stack.pop()
def length(self):
return len(self.stack)
想要使用类,可编写如下示例代码。
s = Stack()
s.push("Dave")
s.push("41")
x = s.pop()
y = s.pop()
15. 异常
如果程序中出现错误,就会引发异常,并显示类似下面的回溯消息:
Traceback (most recent call last):
File "foo.py", line 12, in
IOError: [Errno 2] No such file or directory: 'file.txt'
这样的回溯信息提示了程序错误出现在什么地方。一般情况下,错误会导致程序终止。但是也可以使用try和except语句捕捉并处理异常。
try:
f = open("file.txt","r")
except IOError as e:
print (e)
通过raise语句还可以手动引发异常。
raise RuntimeError("Computer says no")
16. 模块
随着程序变得越来越大,为了便于维护,需要把它分为多个文件。为此,Python允许把定义放入一个文件中,然后在其他程序和脚本中将其作为模块导入。要创建模块,可将相关的语句和定义放入模块同名文件中。
# 文件:div.py
def divide(a,b):
q = a/b
r = a - q*b
return (q,r)
要在其他程序中使用该模块, 可是使用import语句:
import div
a, b = div.divide(2305,29)
如果要使用不同的名称导入模块,可是给import语句加上可选的as限定符。
import div as foo
a , b = foo.divide(2305,16)
要将具体的定义导入当前的命名空间中,可使用from语句:
from div import divide
a,b=divide(2505,29)