![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
Linux day01 计算机硬件知识整理 作业要求:整理博客,内容如下 编程语言的作用及与操作系统和硬件的关系 应用程序-》操作系统-》硬件 cpu-》内存-》磁盘 cpu与寄存器,内核态与用户态及如何切换 存储器系列,L1缓存,L2缓存,内存(RAM),EEPROM和闪存,CMOS与BIOS电池 磁盘结构,平均寻道时间,平均延迟时间,虚拟内存与MMU 磁带 设备驱动与控制器 总线与南桥和北桥 操作系统的启动流程 应用程序的启动流程 day02 作业要求一:整理操作系统博客 为何要有操作系统 操作系统的位置 操作系统的功能 操作系统的发展 多道技术 作业要求二:整理网络基础博客 什么是互联网协议及为何要有互联网协议 osi五层模型 用户上网流程 作业要求三:安装linux操作系统 安装linux操作系统 预习linux操作系统命令 day03 开启Linux操作系统,要求以root用户登录GNOME图形界面,语言支持选择为汉语 使用快捷键切换到虚拟终端2,使用普通用户身份登录,查看系统提示符 使用命令退出虚拟终端2上登录的用户 使用快捷键切换到虚拟终端5,使用管理员身份登录,查看系统提示符 使用命令退出虚拟终端5上登录的用户 切回图形界面,右单击桌面打开终端,输入关闭系统的命令 查看哪些用户在系统上工作 修改当前时间为2018年8月26号11:28 查看2015年10月份日历 使用两种方法查看ls命令的使用说明 清除屏幕 使用“useradd tom”命令新建tom用户,为tom用户设置密码“123” 切换当前用户为tom 查看当前登陆Linux系统所使用的用户名 开启Linux操作系统,要求以root用户登录GNOME图形界面 右击桌面打开终端,使用“useradd lucy”命令创建lucy用户 使用鼠标点击的方法进入根目录 点击进入root用户的家目录 点击进入lucy用户的家目录 点击进入用来存放常用的可执行文件的目录 点击进入用来存放系统的可执行文件的目录 点击进入设备文件目录 点击进入配置文件目录 创建目录wg 使用绝对路径的方法在wg目录下新建文件a.txt 进入wg目录 使用相对路径的方法在当前目录下新建wg01目录和b.txt文件 以长列表格式列出当前目录下的内容 删除空目录wg01 进入上一级工作目录 强制删除非空目录wg 复制/etc/passwd到当前目录,名为file1 不停的以只读的方式查看file1文件的内容 查看file1文件的前3行内容 查看file1文件的后2行内容 以百分比的方式分页查看file1文件的内容 以上下翻页的方法分页查看file1文件的内容 创建如下目录结构 sh-3.2# tree /FtpServer/ /FtpServer/ ├── bin │ ├── register.py │ └── start.py ├── conf │ └── settings.py ├── core │ └── server.py ├── db │ └── user.db ├── lib │ └── common.py └── log └── access.log 1:切换到路径/tmp下,以追加的方式往start.py内写入内容 2:查看当前所在的路径 3:切换到log目录下,新建目录access,然后把access.log移动到该目录下。 4:切换到core目录下,然后在该路径下新建auth.py文件 5. 开启两个终端,一个终端往access.log文件中追加内容,然后在另外一个终端动态查看access.log新增的内容。 6. 关闭上述的终端,然后以覆盖的方式往access.log中写入内容 7: 删除/FtpServer目录 day04 作业一: 1) 新建用户natasha,uid为1000,gid为555,备注信息为“master” 2) 修改natasha用户的家目录为/Natasha 3) 查看用户信息配置文件的最后一行 4) 为natasha用户设置密码“123” 5) 查看用户密码配置文件的最后一行 6) 将natasha用户账户锁定 7) 将natasha用户账户解锁 8) 新建组police,gid为999 9) 查看组配置文件的最后一行 10) 将natasha用户加入police组 11) 修改police组的组名为jingcha 12) 删除natasha用户,连家目录和邮箱一起删除 13) 删除jingcha组 作业二: 1) 在用户的主目录下创建目录test,进入test创建空文件file1 2) 以长格式形式显示文件信息,注意文件的权限和所属用户和组 3) 为文件file1设置权限,使其他用户可以对此文件进行写操作。 4) 查看设置结果, 5) 取消同组用户对文件file1的读取权限,并查看设置结果。 6) 用数字表示法为文件file设置权限,所有者可读、可写、可执行,所属组用户和其他用户只具有读和执行的权限。设置完成后查看设置结果。 7) 用数字形式更改文件file1的权限,使所有者只能读取此文件。其他任何用户都没有权限。查看设置结果。 8) 回到上层目录,查看test的权限 9) 为其他用户添加对此目录的写权限 作业三: 以操作文件的方式,新建一个用户alex 作业四: 1) 新建目录/test/dir,属主为tom,数组为group1,/test目录的权限为777 2) 新建用户jack,切换到jack用户下,验证jack用户对dir目录的rwx权限(开启另外一个终端,依次修改dir目录的others权限) 3)将jack加入group1组,验证jack用户对dir目录的rwx权限(开启另外一个终端,依次修改dir目录的group权限) 4)切换到tom用户,验证tom用户对dir目录的rwx权限(开启另外一个终端,依次修改dir目录的user权限) 5)在dir目录内新建文件tom.txt,属主为tom,属组为group1,/test目录的权限为777 6)新建用户rose,切换到rose用户下,验证rose用户对tom.txt的rwx权限(开启另外一个终端,依次修改tom.txt的others权限来配合验证过程) 7)将rose加入group1组,在rose用户下,验证rose用户对tom.txt的rwx权限(开启另外一个终端,依次修改tom.txt的group1权限来配合验证过程) 8)切换到tom用户,验证tom用户对tom.txt的rwx权限(开启另外一个终端,依次修改tom.txt的user权限来配合验证过程) day05 作业一: 1) 将用户信息数据库文件和组信息数据库文件纵向合并为一个文件/1.txt(覆盖) 2) 将用户信息数据库文件和用户密码数据库文件纵向合并为一个文件/2.txt(追加) 3) 将/1.txt、/2.txt两个文件打包为/1.tar 4) 使用gzip命令压缩1.txt文件名为1.txt.gz 5) 解压缩1.txt.gz 6) 使用bzip2压缩1.txt压缩后文件名为1.txt.bz2 7) 解压缩1.txt.bz2 8) 解包1.tar,解包后文件存放到/tmp目录下 9) 使用tar命令打包并且压缩/1.txt、/2.txt,得到的文件名为1.tar.gz 10) 解包1.tar.gz,解包后文件存放到/tmp目录下 作业二: 1) 使用vi编辑器编辑文件/1.txt进入编辑模式写入内容“hello world” 2) 进入命令行模式复制改行内容,在下方粘贴80行 3) 快速移动光标到文件的最后一行 4) 快速移动光标到当前屏幕的中间一行 5) 快速移动光标到文件的第五行 6) 在下方插入新的一行内容“welcome to beijing” 7) 删除刚插入的一行 8) 撤销上一步的操作 9) 进入扩展模式,执行文件的保存退出操作 作业三: 1) 开启Linux系统前添加一块大小为20G的SCSI硬盘 2) 开启系统,右击桌面,打开终端 3) 为新加的硬盘分区,一个主分区大小为10G,剩余空间给扩展分区,在扩展分区上划分两个逻辑分区,大小各5G 4) 格式化主分区为ext3系统 5) 格式化两个逻辑分区为ext4系统 作业四: 1)建立/etc/passwd的软连接文件,放在/tmp目录下 2)建立/etc/passwd的硬链接文件,放在/boot下,如果不成功,思考是为什么 3)查看刚刚建立的软连接,源文件与目标文件的inode 4)查看刚刚建立的硬连接,源文件与目标文件的inode day06 作业一: 1) 开启Linux系统前添加一块大小为15G的SCSI硬盘 2) 开启系统,右击桌面,打开终端 3) 为新加的硬盘分区,一个主分区大小为5G,剩余空间给扩展分区,在扩展分区上划分1个逻辑分区,大小为5G 4) 格式化主分区为ext3系统 5) 将逻辑分区设置为交换分区 6) 启用上一步的交换分区 7) 查看交换分区的状态 作业二:free命令查看内存 整理buffer与cache的作用 计算真实的内存使用率 作业三:dd命令测试硬盘速度 作业四:查找一个名为init的进程,并且将其强制杀死 作业五:rpm命令 1) 挂载光盘文件到/media目录 2) 进去/media目录下的Packages目录 3) 查看系统已安装的所有rpm包 4) 查看系统是否安装dhcp软件包 5) 安装dhcp软件包 6) 查看dhcp软件包的信息 7) 查看dhcp软件包中所包含的所有文件 8) 查看/bin/ls文件是由哪个软件包产生 9) 卸载dhcp软件包 作业六:yum命令 1) 自定义yum仓库:createrepo 2) 自定义repo文件 3) 使用yum命令安装httpd软件包 4) 卸载httpd软件包:yum –y remove 软件名 5) 使用yum安装组件'KDE 桌面':yum –y groupinstall 组件名 6) 掌握使用yum删除组件‘KDE 桌面’:yum –y groupremove 组件名 7) 掌握清除yum缓存:yum clean all 8) 使用yum查找软件包:yum search 软件包名 作业六:源码安装python day07 作业一:nginx服务 二进制安装nginx包 作为web服务修改配置文件 让配置生效,验证配置 作业二:nfs服务 二进制安装nfs 作为共享存储挂载在三台web的网站根目录下 实现,在任意一台web上修改的结果,其余两台都可以看到 作业三:nginx反向代理三台web 实现基于轮询的方式调度三台web,并验证结果 实现基于权重的方式调度三台web,并验证结果 实现基于hash的方式调用三台web,并验证结果 作业四:nginx反向代理+三台web+nfs共享存储实现集群配置 作业五:源码安装nginx,并按照作业一描述的那样去测试使用 day08 我再找下 day09 作业一:完成作业未做完的集群架构 作业二:临时配置网络(ip,网关,dns)+永久配置 作业三:为集群内的机器设定主机名,利用/etc/hosts文件来解析自己的集群中所有的主机名,相应的,集群的配置应该改成使用主机名的方式 作业四:ssh登录,scp上传、下载,ssh秘钥登录,修改ssh server端的端口为8888然后进行登录和scp测试 作业五:整理bash命令类型,验证寻找一个命令的优先级 作业六:通配符实验 day10 作业一:整理正则表达式博客 作业二:grep作业(正则表达式及字符处理) 目标文件/etc/passwd,使用grep命令或egrep 1.显示出所有含有root的行: 2.输出任何包含bash的所有行,还要输出紧接着这行的上下各两行的内容: 3. 显示出有多少行含有nologin。 4.显示出那些行含有root,并将行号一块输出。 5.显示出文件中 6.新建用户 abominable abominate anomie atomize 编写正则表达式,将他们匹配出来 7.建四个用户 Alex213sb Wpq2222b yH438PIG egon666 egon 过滤出用户名组成是字母+数字+字母的行 8.显示出/etc目录下所有包含root的文件名 9. 过滤掉/etc/ssh/sshd_config内所有注释和所有空行 作业三:Sed作业:以/etc/passwd文件为模板 1,删除文件每行的第一个字符。 2,删除文件每行的第二个字符。 3,删除文件每行的最后一个字符。 4,删除文件每行的倒数第二个字符。 5,删除文件每行的第二个单词。 6,删除文件每行的倒数第二个单词。 7,删除文件每行的最后一个单词。 8,交换每行的第一个字符和第二个字符。 9,交换每行的第一个字符和第二个单词。 10,交换每行的第一个单词和最后一个单词。 11,删除一个文件中所有的数字。 12,删除每行开头的所有空格。 13,用制表符替换文件中出现的所有空格。 14,把所有大写字母用括号()括起来。 sed -r 's/[A-Z]/(&)/g' /etc/passwd 15,打印每行3次。 16,只显示每行的第一个单词。 17,打印每行的第一个单词和第三个单词。 18,用命令获取格式为 mm/yy/dd 的日期格式,结合管道,将其换成 mm;yy;dd格式 day11 作业一:整理博客,内容包含awk、变量、运算符、if多分支 作业二:awk文本处理 打印uid在30~40范围内的用户名。 打印第5-10行的行号和用户名 打印奇数行 打印偶数行 打印字段数大于5的行 打印UID不等于GID的用户名 打印没有指定shell的用户 作业三:shell脚本编写 自动部署、初始配置、并启动nginx反向代理服务 自动部署、初始配置、并启动三台web 监控脚本:监控每台机器的内存使用率>70%,则输出报警信息 (思路提示: [root@www ~]# ((80>70)) [root@www ~]# echo $? 0 ) Linux 完结 开发脚本自动部署及监控 1.编写脚本自动部署反向代理、web、nfs; 要求: I、部署nginx反向代理三个web服务,调度算法使用加权轮询; II、所有web服务使用共享存储nfs,保证所有web都对其有读写权限,保证数据一致性; 2.编写监控脚本,监控集群内所有服务存活状态,内存、磁盘剩余率检测,异常则发送报警邮件 3.编写计划任务,定时运行监控脚本,完成监控操作 python 3月31日 开始 day13 for while 循环 day14 字符串 列表 字典 购物车作业 day15 字典详解 一次break跳出多层循环 打印三级菜单,省 市 县 可随时退出或跳出上一级 菜单字典 menu = { '北京':{ '海淀':{ '五道口':{ 'soho':{}, '网易':{}, 'google':{} }, '中关村':{ '爱奇艺':{}, '汽车之家':{}, 'youku':{}, }, '上地':{ '百度':{}, }, }, '昌平':{ '沙河':{ '老男孩':{}, '北航':{}, }, '天通苑':{}, '回龙观':{}, }, '朝阳':{}, '东城':{}, }, '上海':{ '闵行':{ "人民广场":{ '炸鸡店':{} } }, '闸北':{ '火车战':{ '携程':{} } }, '浦东':{}, }, '山东':{}, } day16 运算符 二进制运算 购物车 用户输入工资,显示商品列表,选择要购买的商品 当用户买不起是提示余额不足,并显示还差多少钱 当用户退出时,打印购物车列表,物品,单价,数量,总价 并显示余额 day17 元组 集合 字符编码 day18 字符编码 字符串操作 列表操作 day19 文件操作 增删改查haproxy.conf配置文件 1.查询输入:www.oldboy1.com 2.删除输入:{'backend': 'www.oldboy2.org','record':{'server': ["1.1.1.1","2.2.2.2"],'weight': 20,'maxconn': 30}} 3.增加输入:{'backend': 'www.oldboy2.org','record':{'server': ["1.1.1.1","2.2.2.2"],'weight': 20,'maxconn': 30}} 4.修改输入:{'backend': 'www.oldboy2.org','record':{'server': ["1.1.1.1","2.2.2.2"],'weight': 20,'maxconn': 30}} 修改之后:{'backend': 'www.oldboy2.org','record':{'server': ["1.1.1.1","2.2.2.2"],'weight': 20,'maxconn': 30}} global log 127.0.0.1 local2 daemon maxconn 256 log 127.0.0.1 local2 info defaults log global mode http timeout connect 5000ms timeout client 50000ms timeout server 50000ms option dontlognull listen stats :8888 stats enable stats uri /admin stats auth admin:1234 frontend oldboy.org bind 0.0.0.0:80 option httplog option httpclose option forwardfor log global acl www hdr_reg(host) -i www.oldboy.org use_backend www.oldboy.org if www backend www.oldboy1.org server 100.1.7.9 weight 20 maxconn 1111111 server 100.1.7.9 weight 20 maxconn 0 server 10.10.0.10 10.10.0.10 weight 9999 maxconn 33 server 10.10.10.1 10.10.10.1 weight 22 maxconn 2000 server 2.2.2.4 2.2.2.4 weight 20 maxconn 3000 backend www.oldboy2.org server 1.1.1.1 2.2.2.2 weight 20 maxconn 30 server 10.10.0.10 10.10.0.10 weight 9999 maxconn 33 server 10.10.10.1 10.10.10.1 weight 22 maxconn 2000 backend www.oldboy20.org server 10.10.0.10 10.10.0.10 weight 9999 maxconn 33 一阶段考试 1、执行 Python 脚本的两种方式 2、简述位、字节的关系 3、简述 ascii、unicode、utf-8、gbk 的关系 4、请写出 “李杰” 分别用 utf-8 和 gbk 编码所占的位数 5、Pyhton 单行注释和多行注释分别用什么? 6、声明变量注意事项有那些? 8、如何查看变量在内存中的地址? 9、执行 Python 程序时,自动生成的 .pyc 文件的作用是什么? 10、写代码 a.实现用户输入用户名和密码,当用户名为 seven 且 密码为 123 时,显示登陆成功,否则登陆失败! b.实现用户输入用户名和密码,当用户名为 seven 且 密码为 123 时,显示登陆成功,否则登陆失败,失败时允许重复输入三次 c.实现用户输入用户名和密码,当用户名为 seven 或 alex 且 密码为 123 时,显示登陆成功,否则登陆失败,失败时允许重复输入三次 11、写代码 a. 使用while循环实现输出2-3+4-5+6...+100 的和 b. 使用for循环和range实现输出 1-2+3-4+5-6...+99 的和 c. 使用 while 循环实现输出 1,2,3,4,5, 7,8,9, 11,12 d. 使用 while 循环实现输出 1-100 内的所有奇数 e. 使用 while 循环实现输出 1-100 内的所有偶数 12、分别书写数字 5,10,32,7 的二进制表示 13、简述对象和 类的关系(可用比喻的手法) 14、现有如下两个变量,请简述 n1 和 n2 是什么关系? n1 = 123 n2 = 123 15、现有如下两个变量,请简述 n1 和 n2 是什么关系? n1 = 123456 n2 = 123456 16、现有如下两个变量,请简述 n1 和 n2 是什么关系? n1 = 123456 n2 = n1 17、如有一下变量 n1 = 5,请使用 int 的提供的方法,得到该变量最少可以用多少个二进制位表示? 18、布尔值分别有什么? 19、阅读代码,请写出执行结果 a = "alex" b = a.capitalize() print(a) print(b) 请写出输出结果: 20、写代码,有如下变量,请按照要求实现每个功能 name = " aleX" a. 移除 name 变量对应的值两边的空格,并输入移除有的内容 b. 判断 name 变量对应的值是否以 "al" 开头,并输出结果 c. 判断 name 变量对应的值是否以 "X" 结尾,并输出结果 d. 将 name 变量对应的值中的 “l” 替换为 “p”,并输出结果 e. 将 name 变量对应的值根据 “l” 分割,并输出结果。 f. 请问,上一题 e 分割之后得到值是什么类型? g. 将 name 变量对应的值变大写,并输出结果 h. 将 name 变量对应的值变小写,并输出结果 i. 请输出 name 变量对应的值的第 2 个字符? j. 请输出 name 变量对应的值的前 3 个字符? k. 请输出 name 变量对应的值的后 2 个字符? l. 请输出 name 变量对应的值中 “e” 所在索引位置? 21、字符串是否可迭代?如可以请使用 for 循环每一个元素? 22、请用代码实现:利用下划线将列表的每一个元素拼接成字符串,li = ['alex', 'eric', 'rain'] 22、写代码,有如下列表,按照要求实现每一个功能 li = ['alex', 'eric', 'rain'] a. 计算列表长度并输出 b. 列表中追加元素 “seven”,并输出添加后的列表 c. 请在列表的第 1 个位置插入元素 “Tony”,并输出添加后的列表 d. 请修改列表第 2 个位置的元素为 “Kelly”,并输出修改后的列表 e. 请删除列表中的元素 “eric”,并输出修改后的列表 f. 请删除列表中的第 2 个元素,并输出删除的元素的值和删除元素后的列表 g. 请删除列表中的第 3 个元素,并输出删除元素后的列表 h. 请删除列表中的第 2 至 4 个元素,并输出删除元素后的列表 i. 请将列表所有的元素反转,并输出反转后的列表 j. 请使用 for、len、range 输出列表的索引 k. 请使用 enumrate 输出列表元素和序号(序号从 100 开始) l. 请使用 for 循环输出列表的所有元素 23、写代码,有如下列表,请按照功能要求实现每一个功能 li = ["hello", 'seven', ["mon", ["h", "kelly"], 'all'], 123, 446] a. 请输出 “Kelly” b. 请使用索引找到 'all' 元素并将其修改为 “ALL” 24、写代码,有如下元组,按照要求实现每一个功能 tu = ('alex', 'eric', 'rain') a. 计算元组长度并输出 b. 获取元组的第 2 个元素,并输出 c. 获取元组的第 1-2 个元素,并输出 d. 请使用 for 输出元组的元素 e. 请使用 for、len、range 输出元组的索引 f. 请使用 enumrate 输出元祖元素和序号(序号从 10 开始) 25、有如下变量,请实现要求的功能 tu = ("alex", [11, 22, {"k1": 'v1', "k2": ["age", "name"], "k3": (11,22,33)}, 44]) a. 讲述元祖的特性 b. 请问 tu 变量中的第一个元素 “alex” 是否可被修改? c. 请问 tu 变量中的"k2"对应的值是什么类型?是否可以被修改?如果可以,请在其中添加一个元素 “Seven” d. 请问 tu 变量中的"k3"对应的值是什么类型?是否可以被修改?如果可以,请在其中添加一个元素 “Seven” 26、字典 dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]} a. 请循环输出所有的 key b. 请循环输出所有的 value c. 请循环输出所有的 key 和 value d. 请在字典中添加一个键值对,"k4": "v4",输出添加后的字典 e. 请在修改字典中 “k1” 对应的值为 “alex”,输出修改后的字典 f. 请在 k3 对应的值中追加一个元素 44,输出修改后的字典 g. 请在 k3 对应的值的第 1 个位置插入个元素 18,输出修改后的字典 27、转换 a. 将字符串 s = "alex" 转换成列表 b. 将字符串 s = "alex" 转换成元祖 b. 将列表 li = ["alex", "seven"] 转换成元组 c. 将元祖 tu = ('Alex', "seven") 转换成列表 d. 将列表 li = ["alex", "seven"] 转换成字典且字典的 key 按照 10 开始向后递增 27、转码 n = "老男孩" a. 将字符串转换成 utf-8 编码的字节,并输出,然后将该字节再转换成 utf-8 编码字符串,再输出 a. 将字符串转换成 gbk 编码的字节,并输出,然后将该字节再转换成 gbk 编码字符串,再输出 28、求 1-100 内的所有数的和 29、元素分类 有如下值集合 [11,22,33,44,55,66,77,88,99,90],将所有大于 66 的值保存至字典的第一个 key 中,将小于 66 的值保存至第二个 key 的值中。 即: {'k1': 大于 66 的所有值, 'k2': 小于 66 的所有值} 30、购物车 功能要求: 要求用户输入总资产,例如:2000 显示商品列表,让用户根据序号选择商品,加入购物车 购买,如果商品总额大于总资产,提示账户余额不足,否则,购买成功。 goods = [ {"name": "电脑", "price": 1999}, {"name": "鼠标", "price": 10}, {"name": "游艇", "price": 20}, {"name": "美女", "price": 998}, ] day20 初识函数 返回值 形参和实参 day21 名称空间与作用域 函数嵌套 闭包 day22 装饰器 day23 迭代器 生成器 协程函数 有两个列表,分别存放来老男孩报名学习linux和python课程的学生名字 linux=['钢弹','小壁虎','小虎比','alex','wupeiqi','yuanhao'] python=['dragon','钢弹','zhejiangF4','小虎比'] 问题一:得出既报名linux又报名python的学生列表 问题二:得出只报名linux,而没有报名python的学生列表 问题三:得出只报名python,而没有报名linux的学生列表 shares={ 'IBM':36.6, 'lenovo':27.3, 'huawei':40.3, 'oldboy':3.2, 'ocean':20.1 } 问题一:得出股票价格大于30的股票名字列表 问题二:求出所有股票的总价格 l=[10,2,3,4,5,6,7] 得到一个新列表l1,新列表中每个元素是l中对应每个元素值的平方 过滤出l1中大于40的值,然后求和 day24 面向过程编程 列表解析和生成器表达式 内置函数作业 =====================作业一 #用map来处理字符串列表啊,把列表中所有人都变成sb,比方alex_sb name=['alex','wupeiqi','yuanhao'] #用map来处理下述l,然后用list得到一个新的列表,列表中每个人的名字都是sb结尾 >>> l=[{'name':'alex'},{'name':'y'}] =====================作业二 #用filter来处理,得到股票价格大于20的股票名字 shares={ 'IBM':36.6, 'Lenovo':23.2, 'oldboy':21.2, 'ocean':10.2, } =====================作业三 #如下,每个小字典的name对应股票名字,shares对应多少股,price对应股票的价格 portfolio = [ {'name': 'IBM', 'shares': 100, 'price': 91.1}, {'name': 'AAPL', 'shares': 50, 'price': 543.22}, {'name': 'FB', 'shares': 200, 'price': 21.09}, {'name': 'HPQ', 'shares': 35, 'price': 31.75}, {'name': 'YHOO', 'shares': 45, 'price': 16.35}, {'name': 'ACME', 'shares': 75, 'price': 115.65} ] 1:map来得出一个包含数字的迭代器,数字指的是:购买每支股票的总价格 2:基于1的结果,用reduce来计算,购买这些股票总共花了多少钱 3:用filter过滤出,单价大于100的股票有哪些 day25 内置函数 day26 递归函数 二分法 函数式编程 面向对象编程 初识类和对象 day27 类与对象的名称空间及绑定方法 面向对象开发软件 4.19 苑昊测试题 1、8<<2等于? 2、通过内置函数计算5除以2的余数 3、s=[1,"h",2,"e",[1,2,3],"l",(4,5),"l",{1:"111"},"o"],将s中的5个字符提取出来并拼接成字符串。 4、判断"yuan"是否在[123,(1,"yuan"),{"yuan":"handsome"},"yuanhao"],如何判断以及对应结果? 5、l=[1,2,3] l2=l.insert(3,"hello") print(l2) 执行结果并解释为什么? 6、 a=[1,2,[3,"hello"],{"egon":"aigan"}] b=a[:] a[0]=5 a[2][0]=666 print(a) print(b) #计算结果以及为什么? 7 使用文件读取,找出文件中最长的行的长度(用一行代码解决)? 8 def add(s, x): return s + x def generator(): for i in range(4): yield i base = generator() for n in [1, 11]: base = (add(i, n) for i in base) print list(base) 9 hello.py (gbk方式保存): #coding:GBK print(“老男孩”) 如果用py2,py3下在cmd下运行回报错吗?为什么并提出解决方案? (编码) 10 通过函数化编程实现5的阶乘 11 打印如下图案: * *** ***** ******* ***** *** * 12 def outer(): count = 10 def inner(): count = 20 print(count) inner() print(count) outer() (1)分析运行结果? (2)如何让两个打印都是20 13 输入一个年份,判断是否是闰年? 14 任意输入三个数,判断大小? 15 求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222 ,几个数相加以及a的值由键盘控制。 16 f=open("a") while 1: choice=input("是否显示:[Y/N]:") if choice.upper()=="Y": for i in f: print(i) else: break 请问程序有无bug,怎么解决? 17 def foo(): print('hello foo') return() def bar(): print('hello bar') (1)为这些基础函数加一个装饰器,执行对应函数内容后,将当前时间写入一个文件做一个日志记录。 (2)改成参数装饰器,即可以根据调用时传的参数决定是否记录时间,比如@logger(True) 18 三次登陆锁定:要求一个用户名密码输入密码错误次数超过三次锁定? day28 继承与派生 组合 接口与归一化设计 抽象类 作业一:定义如下类,并最大程度地重用代码(继承,派生:子类重用父类方法,组合,) 老师类 学生类 分数类 课程类 日期类 作业二:预习继承实现的原理,super,多态,封装,http://www.cnblogs.com/linhaifeng/articles/6182264.html day29 新式类与经典类 多态与多态性 封装 1.作业一:实现如图的继承关系,然后验证经典类与新式类在查找一个属性时的搜索顺序 2.作业二:基于多态的概念来实现linux中一切皆问题的概念:文本文件,进程,磁盘都是文件,然后验证多态性 3.作业三:定义老师类,把老师的属性:薪资,隐藏起来,然后针对该属性开放访问接口 苑昊老师有多种癖好,把这种癖好隐藏起来,然后对外提供访问接口 而且以后还会苑昊老师培养很多其他的癖好,对外开放修改接口,可以新增癖好,并且需要保证新增的癖好都是字符串类型,否则无法增加成功。 day30 property staticmethod classmethod day31 反射 attr系列 定制自己的数据类型 整理博客: isinstance,issubclass 反射:getattr,setattr,delattr,hasattr 内置attr:__getattr__,__setattr__,__delattr__ 定制自己的数据类型: 1.继承的方式 2.授权的方式 作业: 基于授权定制自己的列表类型,要求定制的自己的__init__方法, 定制自己的append:只能向列表加入字符串类型的值 定制显示列表中间那个值的属性(提示:property) 其余方法都使用list默认的(提示:__getattr__加反射) day32 slots与迭代器 上下文管理 元类 模块练习 1 小程序:根据用户输入选择可以完成以下功能: 创意文件,如果路径不存在,创建文件夹后再创建文件 能够查看当前路径 在当前目录及其所有子目录下查找文件名包含指定字符串的文件 2 将三次登陆锁定的作业改为:python login.py -u alex -p 123456 输入的形式(-u,-p是固定的,分别代表用户名和密码) 3 层级结构: dir1 ---hello.py dir2 ---main.py 其中,hello.py: def add(x,y): return x+y main.py如何能调用到hello.py中的add函数。 4 显示当前时间三天后是星期几? day33 time模块 random模块 hashilib模块 os模块 sys模块 day34 logging模块 json模块 pickle模块 re模块(正则) 计算器 s = "1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )"