Форум сайта python.su
Человеки, помогите, пожалуйста! Это моя домашняя работа!
Написать программу, вызывающую по заказу пользователя одну из двух подпрограмм и выводящую протокол действий в текстовый файл.
Пользователь может выбирать одну из следующих команд:
A - выполнение подпрограммы 1;
B - выполнение подпрограммы 2;
L - вывод на экран протокола;
X - окончание работы.
Необходимо проверять правильность вводимой команды.
Протокол
Каждое действие пользователя, в том числе неправильное, и реакция программы фиксируется в протоколе с указанием времени (см. модуль datetime).
Например:
5.11.2014 12:52:00 - введена команда A
5.11.2014 12:52:01 - вызвана подпрограмма 1
5.11.2014 12:55:00 - введена команда D
5.11.2014 12:55:01 - ошибка: неправильная команда D
5.11.2014 12:57:00 - введена команда L
5.11.2014 12:57:02 - выведен протокол
5.11.2014 12:58:00 - введена команда X
5.11.2014 12:58:01 - работа закончена
Для всех запусков программы создаётся общий протокол, при каждом новом запуске он дополняется новыми записями.
Дополнительно 2 балла можно получить, если для вывода протокола программа предварительно просит пользователя ввести имя пользователя и пароль и сравнивает их с данными, сохранёнными в отдельном файле.
Подпрограммы
Первая подпрограмма рисует средствами turtle пять квадратов, вторая - пять окружностей.
Обе подпрограммы генерируют три комплекта случайных целых чисел:
координаты x (значения от 10 до 100);
координаты y (значения от 10 до 100);
длины сторон квадратов или радиусы окружностей (значения от 50 до 200).
Первая подпрограмма рисует самый большой квадрат красным, все остальные синим цветом.
Вторая программа рисует окружности с радиусом больше среднего красными, остальные синими.
При составлении программы используйте функции.
Спасибо заранее!!
Нужно даже не код написать, а хотя бы объяснить, как это делать и в какую сторону двигаться
Офлайн
python 2 или 3?
Офлайн
terabayt3
python 2 или 3?
Офлайн
A, B, L, X только большие или и с маленькими также?
Офлайн
terabaytс маленькими так же
A, B, L, X только большие или и с маленькими также?
Офлайн
Еси неправильная команда помимо протокола на экран должно выводится сообщение?
Офлайн
terabayt5.11.2014 12:55:00 - введена команда D
Еси неправильная команда помимо протокола на экран должно выводится сообщение?
Офлайн
#-*- coding: utf-8 -*- import datetime, random, turtle def write_log(string): with open("log", 'a') as f: f.write("%s - %s\n" % (datetime.datetime.now().strftime("%d.%m.%Y %H:%M:%S"), string)) def random_int(): return [random.randint(50, 200) for i in range(3)] def draw_cube(z): turtle.tracer(1) turtle.reset() turtle.color("red") for i in range(len(z)): turtle.up() turtle.goto(random.randint(10, 100), random.randint(10, 100)) turtle.down() for j in range(3): turtle.forward(z[i]) turtle.left(90) turtle.forward(z[i]) turtle.color("blue") turtle.up() turtle.goto(-800, -800) turtle.getscreen()._root.mainloop() def draw_circle(z, s): turtle.tracer(1) turtle.reset() for i in range(len(z)): turtle.up() turtle.goto(random.randint(10, 100), random.randint(10, 100)-200) if z[i] > s: turtle.color("red") else: turtle.color("blue") turtle.down() turtle.circle(z[i]) turtle.up() turtle.goto(-800, -800) turtle.getscreen()._root.mainloop() def sub_a(): write_log("вызвана подпрограмма 1") z = random_int() z.sort() z.reverse() draw_cube(z) def sub_b(): write_log("вызвана подпрограмма 2") z = random_int() s = sum(z)/3 draw_circle(z, s) while True: c = input("Command: ") cl = c.lower() if cl == "x": write_log("введена комманда " + c) write_log("работа закончена") exit() elif cl == "l": try: with open("passw", 'r') as f: login = f.readline().split()[0] passw = f.readline().split()[0] try: inp_login = input("Login: ") inp_passw = input("Password: ") if inp_login == login and inp_passw == passw: with open("log", 'r') as f: print(f.read()) except FileNotFoundError: print("Файл не найден :(") except FileNotFoundError: print("Файл с паролем не найден :(") elif cl == "a": write_log("введена команда " + c) sub_a() elif cl == "b": write_log("введена команда " + c) sub_b() else: write_log("ошибка: неправильная команда " + c)
python36 - login
m2317 - password
Отредактировано terabayt (Ноя. 19, 2014 01:58:51)
Офлайн
terabaytа можно у вас ваши контакты попросить?
Офлайн
Офлайн