Как определить, сколько параметров использовать в функции - PullRequest
1 голос
/ 03 марта 2020

Я новичок в Python и пытаюсь выучить Python из Codeacademy. Это мой первый пост здесь.

Вот пример кода (ответа), предоставленный Codeacademy.

proprietary_terms = ["she", "personality matrix", "sense of self", "self-preservation", "learning algorithm", "her", "herself", "Helena"]

def censor_two(input_text, censored_list):
  for word in censored_list:
    censored_word = ""
    for x in range(0,len(word)):
      if word[x] == " ":
        censored_word = censored_word +" "
      else:
        censored_word = censored_word + "X"
    input_text = input_text.replace(word, censored_word)
  return input_text

print(censor_two(email_two, proprietary_terms)) 

Используя приведенный выше код в качестве примера, как я узнаю, что мне нужно 2 параметра ? Вот input_text, censored_list.

Это был вопрос:

Write a function that can censor not just a specific word or phrase from a body of text, but a whole list of words and phrases, and then return the text.

Mr. Cloudy has asked that you censor all words and phrases from the following list in email_two.

proprietary_terms = ["she", "personality matrix", "sense of self", "self-preservation", "learning algorithm", "her", "herself"]

Мне пришлось посмотреть на ответ, чтобы понять, как решить вопрос. Но для первой попытки я не знал, сколько параметров добавить в функцию, и не мог ее решить: [

Есть ли какое-то правило или рекомендации, которым нужно следовать, чтобы узнать, сколько параметров требуется функции?

Например, для следующего вопроса:

The most recent email update has concerned Mr. Cloudy, but not for the reasons you might think. He tells you, “this is too alarmist for the Board of Investors! Let’s tone down the negative language and remove unnecessary instances of ‘negative words.’”

Write a function that can censor any occurance of a word from the “negative words” list after any “negative” word has occurred twice, as well as censoring everything from the list from the previous step as well and use it to censor email_three.

negative_words = ["concerned", "behind", "danger", "dangerous", "alarming", "alarmed", "out of control", "help", "unhappy", "bad", "upset", "awful", "broken", "damage", "damaging", "dismal", "distressed", "distressed", "concerning", "horrible", "horribly", "questionable"]

Я думаю, что нужно 3 параметра? Это мое предположение, так как предыдущий вопрос требовал 2 (1 для электронной почты и один для списка слов), и теперь есть 2 списка и 1 электронная почта, так что я предполагаю, что для этого нужны 3 параметра?

Но для других функции и другие типы вопросов .. как вы определяете, сколько параметров ему нужно? Заранее большое спасибо. Я надеюсь, что мой вопрос был ясен.

Ответы [ 2 ]

1 голос
/ 05 марта 2020

Один из способов думать об этом: «Что нужно знать функции от пользователя, чтобы выполнить свою работу?» Если функция функции заключается в том, чтобы напечатать что-то, то ей не нужны никакие параметры. Но если ему нужно что-то вычислить, ему нужно знать, что вычислять, и с каких чисел оно начинается. Я предлагаю написать функцию, а затем добавить параметры по мере необходимости. Например, я мог бы написать функцию для сложения следующим образом:

def add():
    *something*

Затем я понимаю, что функции нужно добавить два числа (скажем, a и b). Поэтому я добавляю два параметра:

def add(a,b):
    print(a+b)

Надеюсь, вы понимаете. Прокомментируйте, если вам нужна помощь.

1 голос
/ 03 марта 2020

Я думаю, вы должны подходить к этому так. Функция - это просто какой-то черный ящик, который получает некоторые входные данные и выплевывает желаемый выход. входными данными являются параметры, а выходными данными является текст, подвергнутый цензуре, который он возвращает. давайте посмотрим на пример. скажем, вас просят вычислить среднее из двух чисел. ваши функции, которые для ясности вы назвали find_average, нуждаются в двух числах, чтобы вычислить их среднее значение. это ваши параметры. если вы запутались, просто нарисуйте случайную рамку и подумайте о выходных данных и списке входных данных, которые обязательно необходимы для получения этих выходных данных. в последнем вопросе вы правы, вам нужно 3 входа (параметры), чтобы сделать то, что вам задают. Ваша задача - подвергнуть цензуре текст. Теперь давайте перечислим, что вам нужно для выполнения sh этой задачи.

  1. сначала вам нужно, чтобы этот текст был подвергнут цензуре
  2. , затем вам нужен список negative words
  3. наконец, вам нужен список proprietary_terms

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

Надеюсь, это прояснит вашу дилемму.

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

...