py的函数及练习 12.21

来源:互联网 发布:python cookie文档 编辑:程序博客网 时间:2024/06/05 03:19

函数:

eval() 函数用来执行一个字符串表达式,并返回表达式的值。

可以将元组字典列表的字符串类型转换成元组字典列表

eval

  功能:将字符串str当成有效的表达式来求值并返回计算结果。

  语法: eval(source[, globals[, locals]]) -> value

  参数:

source:一个Python表达式或函数compile()返回的代码对象

globals:可选。必须是dictionary

locals:可选。任意map对象


1. 函数的定义和调用

(1) 函数是组织好的,可以重复使用,用来实现单一 和相关联功能的代码段

(2) 函数代码块以def关键词开头,后接函数标识符名称和圆括号 ()。

(3) 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。

(4) 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
函数内容以冒号起始,并且缩进。

(5) return[表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回None

2. 语法.

(1) Def函数名(参数列表):
函数体
return

3. 参数

(1) 不可变类型

(2) 关键字参数**

① 关键字参数允许你传入0个或者任意不含参数名的参数,这些关键字参数在函数内部自动组装为一个dictionary

② 如果传参数必须传键值对类型的参数,可以有多个

③ 也可以将一个元组,字典或者列表传进去,但是需要在前面加**,可以把列表元组字典里面的东西取出来

④ 

(3) 默认参数

① 

(4) 不定长参数

(5) 可变参数*

① 把参数归入一个元组中

② 一个可变参数,传值的时候可以传一系列值

③ 也可以将一个元组或者列表传进去,但是需要在前面加*,可以把列表元组里面的东西取出来

④ 可变参数要写在后面

⑤ 可以不传参数

4. * 可以充当分隔符

练习:

作业:1、简述普通参数、指定参数、默认参数、动态参数的区别必需参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。调用函数时,如果没有传递参数,则会使用默认参数。加了星号(*)的变量名会存放所有未命名的变量参数。如果在函数调用时没有指定参数,它就是一个空元组。 2、写函数,计算传入字符串中【数字】、【字母】、【空格] 以及 【其他】的个数def strs():    a = 0    b = 0    c = 0    d = 0    aa = str(input('请输入'))    for i in aa :        if i.isdigit():            a += 1        elif i.isalpha():            b += 1        elif i == ' ':            c += 1        else:            d += 1    print('数字有:',a)    print('字母有:',b)    print('空格有:',c)    print('其他有:',d)3、写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。def pd(*aa):    if aa.__len__() > 5:        print('大于五')    elif aa.__len__() == 5:        print('等于五')    else:print('小于五')aa =['a,','for ',123,55,3]pd(*aa) 4、写函数,检查用户传入的对象(字符串、列表、元组)的每一个元素是否含有空内容。def jc(*qq):    if qq.count(' ') == 0:        print('没有')    else:print('有')ca = input('>>>')jc(*ca) 5、写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。def cr(ls):    cc = []    ls = list(ls)    if len(ls) > 2:        del ls[2:]        return lsls = [1,2,3,4,5,6]r = cr(ls)print(r) 6、写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。def ind(cc):    c = []    for i in range(0,len(cc)):        if i % 2 == 0:            c.append(cc[i])        else:pass    return ccc = [1,2,3,4,'a']r = ind(cc)print(r)7、写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。def zd(dict):    ret = {}    for key,value in dict.items():        if len(value) > 2:            ret[key] = value[0:2]        else:ret[key] = value    return retdict = {'Alice': ['2341','sad','asdasd','asd'], 'Beth': '9102', 'Cecil': '3258'}c = zd(dict)print(c)8、写函数,利用递归获取斐波那契数列中的第 10 个数,并将该值返回给调用者。def dg():    q = []    a, b = 0, 1    while b < 100:        a, b = b, a + b        q.append(b)        if q.__len__() == 10:            return bprint(dg())9、将通讯录管理系统改成函数的形式实现10.实现百钱买百鸡,公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱,用100文钱买一百只鸡,其中公鸡,母鸡,小鸡都必须要有,问公鸡,母鸡,小鸡要买多少只刚好凑足100文钱。公鸡 = x 母鸡 = y 小鸡 = z5x+3x+z/3 = 100for i in range(1,100):    for j in range(1, 100):        for k in range(1, 100):            if 5*i+3*j+k/3 == 100 and i+k+j == 100:                print('公鸡',i,end=' ')                print('母鸡',j,end=' ')                print('小鸡',k,end=' ')                print()

思考题:有10个数逢三退出最后剩几?用py写出来
原创粉丝点击