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 |
+---+---+---+---+---+---+
课后练习