Форум сайта python.su
Напишите программу, которая уменьшает размер программ, написанных на Питоне (без использования некоторых возможностей языка).
Программа считывает количество строк, затем — сами эти строки по очереди. Каждая строка выводится, но в изменённом виде:
если следуют несколько пробелов подряд не в начале строки, то нужно оставить только один пробел;
если встретился символ комментария #, то его и всё, что за ним, выводить не нужно;
если лишние пробелы или символ комментария встретились внутри (одинарных) кавычек, то ничего убирать или менять в них не надо;
если после кавычки встретилась ещё одна кавычка, то она закрывает первую лишь в том случае, если перед ней не стоит обратный слэш, не экранированный другим обратным слэшем (гарантируется, что за пределами кавычек и комментариев обратный слэш не встречается).
Если ввод и вывод программы осуществляется через одну и ту же консоль, ввод и вывод будет перемешан; это не помешает разделению ввода и вывода при автоматической проверке, поэтому беспокоиться об этом не нужно.
Формат ввода
На первой строке вводится количество строк в программе.
Далее — сама программа.
Формат вывода
Программа, сокращённая по описанным в условии правилам.
Пример 1
Ввод
1
print ('Привет')#поздороваемся
Вывод
print ('Привет')
Пример 2
Ввод
6
easy = 2 + 2
if easy == 4:# А вдруг нет?
print('Квадрат с обрезанными углами:')
print('/-\\')
print('|#|')
print('\\_/')
easy = 2 + 2
if easy == 4:
print('Квадрат с обрезанными углами:')
print('/-\\')
print('|#|')
print('\\_/')
Отредактировано ArtemDav (Дек. 31, 2018 13:54:22)
Офлайн
У меня хорошее настроение, так что держи код целиком
sym = '\\' for i in range(int(input())): a = input() p = 0 string = '' flag = True for x in range(len(a)): if a[x] == ' ' and a[x + 1] == ' ': p += 1 else: break for j in range(len(a)): if not flag: string += a[j] elif a[j] == ' ' and a[j + 1] != ' ' and flag and a[j]: string += a[j] elif flag and a[j] != ' ': string += a[j] if a[j] == "'" and flag: flag = False elif not flag and a[j] == "'" and a[j - 1] != sym[0]: flag = True elif not flag and a[j] == "'" and a[j - 1] == sym[0]: if a[j - 2] == sym[0]: flag = True if a[j] == '#' and flag: string = string[:-1] break print((' ' * p) + string)
Офлайн