Я работаю над следующим вопросом hw и сейчас просто пытаюсь настроить мой код ...
Напишите программу, которая принимает файл, которыйесть сообщение. Сообщение может быть любой длины.
Ваша программа будет содержать две функции. Первый должен иметь функцию, которая обрабатывает содержимое файла. Второй получит выходные данные первой функции и напечатает сообщение в виде звездочки.
Входной файл должен быть просто однострочным сообщением (см. Прилагаемый пример ввода),Выходные данные должны принять это сообщение, разбить его на две строки и центрировать в поле
Это мой текущий код:
import textwrap
def func1():
infile=open("october.txt", "r")
'Pull text from file and assign it to process_contents variable'
process_contents=infile.read()
return process_contents
def asterisk_box(width, height):
'Create a box of asterisks and return it as a string'
box = '*' * width + '\n'
for i in range(height - 2):
box += '*' + ' ' * (width-2) + '*\n'
box += '*' * width
return box
def asterisk_message(width, height, message):
'Put a message within the asterisk box'
assert len(message) <= height # Make sure there is room for a message
assert len(message) <= width # Make sure the box is wide enough
box = asterisk_box(25,20)
box = box.splitlines()
row = height // 2
box[row] = "*" + message.center(width) + "*"
box[row] = textwrap.fill(message,4)
return '\n'.join(box)
def func2():
outfile=open("october_output.txt", "w")
print(asterisk_message(30,25, func1()), file=outfile)
outfile.close()
func2()
код, который я имею, будет работать только с очень маленьким словом типа "привет";с любым более длинным сообщением включается «assert» и код не запускается. Можно ли как-нибудь сделать так, чтобы поле звездочек автоматически расширялось или сжималось в зависимости от длины моего сообщения? Я пытался использовать textwrap, чтобы сжать более длинные сообщения, чтобы они поместились в поле, но из-за этого у меня возникло странное форматирование, и я испортил поле звездочки, например:
*************************
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
so l
et's
try
long
er?
* *
* *
* *
* *
* *
* *
*************************