从零开始学Python
-
- 一、安装Python
- 二、基本操作
- 三、基本运算
- 四、判断控制语句
- 五、循环语句
- 六、定义函数
一、安装Python
推荐初学者安装Anaconda。安装时选择Python 2.7版本。
对于熟悉Matlab或者R的初学者,推荐使用Anaconda中的Jupyter和Spyder作为python的编译器。
二、基本操作
1.输出到屏幕
Python中print函数可以将结果输出到屏幕。在Python 2.7中,以下两种方式皆可。
print "Hello SofaSofa!"
print('Hello SofaSofa!')
- 1
- 2
2.定义变量与赋值
在Python中,定义变量时不需要声明变量的类型,但是需要赋值。用=表示赋值。
a = 3
b = 2.5
- 1
- 2
有时为了方便,我们也可以把上面的两个赋值命令写成:
a, b = 3, 2.5
- 1
上面的变量是数值类型的。我们也可以定义字符型、布尔型的变量。
my_string = 'sofa'
flag_1 = True
flag_2 = False
- 1
- 2
- 3
如果只是想定义变量,却不想赋予初始值,可采用:
my_variable = None
- 1
对于已经声明过的变量,我们可以进行重新赋值。如下:
my_int = 5
my_int = 3
print my_int
- 1
- 2
- 3
小实验:python中的变量名区分大小写吗?可以试试如下的命令,看看结果如何?
a = 3
A = 2
print a
- 1
- 2
- 3
3.注释
在代码中添加注释,用助于代码的可读性,有时也有助于对代码debug。Python中有两种添加注释的方式。
在行首插入#,整行会成为注释。
把段落放在三个双引号中,整个段落会成为注释。
# This is a comment. The following code will define my_int and then change its value.
my_int = 5
my_int = 3
"""
This paragraph is a comment.
The first line defined and initialized my_int.
The second line changed the value of my_int.
"""
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
4.设置中文环境
我们可以用以下代码,实现在Python中显示中文。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
print "欢迎加入SofaSofa数据科学社区!"
- 1
- 2
- 3
三、基本运算
5.四则运算
下面我们来看看如何用Python进行四则运算。
# 定义变量a,b
a, b = 2, 3
# 加法
c = a + b
# 减法
c = a - b
# 乘法
c = a * b
# 括号的使用
c = 2 * (a + b) - 1
# 除法,看看结果是多少,和你想的一样吗?
c = a / b
d = b / a
print c, d
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
+=运算,-=运算,*=运算,/=运算
# 试试看这些运算符都是什么意思
a = 2
a += 3
print a
a -= 2
print a
a *= 3
print a
a /= 2.5
print a
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
6.变量数值类型
上面的例子我们可以看出,3/2的结果是1。为了得到1.5,我们需要对变量的数值类型进行转换。
一种方式是在任意其中一个整数后加小数点来表示这个数的类型是浮点数,这样最终的结果就会是浮点数。
# 查看变量a的类型
a = 3
b = 2
print type(b)
print a / b
b = 2.
print type(b)
print a / b
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
另一种方式是用内置函数float(X)将数值变量X转换为浮点型。
a = 3
b = 2
# 将浮点型的b定义为变量c
c = float(b)
print a / b, a / c
- 1
- 2
- 3
- 4
- 5
同样,我们也可以用内置函数int(X)将浮点型变量X转化为整数型变量。
d = int(1.)
print type(d)
# 试试 int(0.5), int(1.9), int(-2.1), int(-0.9) 的返回值分别是多少呢?
- 1
- 2
- 3
- 4
7.其他基本数学运算
除了四则运算,还有其他一些常用的运算。比如新手入门经常被坑的幂方运算。
a = 3
# a的三次方,注意了,Python中没有 a^3 的用法。
print a ** 3
# a的平方根
print a ** 0.5
- 1
- 2
- 3
- 4
- 5
整除运算和取余运算
# 整除
a = 10.5 // 3
print a
# 取余
a = 11 % 3
print a
- 1
- 2
- 3
- 4
- 5
- 6
取绝对值、最大值、最小值
a = abs(-2.5)
b = max(2, 5, 3)
c = min(1, 3, -3)
print a, b, c
- 1
- 2
- 3
- 4
8.逻辑运算
逻辑判断,大于>,小于<,等于==,小于等于<=,大于等于>=,不等于!=。
a, b = 3, 2
# 判断a是否小于等于b
print a <= b
print a == min(a, b)
- 1
- 2
- 3
- 4
逻辑或,or,|
逻辑与,and,&
# 逻辑或
print True or False
print True | False
# 逻辑与
print True and False
print True & False
- 1
- 2
- 3
- 4
- 5
- 6
逻辑是,is,用来判断两者是否相同
# 逻辑是
# 试一试下面的命令,结果是你想的那样吗?
print 2 is '2'
print 2 is 2
print 2 is 2.
print 2 == 2.
- 1
- 2
- 3
- 4
- 5
- 6
逻辑非,not,用来表示否定
print not True
print not False
a = not((2 > 3) & (4 > 3))
print a
- 1
- 2
- 3
- 4
四、判断控制语句
9.if语句
类似与其他编程语言,python也使用if作为判断控制语句的关键词。注意判断语句需要以冒号:结束,执行语句需要缩进四格。当判断为真,执行;若判断为假则跳过。
# Python是强对齐语言,也就是说我们需要严格遵守缩进。
# 在下面的例子中,首行是判断语句,第二行是执行语句(当判断结果为True才执行)。
# 执行语句开头需要空出四格,通常我们使用tab键来缩进。
if 2 > 1:
print "SofaSofa is good!"
- 1
- 2
- 3
- 4
- 5
- 6
10.if-else语句
与if语句不同的是,if-else语句中,若判断为False,则执行else后的语句。同样的是,请注意if和else的冒号,以及其他行的缩进。例子如下:
# if condtion:
# do A
# else:
# do B
a = 3
if a > 0:
print 'a是正数。'
else:
print 'a不是正数。'
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
11.if-elif语句
if-elif语句中,可以插入多个判断语句,程序会从上到下依次进行判断,直到得到True为止,或者完成所有的判断后跳出。
# 试试下面两者不同的顺序,看看结果分别是什么。
# 第一种if-elif顺序。
a = 3
if a < 1:
print 'a > 1'
elif a < 10:
print '1 < a < 10'
else:
print 'do nothing'
# 第二种if-elif顺序。
a = 3
if a < 10:
print 'a < 10'
elif a < 1:
print '你能搞明白这是什么情况吗'
else:
print 'do nothing'
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
12.嵌套if语句
我们也可以嵌套多层if语句。请注意对应的缩进。
a = -2
if a > 0:
if a % 1 == 0:
print 'a是正整数'
else:
print 'a是正小数'
elif a < 0:
if a % 1 == 0:
print 'a是负整数'
else:
print 'a是负小数'
else:
print 'a是0'
# 有时我们也可以通过逻辑与、逻辑或讲嵌套的多层if语句,写成单层if语句。
# 你可以试着把上面的语句改成单层if语句吗?
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
五、循环语句
13.for语句
我们这里简单介绍for语句,for语句更多用法,可以参考“掌握Python中list, dict, set”(to be added)。与if语句一样,请注意缩进。
# 我们可以通过以下方式,重复执行命令5次
for i in range(5):
print "这句话会出现5次。"
# 再来试试以下的循环语句
for i in range(5):
print "这句话会重复出现。这是第", str(i), "次。"
- 1
- 2
- 3
- 4
- 5
- 6
14.while语句
while语句是先判断再执行,直到判断结果为False,循环中止。
a = 1
while a < 5:
a += 1
print a
# 再试试while-else,结果有不同吗
a = 1
while a < 5:
a += 1
else:
print a
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
while语句等同于if语句配合使用break。
a = 1
for i in range(10000):
a += 1
if a >= 5:
break
print a
- 1
- 2
- 3
- 4
- 5
- 6
六、定义函数
15.定义和调用简单函数
我们可以通过关键词def自定义函数。
# 下面是个简单的例子:定义一个函数,函数名为my_func,作用是输出一段话。
def my_func():
print 'I love SofaSofa!'
# 调用my_func,试试下面的结果如何?
my_func()
- 1
- 2
- 3
- 4
- 5
- 6
上面定义的my_func是没有输入值。我们也可以定义有输入值的函数。
# 下面是个简单的例子:定义一个函数,函数名为my_func,作用是将输入变量的数值输出到屏幕上。
def my_func(a):
print 'The input number is', str(a)
# 调用my_func,试试下面的结果如何?
my_func(4)
my_func(3.5)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
上面定义的my_func是只有输入值,没有返回值的函数。我们也可以通过关键词return来输出返回值。
# 下面是个简单的例子:定义一个函数,函数名为my_func,作用是将输入数值加1,并返回。
def my_func(a):
result = a + 1
return result
# 调用my_func,试试下面的结果如何?
print my_func(4)
b = my_func(3.5)
print b
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
16.定义和调用多元函数
我们可以通过关键词def自定义多元函数。
# 下面是个简单的例子:定义一个函数,函数名为add_a_b,作用是将输入数值a与b相加,并返回。
def add_a_b(a, b):
return a + b
print add_a_b(3.8, 2.3)
# 下面是个三元函数的例子:定义一个函数,函数名为`is_a_min`,作用是将对输入数值a,b,c判断a是否为其中最小值
def is_a_min(a, b, c):
min_value = min(a, b, c)
return a == min_value
print is_a_min(2, 5, -1)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
17.定义一个递归函数
我们可以通过对函数自身反复调用来实现递归。下面的例子是求解斐波那契数。
# 在这个例子中,我们除了展示了递归地调用函数本身,也展示了如何在不同的情况返回不同的结果。
def fibo(n):
if n == 1:
return 1
elif n == 2:
return 1
elif n >= 3:
return fibo(n-1) + fibo(n-2)
print fibo(8)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
18.函数定义中套用其他函数
在上面,我们已经使用了在一个函数中调用自身。更广泛的,我们可以调用任何自己已定义过的函数。
# 回顾之前我们定义的函数add_a_b,我们可以用来定义一个平方和函数square_sum。
def add_a_b(a, b):
return a + b
def square_sum(a, b):
return add_a_b(a, b) ** 2
print square_sum(2, 3)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
19.小实验
此次小实验为本教程的小结。定义函数third_side(a, b)并达到以下功能。
# 假设a和b分别是直角三角形的两个直角边的长度。
# 设计一个函数third_side(a, b),返回这个直角三角形的斜边长。
# 如果a或者b小于等于0,则返回0。
- 1
- 2
- 3
参考:http://sofasofa.io/tutorials/python_zero/index.php