python 函数&条件,循环

条件

if <条件判断1>:

<执行1>

elif <条件判断2>:

<执行2>

elif <条件判断3>:

<执行3>

else:

<执行4>

注意 else 后加冒号 :

input()返回的数据类型是str

循环

Python的循环有两种,一种是for...in循环,依次把list或tuple中的每个元素迭代出来

for x in ...循环就是把每个元素代入变量x,然后执行缩进块的语句。

Python提供一个range()函数,可以生成一个整数序列,再通过list()函数可以转换为list。比如range(5)生成的序列是从0开始小于5的整数:

>>> list(range(5))

[0, 1, 2, 3, 4]

range(101)就可以生成0-100的整数序列

第二种循环是while循环

dict

Python内置了字典:dict

>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}

>>> d['Michael']

95

数据放入dict的方法,除了初始化时指定外,还可以通过key放入:

>>> d['Adam'] = 67

>>> d['Adam']

67

通过in判断key是否存在:

>>> 'Thomas' in d

False

删除一个key,用pop(key)方法,对应的value也会从dict中删除

set

在set中,没有重复的key

创建一个set,需要提供一个list作为输入集合:

>>> s = set([1, 2, 3])

>>> s

{1, 2, 3}

重复元素在set中自动被过滤:

>>> s = set([1, 1, 2, 2, 3, 3])

>>> s

{1, 2, 3}

add(key)方法可以添加元素到set中,可以重复添加,但不会有效果

remove(key)方法可以删除元素

set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作:

>>> s1 = set([1, 2, 3])

>>> s2 = set([2, 3, 4])

>>> s1 & s2

{2, 3}

>>> s1 | s2

{1, 2, 3, 4}

函数

可以把函数名赋给一个变量

>>> a = abs # 变量a指向abs函数

>>> a(-1) # 所以也可以通过a调用abs函数

1

在Python中,定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回。

def my_abs(x):

if x >= 0:

return x

else:

return -x

如果没有return语句,函数执行完毕后也会返回结果,只是结果为None。return None可以简写为return。

在Python交互环境中定义函数时,注意Python会出现...的提示。函数定义结束后需要按两次回车重新回到>>>提示符下。

pass可以用来作为占位符,比如现在还没想好怎么写函数的代码,就可以先放一个pass,让代码能运行起来

默认参数

把第二个参数n的默认值设定为2:

def power(x, n=2):

s = 1

while n > 0:

n = n - 1

s = s * x

return s

当调用power(5)时,相当于调用power(5, 2):

>>> power(5)

25

必选参数在前,默认参数在后

不按顺序提供部分默认参数时,需要把参数名写上。比如调用enroll('Adam', 'M', city='Tianjin'),意思是,city参数用传进去的值

可变参数

def calc(numbers):

sum = 0

for n in numbers:

sum = sum + n * n

return sum

调用的时候,需要先组装出一个list或tuple:

>>> calc([1, 2, 3])

14

简化:

def calc(*numbers):

sum = 0

for n in numbers:

sum = sum + n * n

return sum

>>> calc(1, 2, 3)

14

>>> nums = [1, 2, 3]

>>> calc(*nums)

14

关键字参数

def person(name, age, **kw):

>>> extra = {'city': 'Beijing', 'job': 'Engineer'}

>>> person('Jack', 24, **extra)

**extra表示把extra这个dict的所有key-value用关键字参数传入到函数的**kw参数,kw将获得一个dict

只接收city和job作为关键字参数。这种方式定义的函数如下:

def person(name, age, *, city, job):

命名关键字参数需要一个特殊分隔符*,*后面的参数被视为命名关键字参数

使用命名关键字参数时,要特别注意,如果没有可变参数,就必须加一个*作为特殊分隔符。如果缺少*,Python解释器将无法识别位置参数和命名关键字参数

如果函数定义中已经有了一个可变参数,后面跟着的命名关键字参数就不再需要一个特殊分隔符*了:

def person(name, age, *args, city, job):

参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。

*args是可变参数,args接收的是一个tuple;

**kw是关键字参数,kw接收的是一个dict。