寫乙個裝飾器@tag要求滿足如下功能:
@tag(name=
'p')
defrender
(text)
:# 執行其他操作
return text
@tag(name=
'div'
)def
render2()
:return
'abc'
print
(render(
'hello'))
# 列印出: hello
print
(render2())
# 列印出: abc
def
tag(name:
str)
:def
test
(func)
:def
tag_str
(*args,
**kwargs)
: result = func(
*args,
**kwargs)
return f'<><>'
return tag_str
return test
@tag(name=
'p')
defrender
(text)
:# 執行其他操作
return text
@tag(name=
'div'
)def
render2()
:return
'abc'
print
(render(
'hello'))
print
(render2(
))
為函式寫乙個裝飾器,根據引數不同做不同操作。
flag為 true,則 讓原函式執行後返回值加 100,並返回。
flag為 false,則 讓原函式執行後返回值減 100,並返回。
def
num(flag:
bool):
deftest
(func)
:def
judgment_num
(*args,
**kwargs)
: result = func(
*args,
**kwargs)
iftype
(result)in(
int,
float
,complex):
if flag ==
true
:return result +
100return result -
100return judgment_num
return test
@num(
true
)def
num1()
:return
2@num(
false
)def
num2()
:return
4print
(num1())
print
(num2(
))
為函式寫乙個裝飾器,根據不同的運算子和資料對原函式的返回值進行相應的數值操作
例如:
運算子是+,資料是 100, 就對原函式的返回值進行加100的處理
運算子是-
, 資料是 20,就對原函式的返回值進行減20的處理
運算子是*
, 資料是 3
, 就對原函式的返回值進行乘3的處理
運算子是/
, 資料是 2, 就對原函式的返回值進行除2的處理
其他情況的符號不做處理
def
modify
(operator:
str, number:
(int
,float
,complex))
:def
test
(func)
:def
operating
(*args,
**kwargs)
: result = func(
*args,
**kwargs)
if operator in
('+'
,'-'
,'*'
,'/'):
if operator ==
'+':
return result + number
elif operator ==
'-':
return result - number
elif operator ==
'*':
return result * number
return result /
2return operating
return test
@modify(
'+',12)
defmodify1()
:return
4@modify(
'-',12)
defmodify2()
:return
4@modify(
'*',12)
defmodify3()
:return
4@modify(
'/',2)
defmodify4()
:return
4
寫乙個鬥地主發牌器
import random
# 方法一:
defcards()
: card_colors =
['♣'
,'♦'
,'♥'
,'♠'
,'joker'
] card_number1 =[2
,3,4
,5,6
,7,8
,9,10
,'j'
,'q'
,'k'
,'a'
] card_number2 =
['red'
,'black'
] n =
1 delete_list =
while n <=3:
count =
1 your_list =
while count <=17:
color = random.choice(card_colors)
if color ==
'joker'
: number = random.choice(card_number2)
else
: number = random.choice(card_number1)
if f'_'
notin delete_list:))
count +=
1# print(your_list)
yield your_list
n +=
1# print(delete_list)
gen1 = cards(
)print
(next
(gen1)
)print
(next
(gen1)
)print
(next
(gen1)
)# 方法二:
card_colors =
['♣'
,'♦'
,'♥'
,'♠'
]card_number1 =[2
,3,4
,5,6
,7,8
,9,10
,'j'
,'q'
,'k'
,'a'
]card_list2 =
['red_joker'
,'black_joker'
]card_list1 =
[f''
for i in card_colors for j in card_number1]
card_list1.extend(card_list2)
sets =
set(card_list1)
gen2 =
(i for i in sets)
your_cards1 =
your_cards2 =
your_cards3 =
for _ in
range(17
):next
(gen2)
)next
(gen2)
)next
(gen2)
)print
(your_cards1)
print
(your_cards2)
print
(your_cards3)
Day 10 迭代器和生成器
day 10 迭代器生成器模組 匯入原理 不管是通過import還是from import,在匯入模組時,系統會自動將被匯入的模組中的所有 執行一次 書寫規範 在定義模組時,可以通過if name main 這個if語句來阻止模組中指定 在被其他模組匯入時執行 在這個if語句中的 不會被其他模組執行...
Python基礎 day10 生成器
示例一 a x for x in range 30 這行 就是列表生成器,執行順序就是先執行後面的for迴圈,然後執行前面的x print a 執行結果 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27...
day19 生成器,迭代器
一 列表解析 l1 雞蛋 s i for i in range 10 if i 5 print l1 雞蛋6 雞蛋7 雞蛋8 雞蛋9 這種方法比較佔記憶體,因為要先生成列表,列表佔記憶體 print sum i for i in range 100000000 這種方法計算 1 10000000 的...