Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 18, 2014 23:01:40

XoLMs
Зарегистрирован: 2014-11-18
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Помощь с домашней работой

Человеки, помогите, пожалуйста! Это моя домашняя работа!
Написать программу, вызывающую по заказу пользователя одну из двух подпрограмм и выводящую протокол действий в текстовый файл.

Пользователь может выбирать одну из следующих команд:

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).
Первая подпрограмма рисует самый большой квадрат красным, все остальные синим цветом.

Вторая программа рисует окружности с радиусом больше среднего красными, остальные синими.

При составлении программы используйте функции.

Спасибо заранее!!
Нужно даже не код написать, а хотя бы объяснить, как это делать и в какую сторону двигаться

Офлайн

#2 Ноя. 18, 2014 23:56:24

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Помощь с домашней работой

python 2 или 3?



————————————————
-*- Simple is better than complex -*-

Офлайн

#3 Ноя. 19, 2014 00:10:50

XoLMs
Зарегистрирован: 2014-11-18
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Помощь с домашней работой

terabayt
python 2 или 3?
3

Офлайн

#4 Ноя. 19, 2014 00:15:28

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Помощь с домашней работой

A, B, L, X только большие или и с маленькими также?



————————————————
-*- Simple is better than complex -*-

Офлайн

#5 Ноя. 19, 2014 00:16:36

XoLMs
Зарегистрирован: 2014-11-18
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Помощь с домашней работой

terabayt
A, B, L, X только большие или и с маленькими также?
с маленькими так же

Офлайн

#6 Ноя. 19, 2014 00:23:52

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Помощь с домашней работой

Еси неправильная команда помимо протокола на экран должно выводится сообщение?



————————————————
-*- Simple is better than complex -*-

Офлайн

#7 Ноя. 19, 2014 00:25:29

XoLMs
Зарегистрирован: 2014-11-18
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Помощь с домашней работой

terabayt
Еси неправильная команда помимо протокола на экран должно выводится сообщение?
5.11.2014 12:55:00 - введена команда D
5.11.2014 12:55:01 - ошибка: неправильная команда D

вот так вот должно быть

Офлайн

#8 Ноя. 19, 2014 01:49:24

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Помощь с домашней работой

#-*- 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

я уже и забыл как прикольно гонять черепашку))



————————————————
-*- Simple is better than complex -*-

Отредактировано terabayt (Ноя. 19, 2014 01:58:51)

Офлайн

#9 Ноя. 19, 2014 02:31:05

XoLMs
Зарегистрирован: 2014-11-18
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Помощь с домашней работой

terabayt
а можно у вас ваши контакты попросить?

Офлайн

#10 Ноя. 19, 2014 18:58:22

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Помощь с домашней работой

python36@yandex.ru



————————————————
-*- Simple is better than complex -*-

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version