s21day11 python笔记
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)
s21day11 python笔记的更多相关文章
- Python笔记之不可不练
如果您已经有了一定的Python编程基础,那么本文就是为您的编程能力锦上添花,如果您刚刚开始对Python有一点点兴趣,不怕,Python的重点基础知识已经总结在博文<Python笔记之不可不知 ...
- boost.python笔记
boost.python笔记 标签: boost.python,python, C++ 简介 Boost.python是什么? 它是boost库的一部分,随boost一起安装,用来实现C++和Pyth ...
- 20.Python笔记之SqlAlchemy使用
Date:2016-03-27 Title:20.Python笔记之SqlAlchemy使用 Tags:python Category:Python 作者:刘耀 博客:www.liuyao.me 一. ...
- Python笔记——类定义
Python笔记——类定义 一.类定义: class <类名>: <语句> 类实例化后,可以使用其属性,实际上,创建一个类之后,可以通过类名访问其属性 如果直接使用类名修改其属 ...
- 13.python笔记之pyyaml模块
Date:2016-03-25 Title:13.Python笔记之Pyymal模块使用 Tags:Python Category:Python 博客地址:www.liuyao.me 作者:刘耀 YA ...
- 8.python笔记之面向对象基础
title: 8.Python笔记之面向对象基础 date: 2016-02-21 15:10:35 tags: Python categories: Python --- 面向对象思维导图 (来自1 ...
- python笔记 - day8
python笔记 - day8 参考: http://www.cnblogs.com/wupeiqi/p/4766801.html http://www.cnblogs.com/wupeiqi/art ...
- python笔记 - day7-1 之面向对象编程
python笔记 - day7-1 之面向对象编程 什么时候用面向对象: 多个函数的参数相同: 当某一些函数具有相同参数时,可以使用面向对象的方式,将参数值一次性的封装到对象,以后去对象中取值即可: ...
- python笔记 - day7
python笔记 - day7 参考: http://www.cnblogs.com/wupeiqi/articles/5501365.html 面向对象,初级篇: http://www.cnblog ...
随机推荐
- 第二次作业-git的基本操作
作业的要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2097 一.修改用户名和邮箱地址: (1)配置用户名命令:$git ...
- Android中的task和stack
今天在重新理了一遍intent的过程中发现task是一个神奇的东西,而它又和stack有着很深的联系.task顾名思义是一个任务,但是这个任务可不一定只是来自一个app,比如我用微信来发一张图片,那么 ...
- 【做题】agc006e - Rotate 3x3——分析&思维
原文链接 https://www.cnblogs.com/cly-none/p/9800105.html 题意:给出一个三行\(n\)列的矩阵.问它能否由满足\(a_{ij} = 3(j-1) + i ...
- visio连接线设置
以下画图是在新建空白模式的 默认的连线,如下图, 通过设置设计模式,可以把直角线编程直的线段, 设置如下图, 效果,如下图, 如果想在上面的图的线加箭头,可以一条一条加,但是,但是效率太低,我们可以通 ...
- 读写方式 r , r+ , w , w+ , a , a+
r只读,r+读写,不创建:r+:可读可写,若文件不存在,报错 w如果文件已经存在,则不替换: w 就是打开文件,文件如果不存在,就会新建一个文件: w+: 可读可写,若文件不存在,创建 信息来源:ht ...
- scala模式匹配及样本类
样本类 1.带有case关键字的类被称为样本类: 例如:abstract class Expr case class Var(name: String) extends Expr case class ...
- EF Core
一个事务中 先在数据库查出一条数据进行修改 然后在进行查询 他会直接在内存中找到这条数据 不会再数据库查询了 EF Core的 linq语句中可以使用C#方法或函数 在EF6或 ...
- Vnpy二次开发应用所需图标
在针对Vnpy二次开发时,很多窗口中需要使用到“小图标” 给大家分享一个UI的专业图标网,上面资源齐全. https://www.iconfont.cn/collections?personal=1
- SpringMVC使用Swagger
Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务.总体目标是使客户端和文件系统作为服务器以同样的速度来更新.文件的方法,参数和模型紧密集成到服 ...
- WCF传输过大的数据导致失败的解决办法
WCF传输过大的数据导致失败的解决办法 WCF服务默认是不配置数据传输的限制大小的,那么默认的大小好像是65535B,这才65KB左右,如果希望传输更大一些的数据呢,就需要手动指定一下缓冲区的大小 ...