Örnek çözümler en aşağıda verilmiştir.
1 - Elinizde liste = [1,2,3,6,7,88,44,60,100,150,45,22,323] şöyle bir liste olsun. ortalamabul adındaki fonksiyonunuz tüm sayıların genel ortalamasını yazsın, fakat ekstra olarak tek sayıların ortalamasını ve çift sayıların ortalamasını da yazsın. Decorator kullanın.
2 - Bir sayının asal olup olmadığını sorgulayan bir fonksiyon yazın. Fakat bu fonksiyon ekstradan mükemmel sayı olup olmadığını sorgulasın ve sorguladığı asal sayıyı mükemmel sayı ise ekrana yazsın. Decorator 🙂
1 -
def ekstra(func):
def wrapper(sayilar):
ciftler_toplami = 0
cift_sayilar = 0
tekler_toplami = 0
tek_sayilar = 0
for x in sayilar:
if x % 2 == 0:
ciftler_toplami += x
cift_sayilar += 1
else:
tekler_toplami += x
tek_sayilar += 1
print("Teklerin Ortalaması:",tekler_toplami / tek_sayilar)
print("Çiftlerin Ortalaması:",ciftler_toplami / cift_sayilar)
func(sayilar)
return wrapper
@ekstra
def ortalamabul(sayilar):
toplam = 0
for x in sayilar:
toplam += x
print("Genel Ortalama:",toplam / len(sayilar))
ortalamabul([1,2,3,6,7,88,44,60,100,150,45,22,323])
2 -
def mukemmel(func):
def wrapper(sayi):
sayi = int(sayi)
toplam = 0
bolen = 1
while bolen < sayi:
if sayi % bolen == 0:
toplam += bolen
bolen += 1
else:
bolen += 1
if toplam == sayi:
print(sayi)
return wrapper
@mukemmel
def asal_mi(sayi):
if sayi == 1:
return False
elif sayi == 2:
return True
else:
for x in range(2,sayi):
if sayi % x == 0:
return False
return True
for x in range(1,1000):
if asal_mi(x):
print(x)