Уведомления

Группа в Telegram: @pythonsu

#1 Март 9, 2014 17:44:49

NickC
Зарегистрирован: 2014-03-09
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Прошу пару советов по коду

Написал программу для лабораторной работы по дискретной математике: “Представление графов в памяти ЭВМ”. Мне кажется, код ужасен, работать конечно будет, но можно ведь намного лучше и короче?
Версия языка: 3.3 http://paste.org.ru/?w3r01n
Заранее спасибо за исправления и советы!

Прикреплённый файлы:
attachment screenshot.60.jpg (89,9 KБ)

Офлайн

#2 Март 9, 2014 21:36:48

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Прошу пару советов по коду

NickC
screenshot.60.jpg (89,9 KБ)

wiki. матрица инцидентности
В каждом столбце должны стоять две единицы (либо 1 и -1 в случае ориентированного графа), а все остальные символы — нули.

NickC
но можно ведь намного лучше

def MItoMS(MI):
    vertices = len(MI[0])
    MS = [[0]*vertices for i in range(vertices)]
    if graphType.get():
        for string in MI:
            for j in range(len(string)):
                if (string[j]==-1): startVertex = j
                if (string[j]==1): endVertex = j
            MS[startVertex][endVertex] = 1
            print(startVertex)
            print(endVertex)
    else:
        for string in MI:
            for j in range(string.index(1)+1, len(string)):
                if string[j]: MS[string.index(1)][j], MS[j][string.index(1)] = 1, 1
    return MS
что за graphType ?
глобальная переменная

NickC
def MatriceToText(matrice):
wiki. matrix



Отредактировано py.user.next (Март 9, 2014 21:38:23)

Офлайн

#3 Март 9, 2014 22:23:45

NickC
Зарегистрирован: 2014-03-09
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Прошу пару советов по коду

Функции типа MItoMS получают как аргумент конвертированную информацию из textFrame'a. Т.е. в textFrame'e всё хранится как строка, а потом переводится в матрицы/списки для конвертирования в другой формат.
graphType это тип графа, который на данный момент содержится в textFrame'e.

Отредактировано NickC (Март 9, 2014 22:27:16)

Офлайн

#4 Март 9, 2014 22:41:02

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Прошу пару советов по коду

код должен быть написан так, чтобы любой незнакомый человек мог его понять, не задумываясь
ты сам этим незнакомым человеком станешь, когда откроешь его через пару лет



Офлайн

#5 Март 9, 2014 22:57:02

NickC
Зарегистрирован: 2014-03-09
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Прошу пару советов по коду

Вот поэтому я и хочу понять, как правильно его форматировать, как называть переменные, где какие структуры данных использовать. Поэтому я прошу дать советы по приведенному коду.

Офлайн

#6 Март 9, 2014 23:18:59

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Прошу пару советов по коду

NickC
как правильно его форматировать, как называть переменные
python.org. pep8

NickC
где какие структуры данных использовать
это всё должно быть в классе

NickC
Поэтому я прошу дать советы по приведенному коду.
приведённый код написан в процедурном стиле - значит, глобальных переменных быть не должно (замени их на переданные)
в ООП стиле они могут так использоваться, но не как глобальные, а как атрибуты экземпляра, доступные через self

NickC
Поэтому я прошу дать советы по приведенному коду.
ты просишь за пять минут объяснить то, что требует недель изучения



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version