【0814 | Day 15】递归/内置函数/面向过程编辑
递归
一、什么是递归
递归:调用函数本身的同时能结束。
二、为什么要用递归
普通的重复,可用while取代
三、如何用递归
可参考汉诺塔
def move(n, a, b, c): #n圆盘数,a为起始圆柱,b为过渡圆柱,c为目标圆柱
if n == 1:
print(a, '-->', c)
else:
move(n - 1, a, c, b)
print(a, '-->', c)
move(n - 1, b, a, c)
move(7,'A','B','C')
内置函数
一、掌握
1.bytes( )
解码字符
res = '你好'.encode('utf8')
print(res)
---> b'\xe4\xbd\xa0\xe5\xa5\xbd'
2.chr( )/ord( )
chr()参考ASCII码表将数字转成对应字符;ord()将字符转换成对应的数字
print(chr(65))
print(ord('A'))
---> A
---> 65
3.divmod( )
分栏
print(divmod(10,3))
---> (3,1)
4.enumerate( )
带有索引的迭代
l = ['a', 'b', 'c']
for i in enumerate(l):
print(i)
---> (0, 'a')
---> (1, 'b')
---> (2, 'c')
5.eval( )
把字符串翻译成数据类型
lis = '[1,2,3]'
lis_eval = eval(lis)
print(lis_eval)
---> [1, 2, 3]
6.hash( )
是否可哈希
print(hash(1))
---> 1
二、了解
1.abs( )
求绝对值
print(abs(-13)) #求绝对值
---> 13
2.all( )
可迭代对象内元素全为真,则返回真。
print(all([1, 2, 3, 0])) #0为False
print(all([]))
---> False
---> True
3.any( )
可迭代对象中有一元素为真,则为真。
print(any([1, 2, 3, 0]))
print(any([]))
---> True
---> False
4.bin( )/oct( )/hex( )
二进制、八进制、十六进制转换
print(bin(17))
print(oct(17))
print(hex(17))
---> 0b10001
---> 0o21
---> 0x11
5.dir( )
列举出所有time的功能。
import time
print(dir(time))
#['_STRUCT_TM_ITEMS', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'altzone', 'asctime', 'clock', 'ctime', 'daylight', 'get_clock_info', 'gmtime', 'localtime', 'mktime', 'monotonic', 'perf_counter', 'process_time', 'sleep', 'strftime', 'strptime', 'struct_time', 'time', 'timezone', 'tzname', 'tzset']
6.frozenset( )
不可变集合。
s = frozenset({1, 2, 3})
print(s)
---> frozenset( {1, 2, 3} )
7.globals( )/loacals( )
查看全局名字;查看局部名字。
# print(globals())
def func():
a = 1
# print(globals())
print(locals())
func()
---> {'a': 1}
8.pow( )
幂方
print(pow(3, 2, 3)) # (3**2)%3
---> 0
9.round( )
四舍五入
print(round(3.5))
---> 4
10.slice( )
切片(类似于现在列表的索引取值)
lis = ['a', 'b', 'c']
s = slice(1, 4, 1)
print(lis[s]) # print(lis[1:4:1])
---> ['b', 'c']
11.sum( )
求和
print(sum(range(100)))
---> 4950
12._import_( )
通过字符串导入模块。
m = __import__('time')
print(m.time())
---> 1556607502.334777
面向过程编程
面向过程编程:面向目标进行流水线的生成过程。
优点:思路清晰
缺点:1. 各环节不独立
2.牵一发而动全身,延展性差