week 2 基础语法 笔记

一、学习进度——入门课程

5.1 if语句

1、缩进严格按照Python的习惯写法:4个空格。
2、在Python交互环境下敲代码退出缩进需要多敲一行回车。

5.2 if语句

if not

5.3 if语句

if … 多个elif … else …

5.4 for循环

for之后的变量是在这个命令语句中定义的:依次取出list中的每一个元素,把元素赋值给该变量,然后执行for循环体

5.5 while循环

while没有定义新变量,通过条件判断来结束命令语句。

5.6 break退出

while true: 后的代码块用if条件语句,符合条件则退出循环。
for 语句也可用break退出。

5.7 continue继续循环

L = [75, 98, 59, 81, 66, 43, 69, 85]
sum = 0.0
n = 0
for x in L:
    if x < 60:
        continue  #符合条件,直接下一次循环
    sum = sum + x
    n = n + 1
print (sum / n)
sum = 0
x = 0
while True:
    x = x + 1
    if x > 100:
        break #符合条件,结束循环
    if x%2 == 0:
        continue
    sum = sum + x
print (sum)

5.8 多重循环

for x in [0,1,2,3,4,5,6,7,8,9]:
    for y in [0,1,2,3,4,5,6,7,8,9]:
        if x < y:
            print (x*10 + y)

6.1 dict——字典

Python字典(Dictionary):映射结构的数据类型,由无序的“键-值对”组成。
键:不可改变的类型,如:字符串,数字,tuple。
值:任何Python数据类型。
查找表{key:value,},len()计算集合大小

d = {'adam':95,"lily":96,'alex':68}
print (len(d))
print (type(d))
#增加元素 第一种
d['a']=1 #方括号(赋值语句)
#增加元素 第二种
d.setdefault('b',2) #注意是逗号
print(d)
#删除指定
d.pop('a')
del d['b']
print(d)

增删dict元素

6.2 访问dict的value

print(d['adam'])
print(d.get('adam'))

6.3 dict特点

1、key不可重复。
2、无序。
3、作为key的元素必须不可变:如字符串、整数、浮点数。

6.4 dict更新——赋值语句

6.5 遍历dict——通过for循环实现

6.6 set

特点:无序,不重复
通过 set([list]) 构建

6.7 判断元素是否在set

无序集合不能索引。

print ( 'a' in s)

6.8 set特点——set必须是不变元素

6.9 遍历set——for循环实现

6.10 更新set

s = set([('Adam', 95), ('Lisa', 85), ('Bart', 59)])  ######将list转为set,其中list的元素是元组,元组有序,可以索引
for x in s:
    print (x[0] + ':', x[1]) ##+可以替换为逗号,这里字符串之间可以相加?
#6.10
s.add(5)  ##增加元素 (添加已存在的元素不会报错)
s.remove(('Adam',95))  ##删除元素(添加不存在的元素会error)
print(s)

7.1 Python函数

7.2函数调用

int()函数可以把其他数据类型转换为整数
str()函数把其他类型转换成 str

7.3 编写函数

def square_of_sum(L):  ##定义函数名称
    sum = 0
    for i in L:
        sum = sum + pow(i,2)  ##求幂函数
    return sum  ##返回值

如果没有return语句,函数执行完毕后也会返回结果: None

7.4 返回函数多值——tuple

7.5 递归函数

优点:定义简单,逻辑清晰
使用递归函数需要注意防止栈溢出

函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。但由于栈的大小不是无限的,使用时需要注意。

###使用递归:
def fact(n):
    if n==1:
        return 1
    return n * fact(n - 1)
print(fact(4))
###使用循环
def factt(n):
    i = 1
    x = 1
    while True: ###(while也可以直接在后面输入判断条件)
        x = x*i
        i = i+1
        if i > n:
            break
    return x
print (factt(4))

汉诺塔问题:

def move(n, a, b, c):
    if n ==1:
        print a, '-->', c
        return
    move(n-1, a, c, b)  ###(n-1)递归至1
    print a, '-->', c   ###可以替换为 move(1,a,b,c)
    move(n-1, b, a, c)
move(4, 'A', 'B', 'C')

7.6 定义默认参数——在定义函数是输入[变量=默认值]

由于函数的参数按从左到右的顺序匹配,所以默认参数只能定义在必需参数的后面。

def greet(y = 'world'):
    print 'Hello,' + y +'.'

7.7 定义可变参数

可变参数的名字前面有个 * 号,我们可以传入0个、1个或多个参数给可变参数。Python解释器会把传入的一组参数组装成一个tuple传递给可变参数。因此,在函数内部,可以吧变量 args 看成一个 tuple。

def average(*args):

8.1 对list进行切片!

取前n个元素,即索引[0-(n-1)]个元素

L = ['Adam', 'Lisa', 'Bart', 'Paul']
r = []
n = 3
for i in range(n):
     r.append(L[i])
print(r)
L[0:3]  ###索引到3,但不包括3 (这里用法和range有一点像)

range(start, stop[, step]):
start: 计数从 start 开始。默认是从 0 开始。
stop: 计数到 stop 结束,但不包括 stop。
step:步长,默认为1。

L = range(1, 101)
print (L[:10])  ## 前10个数
print (L[2::3]) ##3的倍数: 要取出3, 6, 9可以用::3的操作,但是要确定起始索引。###L[2:99:3]
print (L[4:50:5])  ##不大于505的倍数。
##运行结果:
range(1, 11)
range(3, 101, 3)
range(5, 51, 5)

8.2 倒序切片

倒数第一个元素的索引是-1。倒序切片包含起始索引,不包含结束索引

8.3 字符串切片——同list切片

9.1 迭代概念

9.2 索引迭代

zip([10, 20, 30], [‘A’, ‘B’, ‘C’])
[(10, ‘A’), (20, ‘B’), (30, ‘C’)]

9.3 迭代dict中的value

d.values():把一个 dict 转换成了包含 value 的list
d.itervalues():不会转换,它会在迭代过程中依次从 dict 中取出 value,所以 itervalues() 方法比 values() 方法节省了生成 list 所需的内存。

9.4 迭代dict中的key和value

d.items() 方法把dict对象转换成了包含tuple的list,对这个list进行迭代,可以同时获得key和value
iteritems() 不把dict转换成list,而是在迭代过程中不断给出 tuple, iteritems() 不占用额外的内存。

d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59, 'Paul': 74 }
sum = 0
for k, v in d.iteritems():
    sum = sum + v
    print( k,':', v)
print ('average', ':', sum/len(d))

10.1 生成列表

[x * x for x in range(1, 11)]
print ([x*(x+1) for x in range(1,101,2)])

10.2 复杂表达式

简单的 HTML 表格由 table 元素以及一个或多个 tr、th 或 td 元素组成。
tr 元素定义表格行
th 元素定义表头
td 元素定义表格单元。
字符串可以通过 % 进行格式化,用指定的参数替代 %s。字符串的join()方法可以把一个 list 拼接成一个字符串。

d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }   #
def generate_tr(name, score):  #定义一个函数,返回值为字符串
    if score < 60:
        return '<tr><td>%s</td><td style="color:red">%s</td></tr>' % (name, score)   #在单元格前的td处写单元格格式
    return '<tr><td>%s</td><td>%s</td></tr>' % (name, score)

tds = [generate_tr(name,score) for name, score in d.iteritems()]   #产生一个list,元素为字符串,字符串函数的变量来自dict
print ('<table border="1">')
print ('<tr><th>Name</th><th>Score</th><tr>')
print ('\n'.join(tds))
print ('</table>')

10.3 条件过滤

for 循环后面还可以加上 if 判断

def toUppers(M):
    return [x.upper() for x in M if isinstance(x,str)]
print (toUppers(['Hello', 'world', 101]))

10.4 多层表达式

全排列:[m + n for m in ‘ABC’ for n in ‘123’]

L = []
for m in 'ABC':
    for n in '123':
        L.append(m + n)

二、问题:

可变参数之后能否设置默认参数?

三、计划

1、复习基础课程
2、开始Python进阶
3、补充html相关内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值