Files
roflProjects/massivSimulator/massivSimulator.py
2021-11-26 21:44:32 +02:00

330 lines
14 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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('Назовите массив.'
'Придумывайте основательное и глубокое название.'
'Не делайте название на 70 слайдов, ведь его сложно прочитать')
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)
def clear():
global massives
massives_menu = {}
for massive in list(massives):
massives_menu[massive] = 'ezztui_return_value'
toclear = ezztui.menu(massives_menu)
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)
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("Массив заполнен")
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("Массив заполнен")
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
def guess_game():
pass
def sum_game():
pass
def about():
pass
def corvusTeam():
pass
while True:
choice = ezztui.menu(massivmenu)
if choice[0] == 'Управление массивами':
if choice[1] == 'Создать массив':
create_massive()
elif choice[1] == 'Выбрать текущий массив':
choose_current()
input("Теперь вы работаете с массивом " + current)
elif choice[1] == 'Очистить массив':
clear()
input("Массив очищен")
elif choice[1] == 'Удалить массив':
delete()
input("Массив удален")
elif choice[1] == 'Управление основательными массивами':
if choice[2] == 'Сохранить массивы глубоко на диск':
save_disk('replace' if choice[3] == 'Сохранить с заменой' else 'merge')
input("Закладка массива произошла")
if choice[2] == 'Срезик массивов с диска':
read_disk('replace' if choice[3] == 'Срезик с заменой' else 'merge')
input("Закладку массива нашли и используют в металлургии")
elif choice[0] == 'Заполнение массивов':
if choice[1] == 'Режим заполнения':
fill_mode = 'add' if choice[2] == 'Добавление' else 'replace'
print('Используется метод "' + choice[2] + '" при заполнении')
input()
elif choice[1] == 'Заполнить массив случайными числами':
fill_random()
elif choice[1] == 'Заполнить массив по заданному интервалу':
fill_interval()
elif choice[1] == 'Заполнить массив вручную по крупицам':
fill_user()
elif choice[0] == 'Вывод массивов':
if choice[1] == 'Вывести массив по одному элементу':
try:
for i in massives[current]:
print(i)
input()
except:
print("Возможно, у вас нет массивов или еще что-то не так")
input("Не ломайте прогу, я ее по крупицам писал")
elif choice[1] == 'Вывести массив одной строчкой':
try:
massiveline = ''
for i in massives[current]:
massiveline += str(i)
print(massiveline)
input()
except:
print("Возможно, у вас нет массивов или еще что-то не так")
input("Не ломайте прогу, я ее по крупицам писал")
elif choice[1] == 'Вывести массив как список':
try:
print(massives[current])
input()
except:
print("Возможно, у вас нет массивов или еще что-то не так")
input("Не ломайте прогу, я ее по крупицам писал")
elif choice[0] == 'Действия с массивами':
if choice[1] == 'Сложение массивов':
sum_massives()
elif choice[1] == 'Перемешать массив':
try:
random.shuffle(massives[current])
input('Кристалічну ґратку массива зруйновано')
except:
print("Возможно, у вас нет массивов или еще что-то не так")
input("Не ломайте прогу, я ее по крупицам писал")
elif choice[1] == 'Отсортировать массив':
try:
massives[current] = sorted(massives[current], reverse=False if choice[1] == 'По возрастанию' else True)
input('Кристалічну ґратку массива відновлено')
except:
print("Возможно, у вас нет массивов или еще что-то не так")
input("Не ломайте прогу, я ее по крупицам писал")
elif choice[0] == 'Игры':
if choice[1] == 'Игра "угадай массив"':
guess_game()
elif choice[1] == 'Игра "посчитай сумму" - на развитие толковейшей головы':
sum_game()
elif choice[0] == 'О программе':
about()
elif choice[0] == 'Выход' and choice[1] == 'KorvusTeam':
corvusTeam()