1. 写出Python查找一个变量的顺序 提示:4中作用域的顺序

本地作用域(local) --> 当前作用域被嵌入的本地作用域(enclsing locals) --> 全局/模块作用域(Global) --> 内置作用域(build-in)

2. Python里的拷贝,打印结果并解释。

https://www.cnblogs.com/hukey/p/9812035.html

3. 打印代码的值,并解释其原因。

  1. a = 1
  2.  
  3. def fun(a): # 局部作用域中
  4. a = 2 # a 重新定义为2
  5. return a # 首先在局部作用域中找,找到 a = 2返回
  6.  
  7. print(fun(a)) # 返回 a=2
  8. print(a) # 在本地全局环境中找,找到 a = 1

4. 打印代码的值,并解释其原因。

  1. a = []
  2.  
  3. def fun(a):
  4. a.append(1)
  5. return a
  6.  
  7. print(fun(a)) # a = [] a.append(1) = [1,]
  8. print(a) # a =[] 是可变数据类型

5. L = [x*x for x in range(10)] 和 g = (x*x for x in range(10))的结果分别为:

  1. L = [x * x for x in range(10)]
  2.  
  3. print(L) # list表达式,有多少值都会通过列表显示出来
  4.  
  5. g = (x*x for x in range(10))
  6.  
  7. print(g) # 返回一个生成器,不会打印任何值,需要通过 next 或者 for循环进行遍历
  8.  
  9. 执行结果:
  10.  
  11. [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
  12. <generator object <genexpr> at 0x000002632AA334C0>

6. 将列表生成式中[]改成() 之后数据结构是否改变?请说明原因。

  1. []:列表生成式,返回一个list列表,显示所有元素
  2. (): 返回一个生成器,需要通过 next() for 来遍历结果

7. 创建一个闭包必须满足那些条件:

  1. 1)必须要一个嵌套函数
  2. 2)嵌套函数必须引用外部函数中的变量
  3.  
  4. 提示:装饰器就是一个闭包函数

8. 通过函数化编程实现5的阶乘 提示:在函数中使用递归 例如函数中传入5,计算出5*4*3*2*1的结果

  1. def func(n):
  2. if n == 1:
  3. return n
  4. return n * func(n - 1)
  5.  
  6. print(func(5))

9. 为此函数加装饰器

  1. def log(func):
  2. def wrapper(*args, **kwargs):
  3. res = func(*args, **kwargs)
  4. return res
  5.  
  6. return wrapper
  7.  
  8. @log
  9. def foo():
  10. print('hello foo')
  11.  
  12. foo()

10. 写函数,将字典作为参数传进函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
PS:字典中的value只能是字符串或列表

  1. dic = {"k1": "v1v1", "k2": [11, 22, 33, 44]}
  2.  
  3. def func(dic):
  4. for k, v in dic.items():
  5. if len(v) > 2:
  6. dic[k] = v[:2]
  7. return dic

11. 写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。

  1. l1 = [0, 1, 2, 3, 4, 5, 6, 7]
  2.  
  3. f = l1[1::2]
  4. print(f)
  5.  
  6. def func(*args):
  7. li = args[0]
  8. return li[1::2]
  9.  
  10. print(func(l1))

12. 使用内置函数将 a="1234" 变为 [1, 2, 3, 4]

  1. a = ''
  2.  
  3. l = list(map(int, a))
  4. print(l)

13. 使用内置函数对obj = [25, 9, -23, 9, -11]按绝对值大小排序。

  1. obj = [25, 9, -23, 9, -11]
  2.  
  3. print(sorted(obj, key=abs))

14.
1)提供2017-11-1 2017-11-30 打印出他们之间的日期

  1. import time
  2.  
  3. start_time = time.mktime(time.strptime('2017-11-1', '%Y-%m-%d'))
  4. end_time = time.mktime(time.strptime('2017-11-30', '%Y-%m-%d'))
  5.  
  6. while end_time >= start_time:
  7. print(time.strftime('%Y-%m-%d', time.localtime(start_time)))
  8. start_time += 86400.00

2)打印出 2017-11-1 2017-11-30的之间日期,并打印出各自对应的星期。

  1. import time
  2.  
  3. start_time = time.mktime(time.strptime('2017-11-1', '%Y-%m-%d'))
  4. end_time = time.mktime(time.strptime('2017-11-30', '%Y-%m-%d'))
  5.  
  6. while end_time >= start_time:
  7. w_dic = {0: '星期一', 1: '星期二', 2: '星期三', 3: '星期四', 4: '星期五', 5: '星期六', 6: '星期日'}
  8. print(time.strftime('%Y-%m-%d', time.localtime(start_time)), w_dic[time.localtime(start_time).tm_wday])
  9. start_time += 86400.00

15. 使用生成器编写foo函数,调用该函数foo(21)产生如下结果(斐波那契数列),1,1,2,3,5,8,13,21

  1. def foo(n):
  2. a, b = 0, 1
  3. while b < n:
  4. yield b
  5. a, b = b, a+b
  6.  
  7. f = foo(21)

16. 读取文件a.txt,匹配文中所有ip地址,将所有ip地址加入到一个列表中,打印该列表。

  1. import re
  2. with open('ip.txt') as f:
  3. i_list = []
  4. for line in f:
  5. ip_list = re.findall(r'((([01]{0,1}\d{0,1}\d|2[0-4]\d|25[0-5])\.){3}([01]{0,1}\d{0,1}\d|2[0-4]\d|25[0-5]))',
  6. line)
  7. for ip in ip_list:
  8. i_list.append(ip[0])
  9.  
  10. print(i_list)

17. s = '123.33sdhf3424.34fdg323.324',计算字符串中所有数字的和

  1. import re
  2.  
  3. s = '123.33sdhf3424.34fdg323.324'
  4.  
  5. r = re.findall("\d*\.\d*", s)
  6.  
  7. n = 0
  8. for num in r:
  9. n += float(num)
  10.  
  11. print(n)

18. 正则替换:

1.将字符串中所有的数字换为大写字母A, 结果为 aakkAdddAkkA
result=aakk123ddd55kk66

  1. import re
  2. result='aakk123ddd55kk66'
  3. r = re.sub("\d+", 'A', result) # re.sub(匹配到的正则,'替换的内容', '需要被替换的内容')
  4. print(r)

2.将字符串的前4位数字转换为A

  1. import re
  2. result='aakk123ddd55kk66'
  3. r = re.sub("\d", 'A', result, 4) # re.sub(匹配到的正则,'替换的内容', '需要被替换的内容')
  4. print(r)

19. 利用random模块随机生成四位验证码,包括字母和数字

  1. import random
  2.  
  3. code = ''
  4. for i in range(4):
  5. ran_int = random.randint(1, 9)
  6. ran_str = chr(random.randint(65, 90))
  7. n = random.choice([str(ran_int), ran_str])
  8. code = ''.join([code, n])
  9.  
  10. print(code)

20. 如下,每个小字典的name对应股票名字,shares对应多少股,price对应股票的价格,用filter过滤出,单价大于100的股票有哪些

  1. portfolio = [
  2. {'name': 'IBM', 'shares': 100, 'price': 91.1},
  3. {'name': 'AAPL', 'shares': 50, 'price': 543.22},
  4. {'name': 'FB', 'shares': 200, 'price': 21.09},
  5. {'name': 'HPQ', 'shares': 35, 'price': 31.75},
  6. {'name': 'YHOO', 'shares': 45, 'price': 16.35},
  7. {'name': 'ACME', 'shares': 75, 'price': 115.65}
  8. ]
  9.  
  10. f = filter(lambda x: x['price']> 100, portfolio)
  11. print(list(f))

21. 怎么理解迭代器和生成器?生成器有什么特点?

  1. 可迭代的:
  2. 必须包含 __iter__ 方法
  3.  
  4. 迭代器:
  5. 必须要有 __iter__ __next__ 方法
  6.  
  7. 迭代器一定是可迭代的,可迭代的不一定是迭代器
  8.  
  9. 生成器:
  10.  
  11. 生成器是一种特殊的迭代器,生成器自动实现了“迭代器协议”(即__iter____next__方法),不需要在手动实现这两方法
  12. 生成器在迭代的过程中可以改变当前迭代值,而修改普通迭代器的当前迭代值往往会发生异常
  13. 具有yield关键字的函数都是生成器

22. 函数的形参有哪几种方式,各自在什么情况下使用以及存放顺序?

  1. 位置参数:func(a) # 任何类型
  2. 默认参数:func(a=1) # 不传参数时,使用默认值
  3. 可变参数:func(*args) # 传入list、tuple 类型
  4. 关键字参数:func(**kwargs) # 传入字典类型
  5.  
  6. func(a, b=1, *args, **kwargs)

23. 如下输出以下函数的执行结果

  1. def foo(a1, args = []): # 设置参数时,默认参数不能为可变数据类型
  2. print("args before = %s" % (args))
  3. args.insert(0, 10)
  4. args.insert(0, 99999)
  5. print("args = %s " % (args))
  6.  
  7. def main():
  8. foo('a')
  9. foo('b')
  10.  
  11. if __name__ == "__main__":
  12. main()

24. 实现9*9乘法口诀表

  1. for i in range(1, 10):
  2. for j in range(1, i+1):
  3. print('{}x{}={}\t'.format(j, i, i*j), end='')
  4. print()

[ python ] 练习作业 - 3的更多相关文章

  1. python综合作业要求

    要求: 1.课程成绩数据(学号尾数为0,1同学完成) 至少要完成内容:分析每年不同班级平均成绩情况.不同年份总体平均成绩情况.不同性别学生成绩情况,并用一定图表展示. 2.集美大学各省录取分数数据(学 ...

  2. python 每周作业

    day2:python的简介与认识day2:# 1.写一个登录程序# username# passwd# 让用户输入账号和密码,输入用户和密码输入正确的话# 提示你 xxx,欢迎登录,今天的日期是xx ...

  3. 短篇文档兼职看过来 python 课后作业 assignment project

    文档兼职 开题报告 读后感 课后作业 等 代写 编程,Java ,Python,R,等语言的,国内外课程作业指导,写作. 有经验,有作品,成交快,放心! 可联系 QQ 550987425

  4. python基础作业1

    目录 附加练习题(提示:一步步拆解) 1.想办法打印出jason 2.想办法打印出大宝贝 3.想办法打印出run 4.获取用户输入并打印成下列格式 5 根据用户输入内容打印其权限 6 编写用户登录程序 ...

  5. python之作业--------购物车优化

    Read Me:继上次简单购物车的实现,有再一次的升级优化了下,现实现以下几个功能: 1.有客户操作和商家操作,实现,客户可以买东西,当金额不足提醒,最后按q退出,打印购物车列表 2.商家可以添加操作 ...

  6. Python之作业购物车

    作业之购物车优化 购物车优化要求如下: 用户入口: 启动程序后,输入用户名密码后,如果是第一次登录,让用户输入工资,然后打印商品列表 允许用户根据商品编号购买商品 用户选择商品后,检测余额是否够,够就 ...

  7. [ python ] FTP作业进阶

    作业:开发一个支持多用户在线的FTP程序 要求: 用户加密认证 允许同时多用户登录 每个用户有自己的家目录 ,且只能访问自己的家目录 对用户进行磁盘配额,每个用户的可用空间不同 允许用户在ftp se ...

  8. Python爬虫作业

    题目如下:   请分析作业页面(https://edu.cnblogs.com/campus/hbu/Python2018Fall/homework/2420),    爬取已提交作业信息,并生成已提 ...

  9. python习题作业合集(持续更新……)

    作业: 1.简述位,字节关系 2.请写出“天才”分别用utf-8和gbk编码所占位数 3.如果有一个变量num = 14,请使用int的方法,得到改变量最少可以用多少个二进制位表示 4.写代码,有如下 ...

随机推荐

  1. [poi2011]bzoj 2277 —— strongbox·[洛谷3518]

    ·问题描述· 有一个密码箱,0到n-1中的某些数是它的密码.且满足:如果a和b都是它的密码,那么(a+b)%n也是它的密码.某人试了k次密码,前k-1次都失败了,最后一次成功. 问:该密码箱最多有多少 ...

  2. Linux必知必会——od命令

    1.功能 od命令用于将指定文件内容以八进制.十进制.十六进制.浮点格式或ASCII编码字符方式显示,通常用于显示或查看文件中不能直接显示在终端的字符.od命令系统默认的显示方式是八进制,名称源于Oc ...

  3. 【原创】【目录】实现rich editor(富文本编辑器)教程,深入理解selectiona/range操作与浏览器差异

    日常工作中,接触富文本编辑的次数还是很多,特发此教程,希望可以改变富文本编辑的技术门槛较高的现状,解决这部分的坑. 前提准备,兼容获取range,统一回车行为,前期准备工作 了解document.ex ...

  4. requests、BeautifulSoup、自动登陆示例

    requests Python标准库中提供了:urllib.urllib2.httplib等模块以供Http请求,但是,它的 API 太渣了.它是为另一个时代.另一个互联网所创建的.它需要巨量的工作, ...

  5. jsp 的 7 个动作指令

    动作指令与编译指令不同,编译指令是通知 Servlet 引擎的处理消息,而动作指令只是运行时的动作.编译指令在将 JSP 编译成 Servlet 时起作用:而处理指令通常可替换成 JSP 脚本,它只是 ...

  6. discuz安装,uc_server目录下乱码问题:

    uc_server是gbk格式的情况,放服务器上,国外服务器环境可能会乱码百度检索的语句很重要,一开始,找vim编辑文本格式的问题,后来想批量解决服务器上文件格式~~~后百度:有没有其他人安装uc_s ...

  7. MyEclipse解决Launching xx on MyEclipse Tomcat has encountered a problem

    单击工具栏Run,选中Run Configurations... 将MyEclipse Server Application里面的工程右击选择Delete就好了.

  8. [LeetCode] 30. Substring with Concatenation of All Words ☆☆☆

    You are given a string, s, and a list of words, words, that are all of the same length. Find all sta ...

  9. 【Foreign】Melancholy [线段树]

    Melancholy Time Limit: 10 Sec  Memory Limit: 256 MB Description DX3906星系,Melancholy星上,我在勘测这里的地质情况. 我 ...

  10. 【NOIP2013提高组T3】加分二叉树

    题目描述 设一个n个节点的二叉树tree的中序遍历为(1,2,3,…,n),其中数字1,2,3,…,n为节点编号.每个节点都有一个分数(均为正整数),记第i个节点的分数为di,tree及它的每个子树都 ...