Advertisement
BERKYT

Tasks generator

Jun 13th, 2022
1,053
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 9.68 KB | None | 0 0
  1. # ======================================================================================================================
  2.  
  3. # Author: BERKYT
  4.  
  5. # ======================================================================================================================
  6.  
  7. import random
  8.  
  9. from abc import ABC, abstractmethod
  10.  
  11.  
  12. class TaskException(Exception):
  13.     pass
  14.  
  15.  
  16. class Task(ABC):
  17.     @abstractmethod
  18.     def get_info():
  19.         pass
  20.    
  21.     @abstractmethod
  22.     def get_task():
  23.         pass    
  24.    
  25.     @abstractmethod
  26.     def input_respounse(task, respounse):
  27.         pass
  28.  
  29.  
  30. class Example:
  31.     class TaskExample(Task):
  32.         def get_info():
  33.             return 'Напишите сложение чисел 1 + 1'
  34.  
  35.         def get_task():
  36.             return (1, 1)
  37.  
  38.         def input_respounse(*, task, respounse):
  39.             if sum(task) != respounse:
  40.                 raise TaskException('Задание решено неверно!')
  41.             else:
  42.                print(f'Ваш ответ: {respounse=}\nВы справились с заданием! Переходите дальше.')
  43.  
  44.  
  45. class LessonTwo:
  46.     class Task_1(Task):
  47.         def get_info():
  48.             return 'Проверить, является ли последовательность цифрами?'
  49.  
  50.         def get_task():
  51.             alphabet = 'abcdefghijklmnopqrstuvwxyz'
  52.             length = random.randint(5, 25)
  53.             return ''.join([str(random.randint(0, 9)) for _ in range(length)]) if random.randint(0, 1) else ''.join([random.choice(alphabet) for _ in range(length)])
  54.  
  55.         def input_respounse(*, task, respounse):
  56.             if task.isdigit() is not respounse:
  57.                 raise TaskException('Задание решено неверно!')
  58.             else:
  59.                 print(f'Ваш ответ: {respounse=}\nВы справились с заданием! Переходите дальше.')
  60.  
  61.     class Task_2(Task):
  62.         def get_info():
  63.             return 'Найти последний элемент в списке'
  64.  
  65.         def get_task():
  66.             length = random.randint(5, 25)
  67.             return [random.randint(-10, 10) for _ in range(length)]
  68.  
  69.         def input_respounse(*, task, respounse):
  70.             if task[-1] != respounse:
  71.                 raise TaskException('Задание решено неверно!')
  72.             else:
  73.                 print(f'Ваш ответ: {respounse=}\nВы справились с заданием! Переходите дальше.')
  74.  
  75.     class Task_3(Task):
  76.         def get_info():
  77.             return 'Разбить строку на список по запятым'
  78.  
  79.         def get_task():
  80.             return '255.255.255.0,255.255.255.128,255.255.255.192,255.255.255.224,255.255.255.240'
  81.  
  82.         def input_respounse(*, task, respounse):
  83.             if task.split(',') != respounse:
  84.                 raise TaskException('Задание решено неверно!')
  85.             else:
  86.                 print(f'Ваш ответ: {respounse=}\nВы справились с заданием! Переходите дальше.')
  87.  
  88.     class Task_4(Task):
  89.         def get_info():
  90.             return 'Заменить в строке слова "ЗАМЕНИ" на "***"'
  91.  
  92.         def get_task():
  93.             return 'Язык характеризуется логичным синтаксисом, ЗАМЕНИ вследствие чего исходный код программ, написанных «на питоне», ЗАМЕНИ легко читается и воспринимается.'
  94.  
  95.         def input_respounse(*, task, respounse):
  96.             if task.replace('ЗАМЕНИ', '***') != respounse:
  97.                 raise TaskException('Задание решено неверно!')
  98.             else:
  99.                 print(f'Ваш ответ: {respounse=}\nВы справились с заданием! Переходите дальше.')
  100.  
  101.     class Task_5(Task):
  102.         def get_info():
  103.             return 'Узнать длину списка'
  104.  
  105.         def get_task():
  106.             length = random.randint(5, 25)
  107.             return [random.randint(-10, 10) for _ in range(length)]
  108.  
  109.         def input_respounse(*, task, respounse):
  110.             if len(task) != respounse:
  111.                 raise TaskException('Задание решено неверно!')
  112.             else:
  113.                 print(f'Ваш ответ: {respounse=}\nВы справились с заданием! Переходите дальше.')
  114.  
  115.     class Task_6(Task):
  116.         def get_info():
  117.             return 'Найти где находится слово "НАЙДИ"'
  118.  
  119.         def get_task():
  120.             return 'Язык характеризуется логичным синтаксисом, вследствие чего НАЙДИ исходный код программ, написанных «на питоне», легко читается и воспринимается.'
  121.  
  122.         def input_respounse(*, task, respounse):
  123.             if task.find('НАЙДИ') != respounse:
  124.                 raise TaskException('Задание решено неверно!')
  125.             else:
  126.                 print(f'Ваш ответ: {respounse=}\nВы справились с заданием! Переходите дальше.')
  127.  
  128.  
  129. class LessonThree:
  130.     class Task_1(Task):
  131.         def get_info():
  132.             return 'С помощью встроенных функций создать список'
  133.        
  134.         def get_task():
  135.             return list
  136.  
  137.         def input_respounse(*, task, respounse):
  138.             if isinstance(respounse, task):
  139.                 print(f'Ваш ответ: {respounse=}\nВы справились с заданием! Переходите дальше.')
  140.             else:
  141.                 raise TaskException('Задание решено неверно!')
  142.  
  143.     class Task_2(Task):
  144.         def get_info():
  145.             return 'Проверить, все ли числа в списке больше 0'
  146.        
  147.         def get_task():
  148.             res = []
  149.  
  150.             for _ in range(10):
  151.                 res.append(1 if random.randint(0,10) else 0)
  152.  
  153.             return res
  154.  
  155.         def input_respounse(*, task, respounse):
  156.             if all(task) is respounse:
  157.                 print(f'Ваш ответ: {respounse=}\nВы справились с заданием! Переходите дальше.')
  158.             else:
  159.                 raise TaskException('Задание решено неверно!')
  160.  
  161.     class Task_3(Task):
  162.         def get_info():
  163.             return 'Проверить, есть ли в списке хоть одно число больше 0'
  164.  
  165.         def get_task():
  166.             res = []
  167.  
  168.             for _ in range(10):
  169.                 res.append(1 if not random.randint(0,10) else 0)
  170.  
  171.             return res
  172.  
  173.         def input_respounse(*, task, respounse):
  174.             if any(task) is respounse:
  175.                 print(f'Ваш ответ: {respounse=}\nВы справились с заданием! Переходите дальше.')
  176.             else:
  177.                 raise TaskException('Задание решено неверно!')
  178.  
  179.     class Task_4(Task):
  180.         def get_info():
  181.             return 'Найти минимальное значение в списке'
  182.        
  183.         def get_task():
  184.             res = []
  185.  
  186.             for _ in range(10):
  187.                 res.append(random.randint(-100,100))
  188.  
  189.             return res
  190.  
  191.         def input_respounse(*, task, respounse):
  192.             if min(task) == respounse:
  193.                 print(f'Ваш ответ: {respounse=}\nВы справились с заданием! Переходите дальше.')
  194.             else:
  195.                 raise TaskException('Задание решено неверно!')
  196.  
  197.     class Task_5(Task):
  198.         def get_info():
  199.             return 'Найти сумму элементов в списке'
  200.  
  201.         def get_task():
  202.             return [x for x in range(random.randint(5, 40))]
  203.        
  204.         def input_respounse(*, task, respounse):
  205.             if sum(task) == respounse:
  206.                 print(f'Ваш ответ: {respounse=}\nВы справились с заданием! Переходите дальше.')
  207.             else:
  208.                 raise TaskException('Задание решено неверно!')
  209.  
  210.     class Task_6(Task):
  211.         def get_info():
  212.             return 'Выполнить сортировку списка'
  213.  
  214.         def get_task():
  215.             alphabet = 'abcdefghijklmnopqrstuvwxyz'
  216.             return [random.randint(-10, 10) for _ in range(10)] if random.randint(0, 1) else [random.choice(alphabet) for _ in range(10)]
  217.    
  218.         def input_respounse(*, task, respounse):
  219.             if sorted(task) == respounse:
  220.                 print(f'Ваш ответ: {respounse=}\nВы справились с заданием! Переходите дальше.')
  221.             else:
  222.                 raise TaskException('Задание решено неверно!')
  223.  
  224.     class Task_7(Task):
  225.         def get_info():
  226.             return 'Найти максимальное значение в списке'
  227.        
  228.         def get_task():
  229.             res = []
  230.  
  231.             for _ in range(10):
  232.                 res.append(random.randint(-100,100))
  233.  
  234.             return res
  235.  
  236.         def input_respounse(*, task, respounse):
  237.             if max(task) == respounse:
  238.                 print(f'Ваш ответ: {respounse=}\nВы справились с заданием! Переходите дальше.')
  239.             else:
  240.                 raise TaskException('Задание решено неверно!')
  241.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement