-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTask.py
369 lines (327 loc) · 17.3 KB
/
Task.py
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
import logging.config
import logging
import oopUnit1.src.controll.controller
from log.logger import logger_config
from Unit1 import TaskUnit1
from Unit2 import TaskUnit2
from Unit3 import TaskUnit3
from Unit4 import TaskUnit4
from Unit5 import TaskUnit5
from Unit6 import TaskUnit6
from Unit11 import TaskUnit11
from Unit12 import TaskUnit12
from oopUnit1 import main_task
logging.config.dictConfig(logger_config)
logger_debug = logging.getLogger("task_debug_logger")
def Unit_1_Task(NumU1):
logger_debug.debug("Start Unit_1_Task(NumU1)")
if NumU1 == 1:
print('''
Выбрано задание №1
Напишите программу, которая принимает на вход цифру, обозначающую день недели, и проверяет, является ли этот день выходным.
Пример:
- 6 -> да
- 7 -> да
- 1 -> нет''')
logger_debug.debug("Выбран Юнит 1, задание 1")
TaskUnit1.Task1()
elif NumU1 == 2:
print('''
Выбрано задание № 2
Напишите программу для проверки истинности утверждения ¬(X ⋁ Y ⋁ Z) = ¬X ⋀ ¬Y ⋀ ¬Z для всех значений предикат.
''')
logger_debug.debug("Выбран Юнит 1, задание 2")
TaskUnit1.Task2()
elif NumU1 == 3:
print('''
Выбрано задание № 3
Напишите программу, которая принимает на вход координаты точки (X и Y), причём X ≠ 0 и Y ≠ 0 и выдаёт номер четверти плоскости, в которой находится эта точка (или на какой оси она находится).
Пример:
- x=34; y=-30 -> 4
- x=2; y=4-> 1
- x=-34; y=-30 -> 3
''')
logger_debug.debug("Выбран Юнит 1, задание 3")
TaskUnit1.Task3()
elif NumU1 == 4:
print('''
Выбрано задание № 4
Напишите программу, которая по заданному номеру четверти,
показывает диапазон возможных координат точек в этой четверти (x и y).
''')
logger_debug.debug("Выбран Юнит 1, задание 4")
TaskUnit1.Task4()
elif NumU1 == 5:
print('''
Выбрано задание № 5
Напишите программу, которая принимает на вход координаты двух точек
и находит расстояние между ними в 2D пространстве.
Пример:
- A (3,6); B (2,1) -> 5,09
- A (7,-5); B (1,-1) -> 7,21
''')
logger_debug.debug("Выбран Юнит 1, задание 5")
TaskUnit1.Task5()
else:
logger_debug.debug("Выбран номер не из списка от 1 до 5")
print('Выберите номер из предложенного списка от 1 до 5! ')
def Unit_2_Task(NumU2):
logger_debug.debug("Start Unit_2_Task(NumU2)")
if NumU2 == 1:
print('''
Выбрано задание №1
Напишите программу, которая принимает на вход вещественное число и показывает сумму его цифр.
*Пример:*
- 6782 -> 23
- 0.56 -> 11
''')
logger_debug.debug("Выбран Юнит 2, задание 1")
TaskUnit2.U2Task1()
elif NumU2 == 2:
print('''
Выбрано задание № 2
Напишите программу, которая принимает на вход число N и выдает набор произведений чисел от 1 до N.
*Пример:*
- пусть N = 4, тогда [ 1, 2, 6, 24 ] (1, 1*2, 1*2*3, 1*2*3*4)
''')
logger_debug.debug("Выбран Юнит 2, задание 2")
TaskUnit2.U2Task2()
elif NumU2 == 3:
print('''
Выбрано задание № 3
Задайте словарь из n чисел последовательности (1 + (1/n))^n и выведите на экран их сумму.
*Пример:*
- Для n = 3: {1: 2, 2: 2.25 , 3: 2.37}
*Необходимо сложить все значения словаря и вывести сумму на экран.*
''')
logger_debug.debug("Выбран Юнит 2, задание 3")
TaskUnit2.U2Task3()
elif NumU2 == 4:
print('''
Выбрано задание № 4
Задайте список из N элементов, заполненных числами из промежутка [-N, N].
Найдите произведение элементов на указанных позициях.
Позиции хранятся в файле file.txt в одной строке одно число.
''')
logger_debug.debug("Выбран Юнит 2, задание 4")
TaskUnit2.U2Task4()
elif NumU2 == 5:
print('''
Выбрано задание № 5
Реализуйте алгоритм генерации случайного числа.
(Не используя библиотеки связанные с рандомом)
*(Доп задача, не влияющая на оценку)*
''')
logger_debug.debug("Выбран Юнит 2, задание 5")
TaskUnit2.U2Task5()
else:
logger_debug.debug("Выбран номер не из списка от 1 до 5")
print('Выберите номер из предложенного списка от 1 до 5! ')
def Unit_3_Task(NumU3):
logger_debug.debug("Start Unit_3_Task(NumU3)")
if NumU3 == 1:
print('''
Выбрано задание №1
Напишите программу, которая найдёт произведение пар чисел списка. Парой считаем первый и последний элемент, второй и предпоследний и т.д.
*Пример:*
- [2, 3, 4, 5, 6] => [12, 15, 16];
- [2, 3, 5, 6] => [12, 15]''')
logger_debug.debug("Выбран Юнит 3, задание 1")
TaskUnit3.U3Task1()
elif NumU3 == 2:
print('''
Выбрано задание № 2
Задайте список из вещественных чисел. Напишите программу, которая найдёт разницу между максимальным и минимальным значением дробной части элементов.
*Пример:*
- [1.1, 1.2, 3.1, 5.1, 10.01] => 0.19''')
logger_debug.debug("Выбран Юнит 3, задание 2")
TaskUnit3.U3Task2()
elif NumU3 == 3:
print('''
Выбрано задание № 3
Напишите программу, которая будет преобразовывать десятичное число в двоичное.
*Пример:*
- 45 -> 101101
- 3 -> 11
- 2 -> 10''')
logger_debug.debug("Выбран Юнит 3, задание 3")
TaskUnit3.U3Task3()
elif NumU3 == 4:
print('''
Выбрано задание № 4
Задайте число. Составьте список чисел Фибоначчи, в том числе для отрицательных индексов.
*Пример:*
- для k = 8 список будет выглядеть так: [-21 ,13, -8, 5, −3, 2, −1, 1, 0, 1, 1, 2, 3, 5, 8, 13, 21]
[Негафибоначчи]
''')
logger_debug.debug("Выбран Юнит 3, задание 4")
TaskUnit3.U3Task4()
else:
logger_debug.debug("Выбран номер не из списка от 1 до 4")
print('Выберите номер из предложенного списка от 1 до 4! ')
def Unit_4_Task(NumU4):
logger_debug.debug("Start Unit_4_Task(NumU4)")
if NumU4 == 1:
print('''
Выбрано задание №1
Вычислить число ПИ c заданной точностью d
*Пример:*
- при d = 0.0001, π = 3.1415. 10^-1 ≤ d ≤ 10^-10
''')
logger_debug.debug("Выбран Юнит 4, задание 1")
TaskUnit4.U4Task1()
elif NumU4 == 2:
print('''
Выбрано задание № 2
Задайте натуральное число N.
Напишите программу, которая составит список простых множителей числа N.
(Выполнили на семинаре)
''')
logger_debug.debug("Выбран Юнит 4, задание 2")
TaskUnit4.U4Task2()
elif NumU4 == 3:
print('''
Выбрано задание № 3
Задайте последовательность чисел.
Напишите программу, которая выведет список неповторяющихся элементов исходной последовательности.
''')
logger_debug.debug("Выбран Юнит 4, задание 3")
TaskUnit4.U4Task3()
elif NumU4 == 4:
print('''
Выбрано задание № 4
Задана натуральная степень k.
Сформировать случайным образом список коэффициентов (значения от 0 до 100)
многочлена и записать в файл многочлен степени k(до 6 степени).*
*Пример:*
- k=2 => 2*x² + 4*x + 5 = 0 или x² + 5 = 0 или 10*x² = 0
''')
logger_debug.debug("Выбран Юнит 4, задание 4")
TaskUnit4.U4Task4()
elif NumU4 == 5:
print('''
Выбрано задание № 5
Даны два файла, в каждом из которых находится запись многочлена.
Задача - сформировать файл, содержащий сумму многочленов.*
Пример:
- 2*x² + 4*x + 5 = 0
- 5*x² + 2*x + 43 = 0
- Результат: 7*x^2 + 6*x + 48 = 0
*Значения коэффициентов от -100 до 100
*Сумма многочленов с разными степенями
Пример:
- 2*x² + 4*x + 5 = 0
- 5*x^4 + 2*x^3 - 6*x^2 + 13*x + 43 = 0
- Результат: 5*x^4 + 2*x^3 - 4*x^2 + 17*x + 48 = 0
''')
logger_debug.debug("Выбран Юнит 4, задание 5")
TaskUnit4.U4Task5()
else:
logger_debug.debug("Выбран номер не из списка от 1 до 5")
print('Выберите номер из предложенного списка от 1 до 5! ')
def Unit_5_Task(NumU5):
logger_debug.debug("Start Unit_5_Task(NumU5)")
if NumU5 == 1:
print('''
Выбрано задание №1
Напишите программу, удаляющую из текста все слова, содержащие ""абв"".
''')
logger_debug.debug("Выбран Юнит 5, задание 1")
TaskUnit5.U5Task1()
elif NumU5 == 2:
print('''
Выбрано задание № 2
Создайте программу для игры с конфетами человек против человека.
Условие задачи: На столе лежит 2021 конфета. Играют два игрока делая ход друг после друга.
Первый ход определяется жеребьёвкой. За один ход можно забрать не более чем 28 конфет.
Все конфеты оппонента достаются сделавшему последний ход. Сколько конфет нужно взять первому игроку,
чтобы забрать все конфеты у своего конкурента?
a) Добавьте игру против бота
b) Подумайте как наделить бота ""интеллектом""
''')
logger_debug.debug("Выбран Юнит 5, задание 2")
TaskUnit5.U5Task2()
elif NumU5 == 3:
print('''
Выбрано задание № 3
Создайте программу для игры в ""Крестики-нолики"".
''')
logger_debug.debug("Выбран Юнит 5, задание 3")
TaskUnit5.U5Task3()
elif NumU5 == 4:
print('''
Выбрано задание № 4
Реализуйте RLE алгоритм: реализуйте модуль сжатия и восстановления данных.
''')
logger_debug.debug("Выбран Юнит 5, задание 4")
TaskUnit5.U5Task4()
else:
logger_debug.debug("Выбран номер не из списка от 1 до 4")
print('Выберите номер из предложенного списка от 1 до 4! ')
def Unit_6_Task(NumU6):
logger_debug.debug("Start Unit_6_Task(NumU6)")
if NumU6 == 1:
print('''
Выбрано задание №1
Задача: предложить улучшения кода для уже решённых задач(3-5 задач):
С помощью использования лямбд, filter, map, zip, enumerate, list comprehension
''')
logger_debug.debug("Выбран Юнит 6, задание 1")
TaskUnit6.U6Task1()
elif NumU6 == 2:
print('''
Выбрано задание № 2
Доделать:
Напишите программу вычисления арифметического выражения заданного строкой. Используйте операции +,-,/,*. приоритет операций стандартный.
*Пример:*
2+2 => 4;
1+2*3 => 7;
1-2*3 => -5;
- Добавьте возможность использования скобок, меняющих приоритет операций.
*Пример:*
1+2*3 => 7;
(1+2)*3 => 9;
''')
logger_debug.debug("Выбран Юнит 6, задание 2")
TaskUnit6.U6Task2()
else:
logger_debug.debug('Выбран номер не из списка от 1 до 2')
print('Выберите номер из предложенного списка от 1 до 2!')
def Unit_11_Task(NumU11):
logger_debug.debug("Start Unit_11_Task(NumU11)")
if NumU11 == 1:
print('''
Выбрано задание №1
Задача: предложить улучшения кода для уже решённых задач(3-5 задач):
С помощью использования лямбд, filter, map, zip, enumerate, list comprehension
''')
logger_debug.debug("Выбран Юнит 11, задание 1")
TaskUnit11.U11Task1()
else:
logger_debug.debug('Выбран номер не из списка от 1 до 1')
print('Выберите номер из предложенного списка от 1 до 1!')
def Unit_12_Task(NumU12):
logger_debug.debug("Start Unit_12_Task(NumU12)")
if NumU12 == 1:
print('''
Выбрано задание №1
Задача: предложить улучшения кода для уже решённых задач(3-5 задач):
С помощью использования лямбд, filter, map, zip, enumerate, list comprehension
''')
logger_debug.debug("Выбран Юнит 12, задание 1")
TaskUnit12.U12Task1()
else:
logger_debug.debug('Выбран номер не из списка от 1 до 1')
print('Выберите номер из предложенного списка от 1 до 1!')
def oop_Unit_1_Task(oopNum1):
logger_debug.debug("Start oop_Unit_1_Task(oopNum1)")
if oopNum1 == 1:
print('''
Выбрано задание №1
Задача: Необходимо реализовать свой проект на каком-то другом языке программирования
''')
logger_debug.debug("Выбрано Объектно-ориентированное программирование Юнит 7, задание 1")
main_task.oopU7Task1()
else:
logger_debug.debug('Выбран номер не из списка от 1 до 1')
print('Выберите номер из предложенного списка от 1 до 1!')