python 简单入门教程(二) 流程控制 函数


流程控制

if...else...elif

if 1>2:
    print 'AAAA'
-------------------------------
if 1>2:
    print 'AAAA'
else:
    print 'BBBB'
--------------------------------
if 1>2:
    print 'AAAA'
elif 1>0:
    print 'BBBB'
else:
   print 'CCCC'
----------------------------------
if 2>1:
    print 'AAAA'
    print 'BBBB'
输出:AAAA
           BBBB
-----------------------------------
if 2<1:
    print 'AAAA'
print 'BBBB'
输出:BBBB

if中缩进代表运行的范围

 

逻辑运算符 

 

and / or / not

 

for

for x in 'abcde':
    print x
输出:
a
b
c
d
e

range(start, stop[, step]) 生成序列
range(10) 产生 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
range(5,9) 产生 [5, 6, 7, 8]
range(1,10,2) 2为步进,产生 [1, 3, 5, 7, 9]
例子:
for x in range(10):
    print x,'AAAA'
会输出10次x+AAAA

python中与c语言不一样循环也可以加else
for x in range(5):
    print x
else:
    print 'end'
输出完后输出 end

for x in range(5):
    print x
    if x>2:
        break
else:
    print 'end'

但这样end不会输出

break返回,continue继续,pass占位,代码庄

 

便利序列及字典

 

便利序列
例子:
a=['a','b','c','d','d']
for x in range(len(a)):
    print a[x]
或者
for x in a:
    print x

便利字典
a={1:'a',2:'b',3:'c',4:'d',5:'d'}
for x in a:
    print x
会输出字典的key

for x in a:
    print a[x]
可以输出value

for x,y in a.items():
    print x,y
用items()生成键值对的序列
x就是key,y就是value

 

while

 

例子:
i=0
while i<10:
    print i
    i+=1

输出0到9

while也可以加else

i=0
while i<10:
    print i
    i+=1
else:
    print 'end'
输出0~9后会输出end,同样break出来else的内容不会执行

 

函数

函数的定义

 

定义实现a+b
例子:
def add(a=1,b=2):
    return a+b
print add()

输出5

可以定义默认形参
def add(a=1,b=2):
    print a+b
add()
输出3

 

* 与 **

 

*表示是元组或者列表
**表示是字典

def add(a,b):
    return a+b
t=(1,2)
print add(t)
这样会出错
如果改成 print add(*t) 不会出错

如果add(1,2,3,4)多写了两个参数也会出错
定义成
def add(a,b,*args):
    return a+b
就不会出错,args就是一个元组存放多余的参数这里args就是(3,4)

def f(name='name',age='0'):
    print "name:%s, age:%s" %(name,age)
f(*('wang','18'))
f(*('18','wang'))
会输出:
name:wang, age:18
name:18, age:wang


def f(name='name',age='0'):
    print "name:%s, age:%s" %(name,age)
f(name='wang',age='18')
f(age=18,name='wang')
这两个f函数都会输出name:wang, age:18 而不会输出name=18, age=wang

这样就
def f(name='name',age='0'):
    print "name:%s, age:%s" %(name,age)
a={'age':'18','name':'wang'}
f(**a)

可显示name:wang, age:18


def f(name='name',age='0',*args,**kwargs):
    #print "name:%s, age:%s" %(name,age)
    print kwargs
f(x='x',y='y')

可显示 {'y': 'y', 'x': 'x'}

 

lambda表达式

 

def add(x,y):
    return x+y

g = lambda x,y:x+y # lambda表达式,等价于add

print add(1,2)
print g(1,2)

 

reduce

 

用reduce实现阶乘

def f(x,y):
    return x*y


l=range(1,6)
print reduce (f,l) #reduce每次取2个

 

 

 

  • Janvn

    评论: 博主好腻害啊,我也想做一个,求带求带

    2015-07-09 22:38:57          回复

  • luckystar1992

    评论: py3和py2 语法和使用规则有差别啊,从print就能看出。 然后× 和×× 的问题,py2在解压list或是tuple等类型的时候不支持×,在py3中就支持。

    2015-05-27 12:01:01          回复

  • billvsme

    评论: 快来评论啦!!

    2015-05-05 11:11:58          回复