import os import sys import json import pprint import random try: import ezztui except: os.system(sys.executable + " -m pip install " + "ezztui") import ezztui try: from progress.bar import ChargingBar except: os.system(sys.executable + " -m pip install " + "progress") from progress.bar import ChargingBar massivmenu = { 'Управление массивами': { 'Создать массив': 'ezztui_return_value', 'Выбрать текущий массив': 'ezztui_return_value', 'Очистить массив': { 'Очистить': 'ezztui_return_value', 'Назад': 'ezztui_back_value' }, 'Удалить массив': { 'Удалить': 'ezztui_return_value', 'Назад': 'ezztui_back_value' }, 'Управление основательными массивами': { 'Сохранить массивы глубоко на диск': { 'Сохранить с заменой': 'ezztui_return_value', 'Сохранить с объединением': 'ezztui_return_value', 'Назад': 'ezztui_back_value' }, 'Срезик массивов с диска': { 'Срезик с заменой': 'ezztui_return_value', 'Срезик с объединением': 'ezztui_return_value', 'Назад': 'ezztui_back_value' }, 'Назад': 'ezztui_back_value' }, 'Назад': 'ezztui_back_value' }, 'Заполнение массивов': { 'Режим заполнения': { 'Замена': 'ezztui_return_value', 'Добавление': 'ezztui_return_value', 'Назад': 'ezztui_back_value' }, 'Заполнить массив случайными числами': 'ezztui_return_value', 'Заполнить массив по заданному интервалу': 'ezztui_return_value', 'Заполнить массив вручную по крупицам': 'ezztui_return_value', 'Назад': 'ezztui_back_value' }, 'Вывод массивов': { 'Вывести массив по одному элементу': 'ezztui_return_value', 'Вывести массив одной строчкой': 'ezztui_return_value', 'Вывести массив как список': 'ezztui_return_value', 'Назад': 'ezztui_back_value' }, 'Действия с массивами': { 'Сложение массивов': 'ezztui_return_value', 'Перемешать массив': 'ezztui_return_value', 'Отсортировать массив': { 'По возрастанию': 'ezztui_return_value', 'По убыванию': 'ezztui_return_value', 'Назад': 'ezztui_back_value' }, 'Назад': 'ezztui_back_value' }, 'Игры': { 'Игра "угадай массив"': 'ezztui_return_value', 'Игра "посчитай сумму" - на развитие толковейшей головы': 'ezztui_return_value', 'Назад': 'ezztui_back_value' }, 'О программе': 'ezztui_return_value', 'Выход': { 'Выход': 'ezztui_exit_value', 'Назад': 'ezztui_back_value', 'KorvusTeam': 'ezztui_return_value', } } massives = {} current = '' fill_mode = 'add' def create_massive(): global massives global current print('Назовите массив.\n' 'Придумывайте основательное и глубокое название.\n' 'Не делайте название на 70 слайдов, ведь его сложно прочитать\n') name = input('Введите название: ') massives[name] = [] current = name input("Массив " + name + " создан! Сейчас он пустой. Вы можете заполнить его") def choose_current(): global massives global current massives_menu = {} for massive in list(massives): massives_menu[massive] = 'ezztui_return_value' current = ezztui.menu(massives_menu)[0] def clear(): global massives massives_menu = {} for massive in list(massives): massives_menu[massive] = 'ezztui_return_value' toclear = ezztui.menu(massives_menu)[0] massives_menu[toclear] = [] def delete(): global massives massives_menu = {} for massive in list(massives): massives_menu[massive] = 'ezztui_return_value' toclear = ezztui.menu(massives_menu)[0] massives.pop(toclear) def save_disk(mode): global massives massivesfile = open('смачний.шматочок', 'w+') json.dump(massives, massivesfile) def read_disk(mode): global massives massivesfile = open('смачний.шматочок', 'r') massives = json.load(massivesfile) def fill_random(): global massives global current global fill_mode needlen = None while needlen == None: try: needlen = int(input('Введите, сколько элементов массива нужно создать и засунуть ♂deep♂ в массив: ')) except: print("Введите число и не ломайте программу, я ее мозгами писал") maxint = None while maxint == None: try: maxint = int(input('Введите, каким максимально должно быть случайное число: ')) except: print("Введите число и не ломайте программу, я ее мозгами писал") minint = None while minint == None: try: minint = int(input('Введите, каким минимально должно быть случайное число: ')) except: print("Введите число и не ломайте программу, я ее мозгами писал") if fill_mode == 'replace': massives[current] = [] zapoln_bar = ChargingBar('Заполнение массива', max=needlen) for i in range(needlen): massives[current].append(random.randint(minint, maxint)) zapoln_bar.next() input("\nМассив заполнен") def fill_interval(): global massives global current global fill_mode needlen = None while needlen == None: try: needlen = int(input('Введите, сколько элементов массива нужно создать и засунуть ♂deep♂ в массив: ')) except: print("Введите число и не ломайте программу, я ее мозгами писал") maxint = None while maxint == None: try: maxint = int(input('Введите, от какого числа будет заполняться массив: ')) except: print("Введите число и не ломайте программу, я ее мозгами писал") minint = None while minint == None: try: minint = int(input('Введите, до какого числа будет заполняться массив: ')) except: print("Введите число и не ломайте программу, я ее мозгами писал") interval = None while interval == None: try: interval = int(input('Введите интервал между числами: ')) except: print("Введите число и не ломайте программу, я ее мозгами писал") if fill_mode == 'replace': massives[current] = [] zapoln_bar = ChargingBar('Заполнение массива', max=needlen) prev = minint - interval for i in range(needlen): massives[current].append(prev + interval) prev += interval zapoln_bar.next() input("\nМассив заполнен") def fill_user(): global massives global current global fill_mode needlen = None while needlen == None: try: needlen = int(input('Введите, сколько элементов массива вы будете вводить и программа засунет их ♂deep♂ в массив: ')) except: print("Введите число и не ломайте программу, я ее мозгами писал") if fill_mode == 'replace': massives[current] = [] for i in range(needlen): add_this = None while add_this == None: try: add_this = int(input()) except: print("Введите число и не ломайте программу, я ее мозгами писал") massives[current].append(add_this) input("Массив заполнен") def sum_massives(): global massives global current input('Нажмите Enter, чтобы выбрать первый массив') massives_menu = {} for massive in list(massives): massives_menu[massive] = 'ezztui_return_value' first = ezztui.menu(massives_menu)[0] input('Нажмите Enter, чтобы выбрать второй массив') second = ezztui.menu(massives_menu)[0] print('Назовите новый массив.\n' 'Напомним, придумывайте основательное и глубокое название.\n' 'Не делайте название на 70 слайдов, ведь его сложно прочитать\n') name = input('Введите название: ') massives[name] = massives[first] + massives[second] def guess_game(): input('Это игра "угадай массив"\n' 'Тут вы должны угадать массив, зная его длину\n' 'Потом вы увидите совпадение с оригинальным массивом в процентах\n' 'Порядок в массиве не считается') length = random.randint(5, 10) input("Ваша задача ввести массив из " + str(length) + " чисел от 0 до 100") generated = list() for i in range(length): generated.append(random.randint(0, 100)) users = list() for i in range(length): add_this = None while add_this == None: try: add_this = int(input("Введите число: ")) except: print("Введите число и не ломайте программу, я ее мозгами писал") users.append(add_this) input("Ваш массив заполнен! Пришло время узнать, насколько вы ванга") print("Наш массив - " + str(generated)) sovpalo = len(list(set(users) & set(generated))) percent = (sovpalo/length) * 100 print("В двух массивах совпало " + str(sovpalo) + "! Это около " + str(percent) + "%") input("Чё, ванга?" if percent >= 70 else "Немного не угадал" if percent >= 50 else "Меньше половины" if percent >= 30 else "Не ванга") def sum_game(): input('Это игра "посчитай сумму"\n' 'Тут вы должны сложить все элементы массива и ввести сумму\n' 'Потом вы увидите правильный ответ') length = random.randint(5, 10) input("Ваша задача сложить массив из " + str(length) + " чисел от 0 до 10") generated = list() for i in range(length): generated.append(random.randint(0, 10)) real_sum = sum(generated) usr_sum = None print(generated) while usr_sum == None: try: usr_sum = int(input("Сложите все числа и введите число: ")) except: print("Введите число и не ломайте программу, я ее мозгами писал") print("Правильный ответ - " + str(real_sum)) input("Ты победил! Ответ правильный!" if usr_sum == real_sum else "Ответ неправильный(") def about(): pass def corvusTeam(): pass while True: choice = ezztui.menu(massivmenu) if choice[0] == 'Управление массивами': if choice[1] == 'Создать массив': ezztui.cls() create_massive() elif choice[1] == 'Выбрать текущий массив': ezztui.cls() choose_current() input("Теперь вы работаете с массивом " + current) elif choice[1] == 'Очистить массив': ezztui.cls() clear() input("Массив очищен") elif choice[1] == 'Удалить массив': ezztui.cls() delete() input("Массив удален") elif choice[1] == 'Управление основательными массивами': if choice[2] == 'Сохранить массивы глубоко на диск': ezztui.cls() save_disk('replace' if choice[3] == 'Сохранить с заменой' else 'merge') input("Закладка массива произошла") if choice[2] == 'Срезик массивов с диска': ezztui.cls() read_disk('replace' if choice[3] == 'Срезик с заменой' else 'merge') input("Закладку массива нашли и используют в металлургии") elif choice[0] == 'Заполнение массивов': if choice[1] == 'Режим заполнения': ezztui.cls() fill_mode = 'add' if choice[2] == 'Добавление' else 'replace' print('Используется метод "' + choice[2] + '" при заполнении') input() elif choice[1] == 'Заполнить массив случайными числами': ezztui.cls() fill_random() elif choice[1] == 'Заполнить массив по заданному интервалу': ezztui.cls() fill_interval() elif choice[1] == 'Заполнить массив вручную по крупицам': ezztui.cls() fill_user() elif choice[0] == 'Вывод массивов': if choice[1] == 'Вывести массив по одному элементу': ezztui.cls() try: for i in massives[current]: print(i) input() except: print("Возможно, у вас нет массивов или еще что-то не так") input("Не ломайте прогу, я ее по крупицам писал") elif choice[1] == 'Вывести массив одной строчкой': ezztui.cls() try: massiveline = '' for i in massives[current]: massiveline += str(i) + " " print(massiveline) input() except: print("Возможно, у вас нет массивов или еще что-то не так") input("Не ломайте прогу, я ее по крупицам писал") elif choice[1] == 'Вывести массив как список': ezztui.cls() try: print(massives[current]) input() except: print("Возможно, у вас нет массивов или еще что-то не так") input("Не ломайте прогу, я ее по крупицам писал") elif choice[0] == 'Действия с массивами': if choice[1] == 'Сложение массивов': ezztui.cls() sum_massives() elif choice[1] == 'Перемешать массив': ezztui.cls() try: random.shuffle(massives[current]) input('Кристалічну ґратку массива зруйновано') except: print("Возможно, у вас нет массивов или еще что-то не так") input("Не ломайте прогу, я ее по крупицам писал") elif choice[1] == 'Отсортировать массив': ezztui.cls() try: massives[current] = sorted(massives[current], reverse=False if choice[1] == 'По возрастанию' else True) input('Кристалічну ґратку массива відновлено') except: print("Возможно, у вас нет массивов или еще что-то не так") input("Не ломайте прогу, я ее по крупицам писал") elif choice[0] == 'Игры': if choice[1] == 'Игра "угадай массив"': ezztui.cls() guess_game() elif choice[1] == 'Игра "посчитай сумму" - на развитие толковейшей головы': ezztui.cls() sum_game() elif choice[0] == 'О программе': ezztui.cls() about() elif choice[0] == 'Выход' and choice[1] == 'KorvusTeam': ezztui.cls() corvusTeam()