Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Программирование Python, помогите с решением задачи

Анастасия Корнева Ученик (96), открыт 3 дня назад
help me please!
В данном упражнении вам предстоит написать программу, которая будет удалять все комментарии из исходного файла с кодом на языке Python. Пройдите по всем строкам в файле на предмет поиска символа #. Обнаружив его, программа должна удалить все содержимое, начиная с этого символа и до конца строки. Для простоты не будем рассматривать ситуации, когда знак решетки встречается в середине строки. Сохраните новое содержимое в созданном файле. Имена файла источника и файла назначения должны быть запрошены у пользователя. Удостоверьтесь в том, что программа корректно обрабатывает возможные ошибки при работе с обоими файлами.
3 ответа
Клод Мастер (1374) 3 дня назад
def remove_comments():
try:
# Запрашиваем у пользователя имена файлов
source_filename = input("Введите имя исходного файла: ")
destination_filename = input("Введите имя файла для сохранения без комментариев: ")

# Открываем исходный файл для чтения и файл назначения для записи
with open(source_filename, 'r', encoding='utf-8') as source_file, open(destination_filename, 'w', encoding='utf-8') as dest_file:
# Чтение исходного файла построчно
for line in source_file:
# Ищем символ '#' и обрезаем строку до этого символа
line_without_comment = line.split('#')[0]
# Записываем строку без комментариев в файл назначения
dest_file.write(line_without_comment + '\n')

print(f"Комментарии удалены и результат сохранен в файл {destination_filename}")

except FileNotFoundError:
print("Ошибка: Исходный файл не найден!")
except PermissionError:
print("Ошибка: Нет прав для чтения/записи файлов!")
except Exception as e:
print(f"Произошла ошибка: {e}")

# Запускаем функцию
remove_comments()
Анастасия КорневаУченик (96) 3 дня назад
EOF when reading a line((
Вертолётов 625 Мудрец (12892) 3 дня назад
Код:
 def remove_comments(source_file_path, destination_file_path): 
try:
# Открываем исходный файл для чтения
with open(source_file_path, 'r', encoding='utf-8') as source_file:
lines = source_file.readlines()

# Обрабатываем каждую строку, удаляя комментарии
processed_lines = []
for line in lines:
comment_start = line.find('#')
if comment_start != -1:
line = line[:comment_start]
processed_lines.append(line)

# Записываем обработанные строки в целевой файл
with open(destination_file_path, 'w', encoding='utf-8') as destination_file:
destination_file.writelines(processed_lines)

print(f"Комментарии успешно удалены из файла {source_file_path} и сохранены в файл {destination_file_path}.")

except FileNotFoundError:
print(f"Ошибка: Файл {source_file_path} не найден.")
except IOError as e:
print(f"Произошла ошибка ввода-вывода: {e}")
except Exception as e:
print(f"Произошла непредвиденная ошибка: {e}")

def main():
try:
source_file_path = input("Введите имя исходного файла с кодом на Python: ")
destination_file_path = input("Введите имя файла для сохранения без комментариев: ")

remove_comments(source_file_path, destination_file_path)

except KeyboardInterrupt:
print("\nПрограмма была прервана пользователем.")
except Exception as e:
print(f"Произошла непредвиденная ошибка в главной программе: {e}")

if __name__ == "__main__":
main()
Анастасия КорневаУченик (96) 3 дня назад
EOF when reading a line((
Вертолётов 625 Мудрец (12892) Анастасия Корнева, Тогда вот просто код для удаления комментариев:
 def remove_comments(text): 
    # Разделяем текст на строки 
    lines = text.split('\n') 
     
    # Проходим по каждой строке 
    for i in range(len(lines)): 
        # Ищем индекс символа '#' 
        comment_index = lines[i].find('#') 
         
        # Если символ '#' найден, удаляем всё после него включительно 
        if comment_index != -1: 
            lines[i] = lines[i][:comment_index] 
     
    # Соединяем строки обратно в один текст 
    return '\n'.join(lines) 
 
 
input_text = input("Введите ваш текст (для окончания ввода нажмите Enter):\n") 
 
# Удаляем комментарии из введенного текста 
cleaned_text = remove_comments(input_text)

print("\nТекст после удаления комментариев:") 
print(cleaned_text) 
 
Похожие вопросы