В настоящее время я использую freecodecamp python и нуждаюсь в помощи в рефакторинге моего решения

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

Решение можно найти ниже:

import operator
ops = {"+": operator.add, "-": operator.sub, "*": operator.mul}


def arithmetic_arranger(problems, solver=False):
    # Check problems does not exceed the given max(5)
    if len(problems) > 5:
        return "Error: Too many problems."
    toptier = ""
    bottomtier = ""
    lines = ""
    totals = ""
    for n in problems:
        fnumber = n.split()[0]
        operator = n.split()[1]
        snumber = n.split()[2]

        # Handle errors for input:
        if operator != "+" and operator != "-":
            return "Error: Operator must be '+' or '-'."
        if not fnumber.isdigit() or not snumber.isdigit():
            return "Error: Numbers must only contain digits."
        if len(fnumber) > 4 or len(snumber) > 4:
            return "Error: Numbers cannot be more than four digits"

        # Get total of correct function
        total = ops[operator](int(fnumber), int(snumber))
        # Get distance for longest operator
        operatorDistance = max(len(fnumber), len(snumber)) + 2

        snumber = operator + snumber.rjust(operatorDistance - 1)
        toptier = toptier + fnumber.rjust(operatorDistance) + (4 * " ")
        bottomtier = bottomtier + snumber + (4 * " ")
        lines = lines + len(snumber) * "_" + (4 * " ")
        totals = totals + str(total).rjust(operatorDistance) + (4 * " ")
    if solver:
        print(toptier)
        print(bottomtier)
        print(lines)
        print(totals)


if __name__ == "__main__":
    arithmetic_arranger(["32 + 698", "3801 - 2", "45 + 43", "123 + 49"])

Чего вы пытаетесь достичь, «рефакторируя» его?

Abhinav Mathur 15.05.2022 20:41

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

Xanik 15.05.2022 20:45

Если ваш код работает, но вы просто хотите написать «лучший» код, который делает то же самое, это, вероятно, следует задать в codereview.stackexchange.com. Там вы найдете много очень полезных людей с большим количеством хороших советов.

Stef 15.05.2022 20:47

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

Xanik 15.05.2022 20:52
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
4
23
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Сообщение перенесено в сообщество CodeReview, так как оно уже работает, и мне просто нужна помощь в его рефакторинге. Если интересно, нажмите здесь, чтобы подписаться и помочь вместо этого :)

Другие вопросы по теме