Python: Как назначить значение в качестве фактического параметра, когда не используются числа? - PullRequest
0 голосов
/ 12 октября 2019

Извините, если это действительно глупый вопрос;Я английский майор, берущий курс COSC для факультативного (глупое решение, я знаю), и поэтому все это не легко для меня.

Вот проблему, которую я пытаюсь решить:

Напишите программу, которая принимает файл с сообщением. Сообщение может быть любой длины.

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

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

Это код, который у меня есть в настоящее время:

    def func1(process_contents): 
       infile=open("october.txt", "r")
       process_contents=print(infile.read())
       return process_contents

    def func2():
       outfile=open("october_output.txt", "w")
       print(func1(message), file=outfile)
       outfile.close()

(Я еще не пытался создать коробку со звездочками ... Я просто пытаюсь заставить функции работать в первую очередь). Я понимаю, что не могу назначить другую переменную (например, "message") формальному параметру "process_contents" в func1, что мне нужно назначить VALUE в качестве точных параметров ... но так как я не использую числа в этой задаче,какое значение я использую ??

Большое вам спасибо !!

Ответы [ 2 ]

1 голос
/ 12 октября 2019

Функция print по умолчанию записывает в stdout, но не возвращает значение. Следовательно, вы должны заменить process_contents=print(infile.read()) на process_contents=infile.read(). Это присвоит значение, возвращаемое infile.read(), переменной process_contents.

Далее, я бы порекомендовал использовать оператор with для открытия файла, также как ииспользуется примером , приведенным в руководстве по python.

0 голосов
/ 12 октября 2019

Вам не обязательно нужен формальный параметр в func1().

def func1():
    infile = open("october.txt", "r")
    process_contents = infile.read()
    return process_contents

def func2():
        message = func1()
        print("asterisks" + message + "box thingy")

Хотя вы можете использовать формальный параметр для обобщения функции следующим образом:

FILENAME = "october.txt" # or rather something like sys.argv[0]

def func1(FILENAME):
    infile = open(FILENAME, "r")
    process_contents = infile.read()
    return process_contents

def func2():
    message = func1(FILENAME)
    print("asterisks" + message + "box thingy")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...