- 写一个生成式能够产生的数据为: 1, 2, 27, 256, 3125,…, 9**9
gen1 = (x ** x for x in range(1, 10))
# print(next(gen1))
print(list(gen1))
- 写一个生成式能够产生1-10中所有半径是偶数的圆的面积
gen1 = (3.14 * x ** 2 for x in range(1, 11) if not x & 1)
print(list(gen1))
- 写一个生成式交换字段的键和值,产生一个新的字典
dict1 = {'a': 1, 'b': 2, 'c': 3}
gen1 = ([dict1[key], key] for key in dict1)
print(dict(gen1))
- 为函数写一个装饰器,在函数执行之后输出 after
def end_after(fn):
def test(*args, **kwargs):
fn(*args, **kwargs)
print('after')
return test
@end_after
def func1():
print('===')
func1()
- 为函数写一个装饰器,把函数的返回值 +100 然后再返回。
def return_100(fn):
def text(*args, **kwargs):
print(fn(*args, **kwargs))
return fn(*args, **kwargs) + 100
return text
@return_100
def func1(x):
return x
print(func1(100))
- 写一个装饰器@tag要求满足如下功能:
@tag
def render(text):
# 执行其他操作
return text
@tag
def render2():
return 'abc'
print(render('Hello')) # 打印出: <p>Hello</p>
print(render2()) # 打印出: <p>abc</p>
=====================================================
def tag(fn):
def text(*args, **kwargs):
return '<p>' + fn(*args, **kwargs) + '</p>'
return text
@tag
def render(text1):
return text1
@tag
def render2():
return 'abc'
print(render('Hello'))
print(render2())
- 写一个装饰器@tag要求满足如下功能(需要使用带参的装饰器,自己先自学正在一下):
@tag(name='p')
def render(text):
# 执行其他操作
return text
@tag(name='div')
def render2():
return 'abc'
print(render('Hello')) # 打印出: <p>Hello</p>
print(render2()) # 打印出: <div>abc</div>
==========================================================
def tag(name):
def mid(func):
def text(*args, **kwargs):
return '<' + name + '>' + func(*args, **kwargs) + '</' + name + '>'
return text
return mid
@tag(name='p')
def render(text1):
return text1
@tag(name='div')
def render2():
return 'abc'
print(render('Hello'))
print(render2())
- 为函数写一个装饰器,根据参数不同做不同操作。
flag为True,则 让原函数执行后返回值加100,并返回。
flag为False,则 让原函数执行后返回值减100,并返回。
def change_value(is_add):
def test1(fn):
def test2(*args, **kwargs):
if is_add:
return fn(*args, **kwargs) + 100
else:
return fn(*args, **kwargs) - 100
return test2
return test1
@change_value(is_add=True)
def func1(x):
return x
print(func1(int(input('输入一个整数:'))))
- 写一个斗地主发牌器
import random
list1 = []
list2 = []
list3 = []
list_after = []
all_list = list(range(1, 14)) * 4
all_list.extend({'小王', '大王'})
random.shuffle(all_list)
n = len(all_list)
for x in range(0, n-3, 3):
list1.append(all_list[x])
list2.append(all_list[x + 1])
list3.append(all_list[x + 2])
list_after.extend(all_list[-1:-4:-1])
print(list1, '\n', list2, '\n', list3, '\n', list_after)