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

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

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
python 2 или 3?
XoLMs
terabayt
python 2 или 3?
3
terabayt
A, B, L, X только большие или и с маленькими также?
XoLMs
terabayt
A, B, L, X только большие или и с маленькими также?
с маленькими так же
terabayt
Еси неправильная команда помимо протокола на экран должно выводится сообщение?
XoLMs
terabayt
Еси неправильная команда помимо протокола на экран должно выводится сообщение?
5.11.2014 12:55:00 - введена команда D
5.11.2014 12:55:01 - ошибка: неправильная команда D

вот так вот должно быть
terabayt
#-*- 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
terabayt
а можно у вас ваши контакты попросить?
terabayt
python36@yandex.ru
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB