XoLMs
Ноя. 18, 2014 23:01:40
Человеки, помогите, пожалуйста! Это моя домашняя работа!
Написать программу, вызывающую по заказу пользователя одну из двух подпрограмм и выводящую протокол действий в текстовый файл.
Пользователь может выбирать одну из следующих команд:
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).
Первая подпрограмма рисует самый большой квадрат красным, все остальные синим цветом.
Вторая программа рисует окружности с радиусом больше среднего красными, остальные синими.
При составлении программы используйте функции.
Спасибо заранее!!
Нужно даже не код написать, а хотя бы объяснить, как это делать и в какую сторону двигаться
terabayt
Ноя. 19, 2014 00:15:28
A, B, L, X только большие или и с маленькими также?
terabayt
Ноя. 19, 2014 00:23:52
Еси неправильная команда помимо протокола на экран должно выводится сообщение?
XoLMs
Ноя. 19, 2014 00:25:29
terabayt
Еси неправильная команда помимо протокола на экран должно выводится сообщение?
5.11.2014 12:55:00 - введена команда D
5.11.2014 12:55:01 - ошибка: неправильная команда D
вот так вот должно быть
terabayt
Ноя. 19, 2014 01:49:24
#-*- 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)
создать файл passw
пример, что у меня в этом файле:
python36 - login
m2317 - password
я уже и забыл как прикольно гонять черепашку))
XoLMs
Ноя. 19, 2014 02:31:05
terabayt
а можно у вас ваши контакты попросить?