Formatted black

This commit is contained in:
PeseC 2023-03-07 00:46:43 +04:00
parent f94d0aa917
commit 79bb636f39
3 changed files with 86 additions and 51 deletions

Binary file not shown.

View file

@ -8,26 +8,29 @@ init(autoreset=True)
# --------------------------заполнение-и-вывод-списка------------------------------------ # --------------------------заполнение-и-вывод-списка------------------------------------
def rand(): def rand():
range1 = int(input(Fore.GREEN + "Введите длинну списка: " + Fore.RESET)) range1 = int(input(Fore.GREEN + "Введите длинну списка: " + Fore.RESET))
range2 = int(input(Fore.GREEN + "Введите предел чисел: " + Fore.RESET)) range2 = int(input(Fore.GREEN + "Введите предел чисел: " + Fore.RESET))
massive = random.sample(range(0, range2), range1) return random.sample(range(0, range2), range1)
return massive
def print_table(masive, num_cols): def print_table(masive, num_cols):
massive = masive massive = masive
num_rows = len(massive) // num_cols + (len(massive) % num_cols > 0) num_rows = len(massive) // num_cols + (len(massive) % num_cols > 0)
for i in range(num_rows): for i in range(num_rows):
row = massive[i*num_cols:(i+1)*num_cols] row = massive[i * num_cols : (i + 1) * num_cols]
row += [''] * (num_cols - len(row)) # добавляем пустые элементы до num_cols row += [""] * (num_cols - len(row)) # добавляем пустые элементы до num_cols
print((Fore.BLUE + '{:<7}' * num_cols).format(*row)) print((Fore.BLUE + "{:<7}" * num_cols).format(*row))
# -----------------------------вывод-графиков------------------------------------------ # -----------------------------вывод-графиков------------------------------------------
def real_graph(masive): #вещественный график=-=--=-=-=-=-=-=
def real_graph(masive): # вещественный график=-=--=-=-=-=-=-=
massive = masive massive = masive
max_height = max(massive) max_height = max(massive)
length = len(massive) length = len(massive)
for i in range(max_height, 0, -1): for i in range(max_height, 0, -1):
for q in range(0, length): for q in range(0, length):
if massive[q] >= i: if massive[q] >= i:
@ -35,83 +38,108 @@ def real_graph(masive): #вещественный график=-=--=-=-=-=-=-=
else: else:
print(Fore.RED + " ", end="") print(Fore.RED + " ", end="")
print(' ', Fore.BLUE + str(i)) print(" ", Fore.BLUE + str(i))
def percentage_graph(masive, max_or_mean): #процентный график=-=--=-=-=-=-=-=
def percentage_graph(masive, max_or_mean): # процентный график=-=--=-=-=-=-=-=
massive = masive massive = masive
# нахождение высоты # нахождение высоты
max_height = max(massive) / 20 # делит таблицу на 20 частей по 5% max_height = max(massive) / 20 # делит таблицу на 20 частей по 5%
# нахождение длинны # нахождение длинны
chunks = np.array_split(massive, 20)# Разбиваем массив на 20 частей chunks = np.array_split(massive, 20) # Разбиваем массив на 20 частей
max_values = np.zeros(20)# Инициализируем массивы для хранения максимальных значений и их индексов max_values = np.zeros(
20
) # Инициализируем массивы для хранения максимальных значений и их индексов
max_indices = np.zeros(20) max_indices = np.zeros(20)
if max_or_mean == "arf": if max_or_mean == "arf":
means = [int(np.nanmean(chunk)) for chunk in chunks]# вычисляем среднее арифметическое каждого подсписка means = [
int(np.nanmean(chunk)) for chunk in chunks
] # вычисляем среднее арифметическое каждого подсписка
elif max_or_mean == "max": elif max_or_mean == "max":
for i, chunk in enumerate(chunks): # Находим максимальное значение и его индекс в каждой части for i, chunk in enumerate(
chunks
): # Находим максимальное значение и его индекс в каждой части
if len(chunk) > 0: if len(chunk) > 0:
max_index = np.argmax(chunk) max_index = np.argmax(chunk)
max_indices[i] = i*len(chunk) + max_index max_indices[i] = i * len(chunk) + max_index
else: else:
print(Fore.RED + "Приятель, делай выбор!") print(Fore.RED + "Приятель, делай выбор!")
return return
# строим график # строим график
for i in range(21, 0, -1): for i in range(21, 0, -1):
index_height = int((max_height * i) - max_height) # создаёт индекс для сравнения высот index_height = int(
(max_height * i) - max_height
) # создаёт индекс для сравнения высот
for q in range(0, 20): for q in range(0, 20):
if max_or_mean == "arf": if max_or_mean == "arf":
value = means[q] value = means[q]
elif max_or_mean == "max": elif max_or_mean == "max":
index_lenght = max_indices[q] # создаёт индекс длинны для сравненияс высотой index_lenght = max_indices[
q
] # создаёт индекс длинны для сравненияс высотой
value = massive[int(index_lenght)] value = massive[int(index_lenght)]
if len(massive) > 0 and value >= index_height: if len(massive) > 0 and value >= index_height:
print(Fore.RED + "[]", end="") print(Fore.RED + "[]", end="")
else: else:
print(Fore.RED + " ", end="") print(Fore.RED + " ", end="")
print(' ', Fore.BLUE + str((i-1)*5), Fore.BLUE + '%') print(" ", Fore.BLUE + str((i - 1) * 5), Fore.BLUE + "%")
# -----------------------------назначение-настроек---------------------------------------------- # -----------------------------назначение-настроек----------------------------------------------
def graf(show_graph): # параметр базового вывода графика
def graf(show_graph): # параметр базового вывода графика
while True: while True:
if show_graph is not None: if show_graph is not None:
print(Fore.GREEN + "Выводится ли график - ", Fore.BLUE + str(show_graph)) print(Fore.GREEN + "Выводится ли график - ", Fore.BLUE + str(show_graph))
else: else:
print(Fore.GREEN + "Выводится ли график - ", Fore.BLUE + "None") print(Fore.GREEN + "Выводится ли график - ", Fore.BLUE + "None")
show_graph = input(Fore.GREEN + "Строить график? - yes или no\n" + Fore.RESET) show_graph = input(Fore.GREEN + "Строить график? - yes или no\n" + Fore.RESET)
if show_graph in ['yes', 'no']: if show_graph in ["yes", "no"]:
break break
os.system("cls") os.system("cls")
print(Fore.RED + "Приятель, делай выбор!") print(Fore.RED + "Приятель, делай выбор!")
return show_graph return show_graph
def type_graf(show_graph, max_or_mean): # параметр типа графика
if show_graph == 'yes': def type_graf(show_graph, max_or_mean): # параметр типа графика
if show_graph == "yes":
while True: while True:
if max_or_mean is not None: if max_or_mean is not None:
print(Fore.GREEN + "Тип графика - ", Fore.BLUE + str(max_or_mean)) print(Fore.GREEN + "Тип графика - ", Fore.BLUE + str(max_or_mean))
else: else:
print(Fore.GREEN + "Тип графика - ", Fore.BLUE + "None") print(Fore.GREEN + "Тип графика - ", Fore.BLUE + "None")
max_or_mean = input(Fore.GREEN + "Строить график по арифметической сумме(arf)\nили высшим точкам(max)?\n" + Fore.RESET) max_or_mean = input(
if max_or_mean in ['arf', 'max']: Fore.GREEN
+ "Строить график по арифметической сумме(arf)\nили высшим точкам(max)?\n"
+ Fore.RESET
)
if max_or_mean in ["arf", "max"]:
break break
os.system("cls") os.system("cls")
print(Fore.RED + "Приятель, делай выбор!") print(Fore.RED + "Приятель, делай выбор!")
elif show_graph == 'no': elif show_graph == "no":
max_or_mean = 'arf' max_or_mean = "arf"
return max_or_mean return max_or_mean
def num_column(num_cols): # параметр кол-ва столбцов таблице
while True: def num_column(num_cols): # параметр кол-ва столбцов таблице
while True:
try: try:
if num_cols is not None: if num_cols is not None:
print(Fore.GREEN + "кол-во колнок - ", Fore.BLUE + str(num_cols)) print(Fore.GREEN + "кол-во колнок - ", Fore.BLUE + str(num_cols))
else: else:
print(Fore.GREEN + "кол-во колнок - ", Fore.BLUE + "None") print(Fore.GREEN + "кол-во колнок - ", Fore.BLUE + "None")
num_cols = int(input(Fore.GREEN + "Укажите кол-во колнок в таблиц\n(не больше 10) - \n" + Fore.RESET)) num_cols = int(
input(
Fore.GREEN
+ "Укажите кол-во колнок в таблиц\n(не больше 10) - \n"
+ Fore.RESET
)
)
except ValueError: except ValueError:
os.system("cls") os.system("cls")
print(Fore.RED + "Приятель, числа надо вводить, ЧИСЛА!\nЗаново!") print(Fore.RED + "Приятель, числа надо вводить, ЧИСЛА!\nЗаново!")
@ -122,17 +150,19 @@ def num_column(num_cols): # параметр кол-ва столбцов таб
print(Fore.RED + "Приятель, не больше 10!") print(Fore.RED + "Приятель, не больше 10!")
return num_cols return num_cols
# -----------------------------menu-------------------------------------------------- # -----------------------------menu--------------------------------------------------
def menu(show_graph, max_or_mean, num_cols): def menu(show_graph, max_or_mean, num_cols):
while True: while True:
os.system("cls") os.system("cls")
menu = input( menu = input(
Fore.GREEN + Fore.GREEN
"\nДля продолжения нажмите Enter.\nЕсли хотите изменить настройки введите change\nпосмотреть настройки - set\nЕсли хотите завершить работу введите end.\n\n " + "\nДля продолжения нажмите Enter.\nЕсли хотите изменить настройки введите change\nпосмотреть настройки - set\nЕсли хотите завершить работу введите end.\n\n "
+ Fore.RED + Fore.RED
) )
match menu: match menu:
case "": case "":
os.system("cls") os.system("cls")
@ -141,18 +171,21 @@ def menu(show_graph, max_or_mean, num_cols):
case "set": case "set":
setings(show_graph, max_or_mean, num_cols) setings(show_graph, max_or_mean, num_cols)
case "change": case "change":
show_graph, max_or_mean, num_cols = changes(show_graph, max_or_mean, num_cols) show_graph, max_or_mean, num_cols = changes(
show_graph, max_or_mean, num_cols
)
case "end": case "end":
os.system("cls") os.system("cls")
print( print(
Fore.GREEN + Fore.GREEN
"Спасибо за то, что воспользовались услугами\nкомпании ООО'Random'.\nС вас много деняг." + "Спасибо за то, что воспользовались услугами\nкомпании ООО'Random'.\nС вас много деняг."
) )
breaker = False breaker = False
return breaker, show_graph, max_or_mean, num_cols return breaker, show_graph, max_or_mean, num_cols
case other: case other:
pass pass
def setings(show_graph, max_or_mean, num_cols): def setings(show_graph, max_or_mean, num_cols):
while True: while True:
os.system("cls") os.system("cls")
@ -162,12 +195,13 @@ def setings(show_graph, max_or_mean, num_cols):
menu = input(Fore.GREEN + "\nДля возвращения нажмите Enter. ") menu = input(Fore.GREEN + "\nДля возвращения нажмите Enter. ")
break break
def changes(show_graph, max_or_mean, num_cols): def changes(show_graph, max_or_mean, num_cols):
while True: while True:
os.system("cls") os.system("cls")
change = input( change = input(
Fore.GREEN + Fore.GREEN
"Если хотите выводить/не выводить график\nвведите graf\nЕсли хотите изменить тип графика\nвведите type\nЕсли хотите изменить кол-во столбцов\nвведите col\nЕсли хотите вернуться к работе то\nвведите cont\n" + "Если хотите выводить/не выводить график\nвведите graf\nЕсли хотите изменить тип графика\nвведите type\nЕсли хотите изменить кол-во столбцов\nвведите col\nЕсли хотите вернуться к работе то\nвведите cont\n"
+ Fore.RED + Fore.RED
) )
match change: match change:
@ -179,4 +213,3 @@ def changes(show_graph, max_or_mean, num_cols):
num_cols = num_column(num_cols) num_cols = num_column(num_cols)
case "cont": case "cont":
return show_graph, max_or_mean, num_cols return show_graph, max_or_mean, num_cols

24
rand.py
View file

@ -6,26 +6,26 @@ init(autoreset=True)
os.system("cls") os.system("cls")
masive = [] # инициализация основного масива masive = [] # инициализация основного масива
show_graph = None # параметр базового вывода графика show_graph = None # параметр базового вывода графика
show_graph = function.graf(show_graph) show_graph = function.graf(show_graph)
max_or_mean = None # параметр типа графика max_or_mean = None # параметр типа графика
max_or_mean = function.type_graf(show_graph, max_or_mean) max_or_mean = function.type_graf(show_graph, max_or_mean)
num_cols = None # параметр кол-ва столбцов таблице num_cols = None # параметр кол-ва столбцов таблице
num_cols = function.num_column(num_cols) num_cols = function.num_column(num_cols)
while True: while True:
try: try:
masive = function.rand() # заполнение массива случайными числами masive = function.rand() # заполнение массива случайными числами
match show_graph: match show_graph:
case "yes": case "yes":
function.print_table(masive, num_cols) function.print_table(masive, num_cols)
max_height = max(masive) max_height = max(masive)
length = len(masive) length = len(masive)
if max_height > 20 or length > 20: if max_height > 20 or length > 20:
function.percentage_graph(masive, max_or_mean) function.percentage_graph(masive, max_or_mean)
else: else:
function.real_graph(masive) function.real_graph(masive)
@ -39,10 +39,12 @@ while True:
os.system("cls") os.system("cls")
print(Fore.RED + "Приятель, внимательнее! \nЗаново!") print(Fore.RED + "Приятель, внимательнее! \nЗаново!")
continue continue
breaker, show_graph, max_or_mean, num_cols = function.menu(show_graph, max_or_mean, num_cols) breaker, show_graph, max_or_mean, num_cols = function.menu(
show_graph, max_or_mean, num_cols
)
if breaker == False: if breaker == False:
break break
# ВСЁ ГОТОВО) # ВСЁ ГОТОВО)