Рубрики
Без рубрики

О, черт возьми, я снова веду блог

пыль с плеч Так что прошло много времени с тех пор, как я это сделал. Правильно, я снова веду блог. PR … Tagged with Python, написание.

пыль с плеч

Так что прошло много времени с тех пор, как я это сделал.

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

Серьезно, я не буду слишком шутить о том, чтобы я вернусь к старому блогом.

Поскольку это официально 1 декабря, который постоянно пугает меня, потому что я не ожидал, что это произойдет так быстро, Появление кода начал.

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

Это первый день, поэтому текст для вызова был выпущен. Вы можете прочитать День 1 вызов здесь. Обязательно прочитайте его, прежде чем продолжить остальную часть сообщения в блоге.

Хорошо. Готовый? Пойдем.

Основная проблема здесь заключается в том, что с учетом файла с разрешением с новой строкой со списком чисел с «+» или «-» мы хотим выяснить, какое полученное число будет после того, как все числа были суммированы или вычтены, начиная с 0.

Я сохранил данные в файл с именем частота.txt И я буду использовать его на протяжении всего кода. Для этого первого вызова я начну с знакомого и обновленного языка: Python. Это был первый язык программирования (кроме HTML и CSS), который я узнал в качестве подростка. Это кажется уместным использовать его здесь.

Я начал с внедрения довольно наивного решения. Я прочитал файл в структуру данных списка, зацикленную через строки, проверил, чтобы увидеть, началась ли строка с «-» или «+» добавить выполненные следующие вычисления. Вот как выглядит код для этого.

with open("frequencies.txt") as frequencies:
    result = 0
    numbers = frequencies.read().splitlines()
    for number in numbers:
        if number.startswith("-"):
            number_as_int = int(number[1:])
            result -= number_as_int
        elif number.startswith("+"):
            number_as_int = int(number[1:])
            result += number_as_int
        else:
            raise Exception("{} is not in the valid format.".format(number))
    print(result)

Этот код верен, я подтвердил результат, который я получил против страницы «Появление кода», чтобы подтвердить это. Есть ли способ сделать это лучше?

Теперь, как правило, это часть в этих сообщениях в блоге, где кто -то выясняет некоторую умную оптимизацию для кода или использует некоторые специальные языковые функции, чтобы уменьшить строки кода. Как разработчик с открытым исходным кодом и Avid Code Reader, я всегда предпочитаю, чтобы код был читаемым. Любое изменение, которое я внесу в код, должно было бы сохранить читаемость кода.

Как выясняется, я могу уйти с удалением .startSwith Логика в кодовой базе. Python’s int Функция может обрабатывать преобразование числовых строк с любым знаком. Таким образом, это соответствующим образом обрабатывает преобразование “+2” и “-3”. Зная это, код может быть обрезан до кода ниже.

with open("frequencies.txt") as frequencies:
    result = 0
    numbers = frequencies.read().splitlines()
    for number in numbers:
        result += int(number)
    print(result)

Ну, разве это не аккуратно! Это все еще довольно читаемо. Вы не упускаете смысл кода, очень быстро просматривая его. Мне нравится это.

Я мог бы использовать еще одну функцию Python здесь, понимание списка, чтобы сделать код еще более лаконичным. Вот как это будет выглядеть.

with open("frequencies.txt") as frequencies:
    result = sum([int(number) for number in frequencies.read().splitlines()])
    print(result)

Теперь именно здесь я лично нарисую линию. Этот код выполняет работу? Да. Это красиво и коротки? Да. Легко ли понять, что здесь происходит из быстрой скопления? Эхххххххххххххх.

Если бы я выбрал итерацию, которую я бы выбрал, я бы, вероятно, выбрал вторую. Он легко уравновешивает белое пространство и переменные именования и не переусердствует с использованием специфичных для языка функций.

Кто -то, кто никогда не читал Python раньше, но имеет опыт программирования опыта, может довольно легко, не так легко, не столько второе. Я думаю, что это одна из самых важных вещей в хорошем коде: его следует легко читать и понимать, пока кто -то понимает основные понятия программирования.

ХОРОШО. Этого достаточно проповедь за один день. Надеюсь, вам понравилось читать это. Если вы хотите увидеть решения и попробовать их самостоятельно, вы можете проверить Это GitHub Repo Анкет

До завтра!

Оригинал: “https://dev.to/captainsafia/oh-gosh-im-blogging-again-3n53”