1. 基础要求
起点
前3差数学;后3差经验;天赋决定天花板;任何起点都可以开始python
江湖图谱
丐帮玩蛇,天下一绝; 学习最重要的是兴趣
江湖待遇
2. 程序=数据+算法
2.1 数据
数据=定量数据+定性数据
定量数据:自然数,整数,有理数,无理数
定性数据: 字符串
- python数据类型: int、bool、float、long、decimal、complex、空
- 变量,变量类型,赋值
a = 1 b = -3 c = 1/3 d = 1e4 e = "good" f = 'shame' # "和'也是字符串 h = '他说,"你知道她是谁吗?"' g = True h = None
- 常量 不可变的数据
PI = 3.14 COIN_RATE = 100 # 游戏币兑人民币汇率
- 列表list(数组array)
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: 不可变集合
a =(1,2) # 二维空间 b =("40°1′49″","116°24′39″") # 经纬度 c =(1,2,1) # 三维空间
一般是固定的数据组合
- 集合set: 不重复无序集合
a=set(["andy","tony","melody"]) # 签到表
- 有序集合特征是可以按照数字进行索引(序号)
a = [1, 3, 5, 7, 9] a[0] a[2] b = (1,2) b[0]
- 可变集合特征是可以增删
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集合
a = {"name":"andy","gender":"male"} b = {"name":"panny","gender":"female"} c = { "a":["andy","andrew"], "b":["bob"] }
字典取值,使用key(字符型索引)进去获取:
a["name"] c["a"]
2.2 算法
流程控制
- if elif
- while
- for range break continue pass
- 三元运算
i = 0 while i < 5: i+=1 print(i)
for n in range(2, 10): for x in range(2, n): if n % x == 0: print(n, 'equals', x, '*', n//x) break
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
程序上的函数: 接受零个、一个或者多个输入数据,对其进行数据处理,返回一个或者多个结果的程序片段
def say_hello(): print("hello") say_hello()
- 语法规则: 关键字,格式(空格,冒号,缩进),函数名称,参数,默认值, 返回值
- 作用域
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的特性、约定或者技巧,可以让程序更高效
切片
索引表
+---+---+---+---+---+---+ | P | y | t | h | o | n | +---+---+---+---+---+---+ 0 1 2 3 4 5 -6 -5 -4 -3 -2 -1+
示例:
word ="Python" word[0:2] word[2:5] word[:2] word[4:] word[-2:]
列表推导式
def p(x): y = 2*x+1 return y a = [1,2,3] b = [ p(x) for x in a] print(b) 复制代码
4. 开机有益
- 逻辑判断
日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。以下为4个嫌疑犯的供词。 A说:不是我。 B说:是C。 C说:是D。 D说:C在胡说 已知3个人说了真话,1个人说的是假话。
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
- 循环
- 真假
- 画表格
+---+---+---+---+---+---+ | P | y | t | h | o | n | +---+---+---+---+---+---+
课后练习