Базовый класс Rewrite принимает два имени файла: откуда взять
информацию и куда записать результат. При вызове метода done() просто
перезаписывает исходный файл в конечный. Класс-наследник Calculus имеет
дополнительный метод – five_per_line(), который получает все числа из
исходного файла, записанные через любое количество любых пробельных
символов, и записывает их в выходной файл в порядке возрастания, не более,
чем по пять в строке (сначала по 5 пока хватает, в последней строке все
остальные), через пробел. Класс-наследник Align также имеет
дополнительный метод – to_right(), который выравнивает все слова из входного
файла, записанные через любое количество любых пробельных символов так,
чтобы каждое слово шло с новой строки и пробелами слева дополнялось до
длины самого длинного слова. Полученные слова записываются в выходной
файл в порядке ввода.
Должно быть так:
Ввод:
rew = Rewrite("in.txt", "out.txt")
rew.done()
'''
file: "in.txt"
1 2 3 12
4 15
6
'''
Выводить должно это:
1 2 3 12
4 15
6
Python
Помогите, пожалуйста, написать программу
Описание программы, которую вы хотите написать, включает два класса: базовый класс "Rewrite" и два его наследника - "Calculus" и "Align". Вот как вы можете реализовать эти классы:
```python
class Rewrite:
def __init__(self, input_file, output_file):
self.input_file = input_file
self.output_file = output_file
def done(self):
with open(self.input_file, 'r') as input_file, open(self.output_file, 'w') as output_file:
output_file.write(input_ file.read ())
class Calculus(Rewrite):
def __init__(self, input_file, output_file):
super().__init__(input_file, output_file)
def five_per_line(self):
with open(self.input_file, 'r') as input_file, open(self.output_file, 'w') as output_file:
numbers = input_ file.read ().split()
numbers.sort()
for i, number in enumerate(numbers):
output_file.write(number + ' ')
if (i + 1) % 5 == 0:
output_file.write('\n')
output_file.write('\n')
class Align(Rewrite):
def __init__(self, input_file, output_file):
super().__init__(input_file, output_file)
def to_right(self):
with open(self.input_file, 'r') as input_file, open(self.output_file, 'w') as output_file:
words = input_ file.read ().split()
max_length = max(len(word) for word in words)
for word in words:
output_file.write(word.rjust(max_length) + '\n')
```
В базовом классе "Rewrite" у вас есть метод "done()", который просто копирует содержимое исходного файла в конечный файл без изменений.
В классе "Calculus" вы наследуете базовый класс "Rewrite" и добавляете метод "five_per_line()", который считывает числа из исходного файла, сортирует их и записывает в выходной файл. Числа выводятся не более, чем по пять в строке, с пробелом между ними.
В классе "Align" также наследуется базовый класс "Rewrite", и он имеет метод "to_right()", который считывает слова из исходного файла, выравнивает их по правому краю и записывает каждое слово на новой строке. Пробелы слева добавляются до длины самого длинного слова.
Вы можете использовать эти классы следующим образом:
```python
rew = Rewrite("in.txt", "out.txt")
rew.done()
calc = Calculus("in.txt", "out.txt")
calc.five_per_line()
align = Align("in.txt", "out.txt")
align.to _right()
```
Надеюсь, это поможет вам написать нужную программу.
```python
class Rewrite:
def __init__(self, input_file, output_file):
self.input_file = input_file
self.output_file = output_file
def done(self):
with open(self.input_file, 'r') as input_file, open(self.output_file, 'w') as output_file:
output_file.write(input_ file.read ())
class Calculus(Rewrite):
def __init__(self, input_file, output_file):
super().__init__(input_file, output_file)
def five_per_line(self):
with open(self.input_file, 'r') as input_file, open(self.output_file, 'w') as output_file:
numbers = input_ file.read ().split()
numbers.sort()
for i, number in enumerate(numbers):
output_file.write(number + ' ')
if (i + 1) % 5 == 0:
output_file.write('\n')
output_file.write('\n')
class Align(Rewrite):
def __init__(self, input_file, output_file):
super().__init__(input_file, output_file)
def to_right(self):
with open(self.input_file, 'r') as input_file, open(self.output_file, 'w') as output_file:
words = input_ file.read ().split()
max_length = max(len(word) for word in words)
for word in words:
output_file.write(word.rjust(max_length) + '\n')
```
В базовом классе "Rewrite" у вас есть метод "done()", который просто копирует содержимое исходного файла в конечный файл без изменений.
В классе "Calculus" вы наследуете базовый класс "Rewrite" и добавляете метод "five_per_line()", который считывает числа из исходного файла, сортирует их и записывает в выходной файл. Числа выводятся не более, чем по пять в строке, с пробелом между ними.
В классе "Align" также наследуется базовый класс "Rewrite", и он имеет метод "to_right()", который считывает слова из исходного файла, выравнивает их по правому краю и записывает каждое слово на новой строке. Пробелы слева добавляются до длины самого длинного слова.
Вы можете использовать эти классы следующим образом:
```python
rew = Rewrite("in.txt", "out.txt")
rew.done()
calc = Calculus("in.txt", "out.txt")
calc.five_per_line()
align = Align("in.txt", "out.txt")
align.to _right()
```
Надеюсь, это поможет вам написать нужную программу.
class Rewrite:
def __init__(self, input_file, output_file):
self.input_file = input_file
self.output_file = output_file
def done(self):
with open(self.input_file, 'r') as file:
content = file.read()
with open(self.output_file, 'w') as file:
file.write(content)
class Calculus(Rewrite):
def five_per_line(self):
with open(self.input_file, 'r') as file:
numbers = file.read().split()
numbers.sort(key=int)
with open(self.output_file, 'w') as file:
for i in range(0, len(numbers), 5):
line = ' '.join(numbers[i:i+5])
file.write(line + '\n')
class Align(Rewrite):
def to_right(self):
with open(self.input_file, 'r') as file:
words = file.read().split()
max_length = max(len(word) for word in words)
with open(self.output_file, 'w') as file:
for word in words:
line = word.rjust(max_length)
file.write(line + '\n')
# Пример использования классов
rew = Rewrite("in.txt", "out.txt")
rew.done()
calc = Calculus("in.txt", "out.txt")
calc.five_per_line()
align = Align("in.txt", "out.txt")
align.to_right()
Похожие вопросы
- Помогите пожалуйста написать 2 программы на Python
- Помогите пожалуйста составить программу на языке Python. заранее спасибо!
- Помогите пожалуйста написать скрипт на языке Python 3
- Помогите пожалуйста написать полный код!!!
- Добрый день, помогите, пожалуйста, написать код к задаче на питоне
- Помогите пожалуйста написать код
- Помогите написать программу пожалуйста
- Помогите написать программу которая посчитает количество строк в отзыве
- Помогите написать программу на Python, моя версия кода на скрине, вроде всё работает, но автопроверка не проходит.
- Помогите написать программу на python