Python学习进阶之薄弱点总结


'''
1.实现用户传入一个普通字符串,
返回字符串的md5加密结果的函数
'''

# import hashlib
#
# def M(str):
#     m = hashlib.md5()
#     m.update(str.encode('utf8'))
#     return m.hexdigest()
#
# s = M('stoll')
# print(s)

#函数对象的四大功能

#1. 引用(和变量一样)
# x = "hello nick"
# y = x
# def func():
#     print('from func')
# f = func
# print(func) #打印的是函数的内存地址

#2. 当做参数传给一个函数 (和变量一样)
# len(x)
# def foo(m):
#     m()
# foo(func)

#3. 当做函数的返回值
# def foo(x):
#     return x
#
# res = foo(func)
# print(res)
# res()

#4. 可以当做容器类型的元素
# l = [x]
#
# function_list = [func]
# function_list[0]()


'''
return和yield关键字的区别
相同点
功能都是返回程序执行结果

区别
yield返回执行结果并不中断程序执行,
return在返回执行结果的同时中断程序执行。
'''


'''
模块搜索的顺序

1. 先从内存中找
2. 内置的模块
3. 环境变量sys.path中找
'''

'''
包中的__init__文件有以下作用:
    1.标识该文件是Package
    2.模糊导入中的*中的模块是由__all__来定义的,
    定义__all__用来模糊导入
'''


"""
1. 使用while循环实现for循环底层原理
# 提示:使用下述代码可以捕捉异常

try:
  # 逻辑代码
except StopIterationError:
  break
"""
# 1. 首先使用iter把lt变成迭代器对象;对于文件也要使用iter方法吧文件再一次iter下
# 2. 然后使用next方法进行迭代取值
# 3. 判断StopIteration异常,遇到异常终止

# lt = [2,2,3,5]  # 对该列表进行循环取值
# lt_iter = lt.__iter__() # 把列表(可迭代对象)变成迭代器对象
# while 1: # 只要是true,就执行
#     try:
#         print(lt_iter.__next__())
#     except StopIteration: # 遇到异常就抛出,为什么会抛异常,因为while会一直循环,但是迭代器对象只能遇到执行4个__next__,第五个没有了,就会遇到异常
#         break


lt=[1,2,3,4,5,5]
lt_iter = lt.__iter__()
while 2:
   try:
       print(lt_iter.__next__())
   except StopIteration:
       break

"""
2. 阅读需求,编写代码:
    1. 规定使用filter()内置函数和匿名函数
    2. 将`names = ['Nick', 'Sean_sb', 'Tank_sb', 'Jason_sb']`中
    留下以sb结尾的名字
"""
# names = ['Nick', 'Sean_sb', 'Tank_sb', 'Jason_sb']

# 结果为:['Sean_sb', 'Tank_sb', 'Jason_sb']

print(list(filter(lambda a: a.endswith('sb'), names)))

# print(list(filter(lambda x: x.startswith('s'.upper()), names)))


"""
3. 阅读需求,编写代码:
    1. 自定义生成器
    2. 该生成器拥有range()函数拥有的功能

  """

def self_range(start, end, step):
    list = [start, end]
    print(start)
    while list[0] < list[1]:
        yield list[0]
        list[0] += step
#
for i in self_range(1, 10, 2):
    print(i)



"""
# 结果为:

for i in self_range(1, 10, 2):
  print(i)  # 1,3,5,7,9

4. 阅读需求,编写代码:
    1. 自定义3*4的numpy数组,
    2. 把第1行和第2列的元素置为0

import numpy as np

# 结果为:

'''
array([[0.        , 0.        , 0.        , 0.        ],
       [0.22721118, 0.        , 0.87410034, 0.85833497],
       [0.40389177, 0.        , 0.42199234, 0.87709706]])
'''

l  = np.empty((3, 4))
arr = l.copy()
arr[:1, :] = 0
arr[:, 1:2] = 0
print(arr)


5. 阅读需求,编写代码:

   1. 对于字符串`Life234234is    beautiful234because234of    persistence`
   2. 请使用re模块 **一行代码** 还原这句话为`Life is beautiful because of persistence`
"""

import re

s = 'Life234234is    beautiful234because234of    persistence'

# 结果为:Life is beautiful because of persistence

l = re.sub('234',' ', s)
print(l)




解压缩

原文地址:https://www.cnblogs.com/michealjy/p/11402674.html