Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import time
- import json
- # Таск 1: Функция за намиране на всички прости числа в даден диапазон
- def find_primes(start, end):
- primes = []
- for num in range(start, end + 1):
- if num > 1:
- for i in range(2, int(num ** 0.5) + 1):
- if num % i == 0:
- break
- else:
- primes.append(num)
- return primes
- # Таск 1: Декоратор за измерване на времето за изпълнение на функцията
- def time_it(func):
- def wrapper(*args, **kwargs):
- start_time = time.time() # Започване на измерването на времето
- result = func(*args, **kwargs)
- end_time = time.time() # Завършване на измерването на времето
- elapsed_time = end_time - start_time
- print(f"Time taken: {elapsed_time:.2f} seconds")
- return result
- return wrapper
- @time_it
- def get_primes_in_range(start, end):
- return find_primes(start, end)
- # Таск 2: Разширена функция за намиране на всички прости числа в даден диапазон
- def main(start=0, end=1000):
- primes = get_primes_in_range(start, end)
- print(f"Prime numbers from {start} to {end}:")
- for prime in primes:
- print(prime) # Принтиране на всяко просто число на нов ред
- # Таск 3: Декоратор за форматиране на отчетите в различни формати
- def format_report(format_type):
- def decorator(func):
- def wrapper(*args, **kwargs):
- data = func(*args, **kwargs)
- if format_type == 'CSV':
- formatted = ','.join(map(str, data))
- elif format_type == 'JSON':
- formatted = json.dumps(data)
- elif format_type == 'TXT':
- formatted = '\n'.join(map(str, data))
- else:
- formatted = str(data)
- print(f"Formatted report ({format_type}):\n{formatted}")
- return data
- return wrapper
- return decorator
- # Примерна функция за генериране на отчетни данни
- @format_report('CSV')
- def generate_report(data):
- return data
- # Таск 3: Основна функция за демонстриране на използването на декоратор за отчет
- def report_demo():
- data = [1000, 2000, 3000, 4000]
- generate_report(data)
- def run():
- # Таск 2: Демонстриране на намиране на прости числа в диапазона 0-1000
- main(0, 1000)
- # Таск 3: Демонстриране на форматиране на отчет в CSV формат
- report_demo()
- # Извикване на функцията run() за изпълнение на всички задачи
- run()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement