Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/99: Рейтинг темы: голосов - 99, средняя оценка - 4.69
2 / 2 / 0
Регистрация: 11.12.2018
Сообщений: 19

Оформленные комментарии

17.03.2019, 23:13. Показов 20725. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задание:
При помощи итераторов и функций высшего порядка выведите список комментариев с указанием номера строки у каждого из них (нумерация строк с единицы).

Знаки решетки и пробелы в начале строки (а также в начале комментария – после символа решётки) отбросьте. Также отбросьте пробелы и символы табуляции, если они встречаются в конце строки.
Оформление строки вывода сделайте аналогично примеру. Пробел между двоеточием и комментарием не должен зависеть от содержания комментария (так как лидирующие и замыкающие пробелы в строке комментария отбрасываются).

Пример

Ввод:
import sys
for line in sys.stdin:
# rstrip(’\n’) "отрезает" от строки line,
# идущий справа символ перевода строки,
# ведь print сам переводит строку
print(line.rstrip(’\n’))

Вывод:
Line 3: rstrip(’\n’) "отрезает" от строки line,
Line 4: идущий справа символ перевода строки,
Line 5: ведь print сам переводит строку

Мой код:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import sys
count = 0
newlst = []
 
data = list(map(str.strip, sys.stdin))
 
for i in data:
    count += 1
    if '#' in i:
        i = i.split()
        for y in i:
            if y == '#':
                i.remove(y)
                newlst.append(i)
                print('Line ' + str(count) + ': ' + ' '.join(i), sep='\t', end='\n')
    else:
        i = i.split()
        for j in i:
            j = j.split()
            for x in j:
                if x == '#':
                    j.remove(x)
                    newlst.append(i)
                    print('Line ' + str(count) + ': ' + ' '.join(i), sep='\t', end='\n')
прошу прощения за свой быдлокод. Проблема в том, что тест из примера у меня проходит нормально, но если строка будет такой:
#rstrip(’\n’) "отрезает" от строки line,
то она не выводится. Как это исправить?

P.S Если что-то непонятно объяснил, то скажите, пожалуйста, исправлюсь.
1
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.03.2019, 23:13
Ответы с готовыми решениями:

Оформленные комментарии
При помощи итераторов и функций высшего порядка выведите список комментариев с указанием номера строки у каждого из них (нумерация строк с...

Оформленные комментарии
При помощи итераторов и функций высшего порядка выведите список комментариев с указанием номера строки у каждого из них (нумерация строк с...

Оформленные комментарии
При помощи итераторов и функций высшего порядка выведите список комментариев с указанием номера строки у каждого из них (нумерация строк с...

17
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
19.03.2019, 13:57
Чем отличается эта ваша строка?
Вы лучше сделайте отдельную функцию для вычленения комментария, легче проверять будет.
0
2 / 2 / 0
Регистрация: 11.02.2020
Сообщений: 5
11.02.2020, 21:58
Тебя просят решить задачу с итераторами и функциями высшего порядка, а ты делаешь перебором. Так не пойдёт. У меня тоже программа не очень, но хотя бы так. Надеюсь, это тебе хоть чем-то поможет.
Python
1
2
3
4
5
6
import sys
 
data = list(filter(lambda line: line.lstrip().startswith("#"), sys.stdin))
for index, line in enumerate(data):
    if line.lstrip().startswith('#'):
        print('Line {}:{}'.format(index + 1, line.strip().lstrip('#')))
1
 Аватар для Vigi
641 / 481 / 179
Регистрация: 28.05.2012
Сообщений: 1,419
12.02.2020, 04:16
Jayday, Вы на дату создания поста обращали внимание?
0
2 / 2 / 0
Регистрация: 11.02.2020
Сообщений: 5
12.02.2020, 18:39
Vigi, Да, но вдруг есть те, кто сейчас ищут ту же информацию. Вдруг у них та же проблема, тем более решение так и не было найдено(
1
11 / 10 / 1
Регистрация: 23.02.2020
Сообщений: 63
01.03.2020, 17:20
Цитата Сообщение от Jayday Посмотреть сообщение
Vigi, Да, но вдруг есть те, кто сейчас ищут ту же информацию. Вдруг у них та же проблема, тем более решение так и не было найдено(
У вас в коде нет проверки на количество строк перед комментариями. Подскажите как реализовать
0
243 / 178 / 73
Регистрация: 17.10.2018
Сообщений: 749
02.03.2020, 00:24
Цитата Сообщение от owNer0ff Посмотреть сообщение
У вас в коде нет проверки на количество строк перед комментариями. Подскажите как реализовать
Что значит проверка на количество строк?
Если номер строки так вот
Цитата Сообщение от Jayday Посмотреть сообщение
in enumerate(data):
0
11 / 10 / 1
Регистрация: 23.02.2020
Сообщений: 63
02.03.2020, 09:12
Цитата Сообщение от Lekks Посмотреть сообщение
Что значит проверка на количество строк?
Если номер строки так вот
Нумерация всегда начинается с единицы, даже если до самих комментарием идут несколько строк
Миниатюры
Оформленные комментарии  
1
243 / 178 / 73
Регистрация: 17.10.2018
Сообщений: 749
02.03.2020, 13:06
Цитата Сообщение от Jayday Посмотреть сообщение
data = list(filter(lambda line: line.lstrip().startswith("#"), sys.stdin))
Вот здесь startswith уберите
1
 Аватар для GulgDev
132 / 118 / 29
Регистрация: 09.07.2019
Сообщений: 1,071
02.03.2020, 13:57
Bigfartyk,
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import re
def get_code():
    code = ''
    line = ''
    while line != '\n':
        code += line
        line = input() + '\n'
    return code;
def format_comments(code):
    for lineno, line in enumerate(code.splitlines(), 1):
        yield f'Line {lineno}:{re.search(r"#(.+)", line)[1]}';
def print_comments(code):
    print(*format_comments(code),sep='\n')
def print_code_comments():
    code = get_code()
    print_comments(code)
print_code_comments()
1
11 / 10 / 1
Регистрация: 23.02.2020
Сообщений: 63
03.03.2020, 08:54
Цитата Сообщение от Lekks Посмотреть сообщение
Вот здесь startswith уберите
Вышло как то так
Миниатюры
Оформленные комментарии  
0
243 / 178 / 73
Регистрация: 17.10.2018
Сообщений: 749
03.03.2020, 10:58
Цитата Сообщение от owNer0ff Посмотреть сообщение
Вышло как то так
А что смайлик грустный? вроде все как надо)))
0
11 / 10 / 1
Регистрация: 23.02.2020
Сообщений: 63
03.03.2020, 13:29
Цитата Сообщение от Lekks Посмотреть сообщение
А что смайлик грустный? вроде все как надо)))
Посмотрите внимательно. Первый комментарий без пробела
0
243 / 178 / 73
Регистрация: 17.10.2018
Сообщений: 749
03.03.2020, 13:48
Цитата Сообщение от Jayday Посмотреть сообщение
print('Line {}:{}'.format(index + 1, line.strip().lstrip('#')))
Замените на print('Line {}: {}'.format(index + 1, line.lstrip('#').strip()))

Блин, ну это же уже нетрудно!!!
0
11 / 10 / 1
Регистрация: 23.02.2020
Сообщений: 63
03.03.2020, 16:36
Я еще долго мучился и решение оказалось вот таким. В любом случае спасибо!
Миниатюры
Оформленные комментарии  
0
243 / 178 / 73
Регистрация: 17.10.2018
Сообщений: 749
03.03.2020, 18:28
Цитата Сообщение от owNer0ff Посмотреть сообщение
решение оказалось вот таким
Можно и так конечно )))
0
0 / 0 / 0
Регистрация: 29.03.2022
Сообщений: 3
29.03.2022, 11:55
import sys
c = []
data = sys.stdin.readlines()
for i in data:
if '#' in i:
x = data.index(i) + 1
x = str(x) + ':'
nim = i.index('#') + 1
if i[nim:][0] != ' ':
rig = ' ' + i[nim:]
orig = x + rig
c.append(orig)
else:
orig = x + i[nim:]
c.append(orig)
for a in c:
print('Line', a.rstrip())
0
0 / 0 / 0
Регистрация: 09.03.2024
Сообщений: 1
09.03.2024, 14:23
код от D1MMON, но с пробелами

import sys


c = []
data = sys.stdin.readlines()

for i in data:
if '#' in i:
x = data.index(i) + 1
x = str(x) + ':'
nim = i.index('#') + 1
if i[nim:][0] != ' ':
rig = ' ' + i[nim:]
orig = x + rig
c.append(orig)
else:
orig = x + i[nim:]
c.append(orig)
for a in c:
print('Line', a.rstrip())

Добавлено через 1 минуту
спасибо за помощь
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.03.2024, 14:23
Помогаю со студенческими работами здесь

Оформленные комментарии
При помощи итераторов и функций высшего порядка выведите список комментариев с указанием номера строки у каждого из них (нумерация строк с...

Оформленные комментарии
При помощи итераторов и функций высшего порядка выведите список комментариев с указанием номера строки у каждого из них (нумерация строк с...

Выберите правильно оформленные комментарии
Выберите правильно оформленные комментарии: <!-- не_закрывать_теги --> /* не-закрывать-теги! */ // не закрывать! ] <!--...

Получить цены всех кубиков, оформленные по образцу … руб. … коп.
Дан файл f, содержащий сведения об игрушках: указывается название игрушки (например, кукла, кубики, мяч, конструктор и т. д.), ее стоимость...

Выбрать все заказы, оформленные на одного сотрудника и отобразить их в DataGridView
Всем привет. Подскажите как сделать такое вот на C# и для моего проекта? Например запрос выбрать все заказы оформленные на одного...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru