Найти - Пользователи
Полная версия: Прошу пару советов по коду
Начало » Python для новичков » Прошу пару советов по коду
1
NickC
Написал программу для лабораторной работы по дискретной математике: “Представление графов в памяти ЭВМ”. Мне кажется, код ужасен, работать конечно будет, но можно ведь намного лучше и короче?
Версия языка: 3.3 http://paste.org.ru/?w3r01n
Заранее спасибо за исправления и советы!
py.user.next
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
NickC
Функции типа MItoMS получают как аргумент конвертированную информацию из textFrame'a. Т.е. в textFrame'e всё хранится как строка, а потом переводится в матрицы/списки для конвертирования в другой формат.
graphType это тип графа, который на данный момент содержится в textFrame'e.
py.user.next
код должен быть написан так, чтобы любой незнакомый человек мог его понять, не задумываясь
ты сам этим незнакомым человеком станешь, когда откроешь его через пару лет
NickC
Вот поэтому я и хочу понять, как правильно его форматировать, как называть переменные, где какие структуры данных использовать. Поэтому я прошу дать советы по приведенному коду.
py.user.next
NickC
как правильно его форматировать, как называть переменные
python.org. pep8

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

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

NickC
Поэтому я прошу дать советы по приведенному коду.
ты просишь за пять минут объяснить то, что требует недель изучения
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