python day16

一.昨日内容回顾

内置函数:

max(iterable,key=函数名)

min(iterable,key=函数名)

sorted(iterable,key,reverse)返回值为list

all()全部是真则返回Ture

any()只要有一个是真则返回Ture

enumerate()枚举.

sum(iterable,start)求和,可设置初始值.

isinstance()

divmod(被除数,除数)商 余数

扫描二维码关注公众号,回复: 1702459 查看本文章

abs 绝对值

slice 切片的规则

len()长度

eval()执行字符串的代码,并返回最终结果

exec()执行流程控制语句.无返回值

pow(x,y,z)x**y 次幂 对z取余

round()保留小数的位数

id()

hash()不可变的数据的哈希值.

range()可控的数字范围

bin()二进制

oct()八进制

hex()十六进制

bytes()

format()

repr()

返回的是迭代器:

filter(key,iterable)相当于筛选模式

map(key,iterable)相当于循环模式.

zip(iter1,iter2,iter3...)拉链方法

reversed()翻转

匿名函数lambda

func=lambda x,y:x+y

二.回顾编码问题:

编码相当于密码本,关系到二进制与看懂的文字的对应关系.

最早期的密码本:

ascii码:只包含英文字母,数字,特殊字符.

0000 0001:

'fjdskal 我发'

字符:组成你看到的内容的最小单位就是字符.

位:二进制中占有的位置,就是位.

字节:8位表示一个字节

对于ASCII码,一个字符是用8位一个字节去表示.

A:01000001

unicode 万国码:将全世界所有的文字都给我汇总到一起.

起初:unicode:

一个字符用16位表示.

A:0000 0000 0000 0010

中:0000 0000 0000 0010

最终unicode:

一个字符用32位表示.

A:0000 0000 0000 0010 0000 0000 0000 0010

中:0000 0000 1000 0010 0000 0000 1000 0010

浪费,占用资源.

utf-8:最少用8位表示一个字符.对unicode升级.

A:01000001

欧洲文字:0000 0000 1000 0010

亚洲文字:0000 0010 0000 0000 1000 0010

gbk:国标码

英文字母:一个字节表示.中文两个字节表示.

A:01000001

中:0000 0000 1000 0010

前提:

文件的存储和传输 不能用unicode编码

除了unicode 剩下的编码方式不能直接识别.

python3x版本.

int

str ----->在内存中用的unicode

bytes类型

list

bool

dict

set

tuple

英文:

str:

表现形式: b1=b'oldboy'

内部编码:非unicode

中文:

str:

表现形式:s='中国'

内部编码:unicode

bytes:

表现形式:b1=b'\xe4\xb8\xad\xe5\x9b\xbd'

内部编码:非unicode

# s = 'oldboy'
# print(s.upper())
# s = '中国'
# b1 = b'oldboy'
# b2 = s.encode('utf-8')
# print(b2)
# print(b1.upper())
# print(b1,type(b1))

# s1 = '老男孩'
# b1 = s1.encode('utf-8') # 编码
# s22 = b1.decode('utf-8') # 解码
# print(s22)
# b2 = s1.encode('gbk') # unicode ---> gbk
# s33 = b2.decode('gbk') # gbk ---> unicode
# print(b1)
# print(b2)

# s1 = 'alex'
# b1 = s1.encode('gbk')
# b2 = b1.decode('utf-8')
# print(b2)

# s1 = '中国'
# b1 = s1.encode('gbk')
# print(b1)
# b2 = b1.decode('gbk').encode('utf-8')
# print(b2)
# s1 = 'zhong'
# b1 = s1.encode('utf-8')
# print(b1)
# print(b1.decode('gbk'))

三.今日内容

递归函数

递归:自己调用自己.

默认递归次数:998

可设置递归次数:

import sys

sys.setrecurecursionlimit(100000)

import sys
sys.setrecursionlimit(100000)
# def func1():
# print(666)
# func1()

# def func():
# print(666)
# func()
# func()
# while True:
# print(666)
#
# 递归到一定次数,就会主动终止. 998
# def func(x):
# x += 1
# print(x)
# func(x)
# n = 0
# func(n)

# 设置递归次数

'''
alex 比 佩奇 大两岁 n = 4
佩奇 比 文周 大两岁 n = 3
文周 比 太白 大两岁 n = 2
太白 26岁 n = 1
'''
def age(n):
if n == 1:
return 26
else:
return age(n-1) + 2
print(age(4)) # age(3) + 2

'''
def age(4):
if n == 1:
return 26
else:
return age(3) + 2

def age(3):
if n == 1:
return 26
else:
return age(2) + 2

def age(2):
if n == 1:
return 26
else:
return age(1) + 2
def age(1):
if n == 1:
return 26
else:
return age(0) + 2
print(age(4))
age(4) = 26 + 2 + 2 + 2

'''
二分查找
算法,最经典最简单的算法.
前提:有序的不重复的数字序列.
# l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88]
# def index(l,aim):
# count = -1
# for i in l:
# count += 1
# if i == aim:
# return count
# return '没有此值'
# print(index(l,84))

# 第一版 原列表发生改变,导致索引改变.
# l1 = [2, 3, 5, 10, 15, 16, 18, 19]
# def two_find(l,aim):
# mid_index = len(l) // 2
# if aim > l[mid_index]:
# return two_find(l[mid_index+1:],aim)
# elif aim < l[mid_index]:
# return two_find(l[:mid_index], aim)
# elif aim == l[mid_index]:
# return mid_index
# else:
# return None
# print(two_find(l1,18))
# print(two_find(l1,3))
# print(two_find(l1,10))

# 第二版 原列表不发生改变,你的min_index = (end - start) // 2 + start
# l1 = [2, 3, 5, 10, 15, 16, 18]
#
# def two_find(l,aim,start=0,end=None):
# end = len(l) - 1 if end is None else end
# mid_index = (end - start) // 2 + start
# '''
# 第一次: aim:15 start: 0 end: 6 min_index: 3 中间值:10 aim > 10
# 第二次: aim:15 start: 4 end: 6 min_index: 5 中间值:16 aim < 16
# 第三次: aim:15 start: 4 end: 5 min_index: 4 中间值:15 aim = 15
# '''
# if start <= end:
# if aim > l[mid_index]:
# return two_find(l, aim, start=mid_index+1, end=end)
# elif aim < l[mid_index]:
# return two_find(l, aim, start=start, end=mid_index)
# elif aim == l[mid_index]:
# return mid_index
# else:
# return None
# else:
# return None
# print(two_find(l1,15))

猜你喜欢

转载自www.cnblogs.com/zm419914/p/9214407.html