Задача Минификатор

Напишите программу, которая уменьшает размер программ, написанных на Питоне (без использования некоторых возможностей языка).

Программа считывает количество строк, затем — сами эти строки по очереди. Каждая строка выводится, но в изменённом виде:

если следуют несколько пробелов подряд не в начале строки, то нужно оставить только один пробел; если встретился символ комментария #, то его и всё, что за ним, выводить не нужно; если лишние пробелы или символ комментария встретились внутри (одинарных) кавычек, то ничего убирать или менять в них не надо; если после кавычки встретилась ещё одна кавычка, то она закрывает первую лишь в том случае, если перед ней не стоит обратный слэш, не экранированный другим обратным слэшем (гарантируется, что за пределами кавычек и комментариев обратный слэш не встречается). Если ввод и вывод программы осуществляется через одну и ту же консоль, ввод и вывод будет перемешан; это не помешает разделению ввода и вывода при автоматической проверке, поэтому беспокоиться об этом не нужно.

Формат ввода На первой строке вводится количество строк в программе. Далее — сама программа.

Формат вывода Программа, сокращённая по описанным в условии правилам.

Вот почти работающий код:

a = ""
for i in range(int(input())):
    a = input()
    if "#" in a and "'" not in a[a.find("#"):]:
        a = a[:a.find("#")]

    if '#' in a:
        if '\'' not in a[:a.index('#')]:
            a = a[:a.index('#')]

    if a[:4] != "    ":
        b = ""
        for j in range(len(a) - 1):
            if a[j] == " " and a[j + 1] == " " or a[j] == " " and a[j + 1] == " ":
                if "'" not in a[a.find(a[j]):] and "'" not in a[:a.find(a[j])]:
                    pass
            else:
                b += a[j]
        a = b
    print(a)

Вот пример:

Ввод:

for i  in range(1,   20):    # 'цик'л
    print(    i    )        #c кучей 'коммент\'ариев'
    print('  #  ')
    if True:
        print('  \',   \'  '  )
print('\t'  )# это, кстати, символ табуляции
print('\\'   )

Вывод:

for i in range(1, 20): 
    print( i ) 
    print('  #  ')
    if True:
        print('  \',   \'  ' )
print('\t' )
print('\\' )

в этом случае у меня ошибка


Ответы (0 шт):