Python (2.x)从入门到放弃

2018-01-09  本文已影响0人  小北街口

一、数据类型

动态编程语言,赋值时无需指明类型名称


boolean

因为Python把0、空字符串''和None看成 False,其他数值和非空字符串都看成 True,所以:

1. 在计算 a and b 时,如果 a 是 False,则根据与运算法则,整个结果必定为 False,因此返回 a;如果 a 是 True,则整个计算结果必定取决与 b,因此返回 b。

2. 在计算 a or b 时,如果 a 是 True,则根据或运算法则,整个计算结果必定为 True,因此返回 a;如果 a 是 False,则整个计算结果必定取决于 b,因此返回 b。

所以Python解释器在做布尔运算时,只要能提前确定计算结果,它就不会往后算了,直接返回结果。


整数&浮点数

11 % 4           # ==> 3

11.0 / 4      # ==> 2.75


Unicode

因为Python的诞生比Unicode标准发布的时间还要早,所以最早的Python只支持ASCII编码,普通的字符串'ABC'在Python内部都是ASCII编码的。

Python在后来添加了对Unicode的支持,以Unicode表示的字符串用u'...'表示,比如:

print u'中文'   #==>中文

多行

ur'''Python的Unicode字符串支持"中文",

"日文",

"韩文"等多种语言'''

注意: 不加 u ,中文就不能正常显示。


字符串

如果字符串本身包含'怎么办?比如我们要表示字符串 I'm OK ,这时,可以用" "括起来表示:

"I'm OK"

类似的,如果字符串包含",我们就可以用' '括起来表示:

'Learn "Python" in imooc'

如果字符串既包含'又包含"怎么办?

这个时候,就需要对字符串的某些特殊字符进行“转义”,Python字符串用\进行转义。

切片:

>>> 'ABCDEFG'[:3]

'ABC'

>>> 'ABCDEFG'[-3:]

'EFG'

>>> 'ABCDEFG'[::2]

'ACEG'


List

由于Python是动态语言,所以list中包含的元素并不要求都必须是同一种数据类型,我们完全可以在list中包含各种数据:

>>> L = ['Michael', 100, True]

索引访问:

>>> print L[0]    #==> 顺序 第一个

>>> print L[-1]    #==> 倒数第一个

插入:

append() 总是把新的元素添加到 list 的尾部

insert() 方法,它接受两个参数,第一个参数是索引号,第二个参数是待添加的新元素。而原来索引 的元素,以及后面的所有元素,都自动向后移动一位。

删除:

pop()方法总是删掉list的最后一个元素,并且它还返回这个元素,所以我们执行 pop() 后,会打印出最后一个元素

pop(index) 删除指定索引元素

替换:

直接指定新的元素

L[index] = 'new' 

切片:

L[0:3]表示,从索引0开始取,直到索引3为止,但不包括索引3。即索引0,1,2,正好是3个元素。


tuple

tuple是另一种有序的列表,中文翻译为“ 元组 ”。tuple 和 list 非常类似,但是,tuple一旦创建完毕,就不能修改了。

tuple一开始指向的list并没有改成别的list,所以,tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向'a',就不能改成指向'b',指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!

切片:

L[0:3]表示,从索引0开始取,直到索引3为止,但不包括索引3。即索引0,1,2,正好是3个元素。


dict

名字称为key,对应的成绩称为value,dict就是通过 key来查找 value

d = {

////'Adam': 95,

////'Lisa': 85,

////'Bart': 59

}

访问:

注意: 通过 key 访问 dict 的value,只要 key 存在,dict就返回对应的value。如果key不存在,会直接报错:KeyError。

要避免 KeyError 发生,有两个办法:

一是先判断一下 key 是否存在,用 in 操作符:

if 'Paul' in d:

    print d['Paul']

如果 'Paul' 不存在,if语句判断为False,自然不会执行 print d['Paul'] ,从而避免了错误。

二是使用dict本身提供的一个 get 方法,在Key不存在的时候,返回None:

>>> print d.get('Bart')   # ==> Bart

>>> print d.get('Paul')   #==> None

替换:

直接重新赋值

遍历:

同上

set


二、IF-ELSE

注意: Python代码的缩进规则。具有相同缩进的代码被视为代码块,上面的3,4行 print 语句就构成一个代码块(但不包括第5行的print)。如果 if 语句判断为 True,就会执行这个代码块。if 语句后接表达式,然后用 : 表示代码块开始。

if not age >= 18:

////print 'teenager'

if age >= 18:

////print 'adult'

else:

////print 'teenager'


三、For

L = ['Adam', 'Lisa', 'Bart']

for name in L: 

////print name


四、While

N = 10

x = 0

while x < N:

////print x x = x + 1


五、break

while True:

//// sum = sum + x 

//// x = x + 1

//// if x > 100:

/////////break

print sum


六、continue

for x in L:

////if x < 60:

        ////continue

////sum = sum + x

/// /n = n + 1


七、多重循环

for x in['A', 'B', 'C']: 

////for y in['1', '2', '3']: 

///////// print x + y


八、编写函数

请定义一个 square_of_sum 函数,它接受一个list,返回list中每个元素平方的和:

def square_of_sum(L) :

    sum = 0

    for param in L :

           sum += param ** 2

    return sum   

print square_of_sum([1, 2, 3, 4, 5])

print square_of_sum([-5, 0, 5, 15, 25])


九、多个返回值

import math

def move(x, y, step, angle):

    nx = x + step * math.cos(angle)

    ny = y - step * math.sin(angle)

    return nx, ny

返回值是一个tuple,而多个变量可以同时接收一个tuple,按位置赋给对应的值,所以,Python的函数返回多值其实就是返回一个tuple,但写起来更方便。


十、递归函数

def fact(n):

    if n==1:

        return 1

    return n * fact(n - 1)

使用递归函数需要注意防止栈溢出。在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出。可以试试计算 fact(10000)。


十一、可变参数个数定义函数

def fn(*args) : 

////print args

可变参数的名字前面有个号,我们可以传入0个、1个或多个参数给可变参数:

上一篇 下一篇

猜你喜欢

热点阅读