python从零到壹

1. 基础要求

起点

图片

前3差数学;后3差经验;天赋决定天花板;任何起点都可以开始python

江湖图谱

丐帮玩蛇,天下一绝; 学习最重要的是兴趣

图片

江湖待遇

图片

2. 程序=数据+算法

2.1 数据

数据=定量数据+定性数据

定量数据:自然数,整数,有理数,无理数

定性数据: 字符串

  • python数据类型: int、bool、float、long、decimal、complex、空
  • 变量,变量类型,赋值
1
2
3
4
5
6
7
8
9
a = 1
b = -3
c = 1/3
d = 1e4
e = "good"
f = 'shame' # "和'也是字符串
h = '他说,"你知道她是谁吗?"'
g = True
h = None
  • 常量 不可变的数据
1
2
PI = 3.14
COIN_RATE = 100 # 游戏币兑人民币汇率
  • 列表list(数组array)
1
2
3
4
5
a = [1, 3, 5, 7, 9] # 奇数
b = [2, 4, 6, 8] # 偶数
c = [2, 3, 5, 7, 11, 13] # ?
d = [1,1,1,1,1,1,1,0,1,1] # ?
f = [1,"a", 0.3]
  • 元组tuple: 不可变集合
1
2
3
a =(1,2) # 二维空间
b =("40°1′49″","116°24′39″") # 经纬度
c =(1,2,1) # 三维空间

一般是固定的数据组合

  • 集合set: 不重复无序集合
1
a=set(["andy","tony","melody"]) # 签到表
  • 有序集合特征是可以按照数字进行索引(序号)
1
2
3
4
5
a = [1, 3, 5, 7, 9]
a[0]
a[2]
b = (1,2)
b[0]
  • 可变集合特征是可以增删
1
2
3
4
5
6
7
a = [1, 3, 5, 7, 9]
a.append(1)
a.pop(3)
print(a)
b = set([1,2,3,45])
b.add(5)
print(b)
  • 字典dict: key-value集合
1
2
3
4
5
6
a = {"name":"andy","gender":"male"}
b = {"name":"panny","gender":"female"}
c = {
    "a":["andy","andrew"],
    "b":["bob"]
}

字典取值,使用key(字符型索引)进去获取:

1
2
a["name"]
c["a"]

python-data

2.2 算法

流程控制

  • if elif
  • while
  • for range break continue pass
  • 三元运算
1
2
3
4
i = 0
while i < 5:
    i+=1
    print(i)
1
2
3
4
5
for n in range(2, 10):
    for x in range(2, n):
        if n % x == 0:
            print(n, 'equals', x, '*', n//x)
            break
1
2
x = 4
b = 0 if x % 2 == 0 else 1 

函数

数学上的函数:“一般的,在一个变化过程中,假设有两个变量x、y,如果对于任意一个x都有唯一确定的一个y和它对应,那么就称x是自变量,y是x的函数。” 。比如:y=f(x)=2x+1, y=f(x)=-2x+1

程序上的函数: 接受零个、一个或者多个输入数据,对其进行数据处理,返回一个或者多个结果的程序片段

1
2
3
4
def say_hello():
    print("hello")

say_hello()
  • 语法规则: 关键字,格式(空格,冒号,缩进),函数名称,参数,默认值, 返回值
  • 作用域
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
def p(x):
    y = 2*x+1
    return y

def p1(x):
    y = -2*x+1
    return y

def m(a):
    b = []
    for x in a:
        y = p(x)  # 重用
        b.append(y)
    return b

def main():
    a = [1,2,3]
    b = m(a)
    print(b)

main()

乐高积木

3. python魔法

魔法:一些python的特性、约定或者技巧,可以让程序更高效

切片

索引表

1
2
3
4
5
 +---+---+---+---+---+---+
 | P | y | t | h | o | n |
 +---+---+---+---+---+---+
   0   1   2   3   4   5  
  -6  -5  -4  -3  -2  -1

示例:

1
2
3
4
5
6
word ="Python"
word[0:2]
word[2:5]
word[:2]
word[4:]
word[-2:]

列表推导式

1
2
3
4
5
6
7
def p(x):
    y = 2*x+1
    return y
    
a = [1,2,3]
b = [ p(x) for x in a]
print(b)

4. 开机有益

  • 逻辑判断
1
2
3
4
5
6
日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。以下为4个嫌疑犯的供词。
A说:不是我。
B说:是C。
C说:是D。
D说:C在胡说
已知3个人说了真话,1个人说的是假话。
1
2
3
4
5
6
7
8
9
person = ["A", "B", "C", "D"]
for killer in person:
    is_a = 1 if killer != "A" else 0
    is_b = 1 if killer == "C" else 0
    is_c = 1 if killer == "D" else 0
    is_d = 1 if killer != "D" else 0
    if is_a + is_b + is_c + is_d == 3:
        print("killer is:", killer)
        break
  • 循环
  • 真假
  • 画表格
1
2
3
 +---+---+---+---+---+---+
 | P | y | t | h | o | n |
 +---+---+---+---+---+---+

课后练习

推荐链接

Python 入门指南

在 Windows 上使用 Python 进行开发