s21day11 python笔记
程序员文章站
2022-04-19 22:42:06
s21day11 python笔记 一、函数小高级 1. 函数名可以当作变量来使用 2. 函数可以当作参数进行传递 二、 lambda表达式 1. 作用:用于表达简单的函数 2. 基本形式: 3. 重点: lambda表达式只能用一行表示函数 用lambda表达式表示函数时,无法设置新变量,只能用参 ......
s21day11 python笔记
一、函数小高级
-
函数名可以当作变量来使用
#示例一: def func(): print(123) func_list = [func, func, func] # func_list[0]() # func_list[1]() # func_list[2]() for item in func_list: v = item() print(v) #示例二: def func(): print(123) def bar(): print(666) info = {'k1': func, 'k2': bar} info['k1']() info['k2']() #注意区别: def func(): return 123 func_list1 = [func,func,func] func_list2 = [func(),func(),func()] print(func_list1) print(func_list2)
-
函数可以当作参数进行传递
#示例: def func(arg): v1 = arg() print(v1) def show(): print(666) result = func(show) print(result)
#面试题:多个函数的调用 def func(): print('话费查询') def bar(): print('语音沟通') def base(): print('业务办理') def show(): print('流量查询') def test(): print('人工服务') info = { 'f1': func, 'f2': bar, 'f3':base, 'f4':show, 'f5':test } choice = input('请选择要选择功能:') function_name = info.get(choice) if function_name: function_name() else: print('输入错误')
二、 lambda表达式
作用:用于表达简单的函数
-
基本形式:
#三元运算,为了解决简单的if else的情况 if 1 == 1: a = 123 else: a = 456 #用三元运算表示: a = 123 if 1 == 1 else 456 #lambda表达式,为了解决简单函数的情况 def func(a1,a2): return a1 + a2 #用lambda表达式表示: func = lambda a1,a2: a1+a2 #隐含了return
-
重点:
- lambda表达式只能用一行表示函数
- 用lambda表达式表示函数时,无法设置新变量,只能用参数作变量
- 列表所有方法基本上都是返回none,字符串的所有方法基本上都是返回新值
-
练习题
# 练习题1 user_list = [] def func0(x): v = user_list.append(x) return v result = func0('alex') print(result) #none # 练习题2 def func0(x): v = x.strip() return v result = func0(' alex ') print(result) #'alex' # 练习题3 user_list = [] func1 = lambda x: user_list.append(x) v1 = func1('alex') print(v1) #none print(user_list) #['alex'] # 练习题4 func1 = lambda x: x.split('l') v1 = func1('alex') print(v1) #['a','ex'] # 练习题5 func_list = [lambda x:x.strip(), lambda y:y+199,lambda x,y:x+y] v1 = func_list[0]('alex ') print(v1) #'alex' v2 = func_list[1](100) print(v2) #299 v3 = func_list[2](1,2) print(v3) #3
三、内置函数
函数分为自定义函数和内置函数
python内置函数分类:
强制转换:int() / str() / bool() / list() / tuple() / dict() / set()
输入输出:input() / print()
其他:len() / open() / range() / id() / type()
-
数学相关:
abs():计算绝对值
sum():求和
-
float():转化为浮点型(小数)
v = 55 v1 = float(55) print(v1) #55.0
- 补充:int(55.5) #只保留整数:55
max():找到最大值
min():找到最小值
-
divmod():取两数相除的商和余数
#示例: a,b = divmod(1001,5) print(a,b) #a=200,b=1
-
注意:divmod在分页展示时用得比较多
# 练习题 请通过分页对数据进行展示 """ 要求: 每页显示10条数据 让用户输入要查看的页面:页码 """ user_list = [] for i in range(1,836): temp = {'name':'你-%s' %i,'email':'123%s@qq.com' %i } user_list.append(temp) # 数据总条数 total_count = len(user_list) # 每页显示10条 per_page_count= 10 # 总页码数 max_page_num,a = divmod(total_count,per_page_count) if a>0: max_page_num += 1 while true: pager = int(input('要查看第几页:')) if pager < 1 or pager > max_page_num: print('页码不合法,必须是 1 ~ %s' %max_page_num ) else: start = (pager-1) * per_page_count end = pager * per_page_count data = user_list[start:end] for item in data: print(item)
-
-
进制转换相关:
bin():将十进制转换成二进制
oct():将十进制转换成八进制
-
int():将其他进制转换成十进制
- 默认:base = 10
# 二进制转化成十进制 v1 = '0b1101' result = int(v1,base=2) #base=2说明读取的是二进制 print(result) # 八进制转化成十进制 v1 = '0o1101' result = int(v1,base=8) print(result) # 十六进制转化成十进制 v1 = '0x1101' result = int(v1,base=16) print(result)
hex():将十进制转换成十六进制
#1字节等于8位 # ip: 192.168.12.79 -> 001010010 . 001010010 . 001010010 . 001010010 # 请将 ip = "192.168.12.79" 中的每个十进制数转换成二进制并通过,连接起来生成一个新的字符串。 ip = "192.168.12.79" ip_list = ip.split('.') # ['192','168','12','79'] result = [] for item in ip_list: result.append(bin(int(item))) print(','.join(result)) #面试题: # 请将 ip = "192.168.12.79" 中的每个十进制数转换成二进制: # 0010100100001010010001010010001010010 -> 十进制的值。 # 3232238671 ip = '192.168.12.79' v = ip.split('.') info = [] for i in v: date = str(bin(int(i))) if len(date) > 10: date = date[-8:] else: count = 10 - len(date) date = date.replace('0b','0'*count) info.append(date) val = "".join(info) a = int(val,base=2) print(a)
上一篇: JavaScript实现Tab切换
下一篇: 网购二B让人内伤的超搞笑笑话