函数

Posted wqq0723

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了函数相关的知识,希望对你有一定的参考价值。

                                               函数(三)

  • 函数—递归练习题

     1 #递归练习题(深度查询)
     2 menus = [
     3     {
     4         test: 北京,
     5         children: [
     6             {test: 朝阳, children: []},
     7             {test: 昌平, children: [
     8                 {test: 沙河, children: []},
     9                 {test: 回龙观, children: []},
    10             ]},
    11         ]
    12     },
    13     {
    14         test: 上海,
    15         children:[
    16             {test: 宝山, children: []},
    17             {test: 金山, children: []},
    18         ]
    19     }
    20 ]
    21 #打印所有的节点
    22 def calc(menu):
    23     for m in menu:              #循环
    24         menu_test = m[test]
    25         menu_children = m[children]
    26         print(menu_test)         #打印节点
    27         calc(menu_children)      #递归
    28 calc(menus)                      #调用函数
    29 
    30 #输入一个节点名字,沙河,要遍历找,找到了就打印它,并返回true,
    31 def calc1(menu, node, layer):
    32     for i in menu :
    33         menu_test = i[test]
    34         menu_children = i[children]
    35         print(menu_test)
    36         if node == menu_test:
    37             print("找到%s在第%s层"%(node,layer))      #返回到外层
    38             return True
    39         else:
    40             if calc1(menu_children,node,layer+1) == True :  #如果里层返回True,继续向上返回True
    41                 return True
    42             else:
    43                 calc1(menu_children,node,layer+1)
    44 node_str = input("输入一个节点名字:")
    45 print(calc1(menus,node_str,1))

 

  • 函数—内置方法1

技术分享图片

 

 1 # abs 绝对值
 2 print(abs(-11))               #结果为:11
 3 
 4 #dict     将一些数据转换为字典类型
 5 #help     查看帮助
 6 
 7 #min   返回最小值     max   返回最大值
 8 a =[1,4,5,-1,3]
 9 print(min(a))                #结果为:-1
10 print(max(a))                #结果为:5
11 
12 # all   列表里面所有的值都为 True 则返回 True(0、False为 False)
13 print(all(a))                #结果为:True
14 
15 print(bool(0))               #结果为:False
16 print(bool(False))          #结果为:False
17 print(bool(-1))              #结果为:True
18 
19 print(bool([]))              #结果为:False
20 print(all([]))               #结果为:True
21 
22 # any   列表里面有一个值为 True 则返回 True(0、False为 False)
23 a =[1,4,5,-1,0]
24 print(any(a))               #结果为:True
25 
26 #dir    打印当前程序中存在的所有变量
27 print(dir())               #结果为:[‘__annotations__‘, ‘__builtins__‘, ‘__cached__‘, ‘__doc__‘, ‘__file__‘, ‘__loader__‘, ‘__name__‘, ‘__package__‘, ‘__spec__‘, ‘a‘]
28 
29 #hex    将十进制数值转换为16进制
30 print(hex(12))             #结果为:0xc
31 
32 #slice   切片
33 s = slice(1,7,2)
34 li = list(range(10))
35 print(li)                   #结果为:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
36 print(s)                    #结果为:slice(1, 7, 2)
37 print(li[1:3])              #结果为:[1, 2]
38 print(li[s])                #结果为:[1, 3, 5]
39 
40 #divmod     返回商和余数
41 print(divmod(10,3))                #结果为:(3, 1)
42 
43 #sorted      排序
44 li = [0, 1, 2, 3, 99, 81, 4, 5, 6, 7, 8, 9]
45 print(li)                   #结果为:[0, 1, 2, 3, 99, 81, 4, 5, 6, 7, 8, 9]
46 print(sorted(li))           #结果为:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 81, 99]
47 #字典是无序的
48 d = { }
49 for i in range(20):
50     d[i] = i - 50
51 print(d)                    #结果为:{0: -50, 1: -49, 2: -48, 3: -47, 4: -46, 5: -45, 6: -44, 7: -43, 8: -42, 9: -41, 10: -40, 11: -39, 12: -38, 13: -37, 14: -36, 15: -35, 16: -34, 17: -33, 18: -32, 19: -31}
52 print(d.items())            #结果为:dict_items([(0, -50), (1, -49), (2, -48), (3, -47), (4, -46), (5, -45), (6, -44), (7, -43), (8, -42), (9, -41), (10, -40), (11, -39), (12, -38), (13, -37), (14, -36), (15, -35), (16, -34), (17, -33), (18, -32), (19, -31)])
53 print(sorted(d.items()))    #结果为:[(0, -50), (1, -49), (2, -48), (3, -47), (4, -46), (5, -45), (6, -44), (7, -43), (8, -42), (9, -41), (10, -40), (11, -39), (12, -38), (13, -37), (14, -36), (15, -35), (16, -34), (17, -33), (18, -32), (19, -31)]
54 print(sorted(d.items(),key = lambda  x:x[1]))           #结果为:[(0, -50), (1, -49), (2, -48), (3, -47), (4, -46), (5, -45), (6, -44), (7, -43), (8, -42), (9, -41), (10, -40), (11, -39), (12, -38), (13, -37), (14, -36), (15, -35), (16, -34), (17, -33), (18, -32), (19, -31)]
55 d[0] = 299
56 print(sorted(d.items(),key = lambda  x:x[1]))                 #最大值在最后面   结果为:[(1, -49), (2, -48), (3, -47), (4, -46), (5, -45), (6, -44), (7, -43), (8, -42), (9, -41), (10, -40), (11, -39), (12, -38), (13, -37), (14, -36), (15, -35), (16, -34), (17, -33), (18, -32), (19, -31), (0, 299)]
57 print(sorted(d.items(),key = lambda x:x[1],reverse=True))    #最大值在最前面    结果为:[(0, 299), (19, -31), (18, -32), (17, -33), (16, -34), (15, -35), (14, -36), (13, -37), (12, -38), (11, -39), (10, -40), (9, -41), (8, -42), (7, -43), (6, -44), (5, -45), (4, -46), (3, -47), (2, -48), (1, -49)]
58 
59 #ascii        将字符转成二进制
60 s = abcd路飞
61 print(s)                    #结果为:abcd路飞
62 print(ascii(s))             #结果为:‘abcdu8defu98de‘
63 
64 #enumerate         枚举,返回列表的索引
65 
66 # oct    将10进制转换成为8进制
67 print(oct(12))             #结果为:0o14
68 
69 # bin    将10进制转换成为2进制;
70 print(bin(12))             #结果为:0b1100

 

  • 函数—内置方法2

 

 1 #eval  exec     将字符串转成数字
 2 f = 1+3/2
 3 print(f)                         #结果为:1+3/2
 4 print(eval(f))                   #结果为:2.5
 5 code = """
 6 def foo():
 7     prinr("run foo")
 8     return 1234
 9 foo()
10 """
11 res = eval("1+3+3")
12 res2 = exec("1+3+3")
13 print(res,res)                #结果为:res 7
14 print(res,res2)               #结果为:res None
15 #  小结;
16 # eval只能处理单行代码,而exec可以处理多行代码;
17 # 但exec没有返回值,eval有返回值;
18 
19 #ord     返回在ASCII码表中的位置        chr   通过ASCII码表中的位置,返回字符
20 print(ord(a))                 #结果为:97
21 print(ord(b))                 #结果为:98
22 print(chr(97))                   #结果为:a
23 print(chr(98))                   #结果为:b
24 
25 #sum    求列表中元素的和
26 a =[1,4,5,-1,3,0]
27 print(sum(a))                    #结果为:12
28 
29 #bytearray
30 print(a)                         #结果为:[1, 4, 5, -1, 3, 0]
31 s = abcd路飞
32 print(s)                         #结果为:abcd路飞
33 print(s[0])                      #结果为:a
34 #s[0]=‘A‘
35 #print(s[0])                      #结果为:TypeError: ‘str‘ object does not support item assignment
36 #s2 = bytearray(s)                #结果为:TypeError: string argument without an encoding
37 s = s.encode(utf-8)
38 print(s[0])                       #结果为:97
39 #s[0] =98                         #结果为:TypeError: ‘bytes‘ object does not support item assignment
40 s = bytearray(s)
41 print(s[0])                       #结果为:97
42 s[0] = 65
43 print(s)                          #结果为:bytearray(b‘Abcdxe8xb7xafxe9xa3x9exe5xadxa6xe5x9fx8e‘)
44 print(s[4])                       #结果为:232
45 s[4]=233
46 print(s)                         #结果为:bytearray(b‘Abcdxe8xb7xafxe9xa3x9exe5xadxa6xe5x9fx8e‘)
47 print(s.decode())                #结果为:Abcd鷯飞学城
48 print(id(s))                     #结果为:1987262190008
49 s[0]=66
50 print(id(s))                     #结果为:1987262190008
51 
52 #map  filter(过滤)   reduce   三剑客
53 print(map(lambda x: x*x , [1,2,3,4,5]))         #结果为:<map object at 0x0000022DB38384A8>
54 print(list(map(lambda x: x*x , [1,2,3,4,5])))   #结果为:[1, 4, 9, 16, 25]
55 
56 print(filter(lambda x: x>3 , [1,2,3,4,5]))         #结果为:<filter object at 0x000002B9B1CC84E0>
57 print(list(filter(lambda x: x>3 , [1,2,3,4,5])))   #结果为:[4, 5]
58 
59 import functools
60 print(functools.reduce(lambda x,y:x+y,[1,3,4,5,6678,4,2]))#求和     结果为:6697
61 print(functools.reduce(lambda x,y:x+y,[1,3,4,5,6678,4,2],3))#从第三个开始求和   结果为:6700
62 print(functools.reduce(lambda x,y:x*y,[1,3,4,5,6678,4,2]))#求乘积   结果为:3205440
63 
64 
65 #pow    返回2的10次幂
66 print(pow(2,10))         #结果为:1024

 

 

 

  • 函数—内置方法3

 

 1 #print
 2 s = hey, my name is alex
,from shandong
 3 print(s)
 4 #结果为:
 5 # hey, my name is alex
 6 #,from shandong
 7 # 默认end结尾是一个
换行符
 8 
 9 print(s,end=)
10 #结果为
11 #hey, my name is alex
12 #,from shandong,
13 
14 print(s,end=|)
15 #结果为
16 #hey, my name is alex
17 #,from shandong|
18 
19 print(s,sep="")
20 #结果为
21 #hey, my name is alex
22 #,from shandong
23 
24 print(haifeng,gangniang)              #结果为:haifeng gangniang
25 print(haifeng,gangniang,sep=---)   #结果为:haifeng---gangniang
26 
27 #print将内容直接重定向至文件中
28 msg = "又回到最初的起点"
29 f = open("print_tofile","w")
30 print(msg,"记忆中你青涩的脸",sep="|",end="",file=f)
31 
32 
33 #callable      判断一个对象是否可调用
34 a = [1,2,3,12,4]
35 print(callable(a))            #结果为:False
36 def f():
37     pass
38 print(f)                      #结果为:<function f at 0x000002D25B1997B8>
39 print(callable(f))            #结果为:True
40 
41 
42 #discard         删除一个值
43 s={12,3,4,4}
44 #print(s.discard())            #结果为:TypeError: discard() takes exactly one argument (0 given)
45 s.discard(3)
46 print(s)                       #结果为:{12, 4}
47 
48 
49 #vars               打印当前所有的变量名和变量值
50 
51 #locals             打印函数的局部变量
52 def f():
53     n=3
54     print(locals())
55 f()                  #结果为:{‘n‘: 3}
56 
57 #globals            打印全局变量
58 
59 #repr
60 s={12,3,4,4}
61 print(repr(s))             #结果为:{3, 12, 4}
62 
63 #zip
64 a= [1,2,3,4,5]
65 b=[a,b,c]
66 print(zip(a))             #结果为:<zip object at 0x0000015F01C46A08>
67 print(list(zip(a,b)))     #结果为:[(1, ‘a‘), (2, ‘b‘), (3, ‘c‘)]
68 
69 
70 #complex     变为复数
71 print(complex(3,5))          #结果为:(3+5j)
72 
73 #round        四舍五入取值
74 print(round(1.553433))               #结果为:2
75 print(round(1.453433))               #结果为:1
76 #保留5位小数
77 print(round(1.343433,5))             #结果为:1.34343
78 
79 
80 #  hash     hash值
81 print(hash("武倩倩"))                #结果为:6699813159710321764
82 
83 #set  将列表变为集合:
84 print(set([1,3,4,5,6,7]))              #结果为:{1, 3, 4, 5, 6,7}

 

  • 函数—函数练习题

技术分享图片

 

以上是关于函数的主要内容,如果未能解决你的问题,请参考以下文章

使用从循环内的代码片段中提取的函数避免代码冗余/计算开销

在 Visual Studio 中创建构造函数的代码片段或快捷方式

调用模板化成员函数:帮助我理解另一个 *** 帖子中的代码片段

web代码片段

C#常用代码片段备忘

php 一个自定义的try..catch包装器代码片段,用于执行模型函数,使其成为一个单行函数调用