список возврата на основе входного аргумента - PullRequest
0 голосов
/ 16 апреля 2020

, если какой-либо из входных аргументов указан для ex)

yummy (name = "Myeong Tae") `

Мой вывод должен быть

yummy = [["Myeong Tae", "Korea", "Incheon"]]]

, функция найдет друзей, чьи данные соответствуют входным данным.

Это мой код

friends =[["Myeong Tae","Korea","Incheon"],["Tae Hwan","Korea","JeJu"],["Lee Boon Tat","Malaysia","Klang"],["Hong Woo Jin","Korea","Bucheon"],["Kim kyung Tae","Korea","Seoul"],["Michael Jackson","Malaysia","Selangor"],["Son Heung Min","Malaysia","Penang"],["Riu Shan Sil","Korea","Gwang Meoung"],["Paul Kim","Malaysia","Malaca"],["Ki Ryang Park","Korea","Dae Jeon"]]

def yummy(name="", home_country="", home_state=""):
    filtered=friends()
    return filtered




yummy(name="Myeong Tae")

я получаю ошибку, в которой говорится, что объект списка не может быть вызван

что я здесь не так делаю: (

Ответы [ 3 ]

0 голосов
/ 16 апреля 2020

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

detail = [x for x in filtered if if name in friend or home_country in friend or home_state in friend]
return  detail
0 голосов
/ 16 апреля 2020

Meaby iterrate по массиву с параметром "name", чтобы найти человека, которого вы ищете? Также массивы имеют нулевое индексирование, что означает, что первый элемент массива имеет индекс 0. В вашем конкретном случае c вам нужно будет пройти через людей в массиве, чтобы найти совпадение, например:

for friend in friends:

Обратите внимание, что у каждого элемента (друга) в вашем массиве "friends" есть индексная позиция в массиве. Первый элемент (друг) в массиве - это ["Myeong Tae", "Korea", "Incheon"], и он размещен с индексом 0, поскольку массивы основаны на нулевом индексе. То же самое относится к значениям каждого друга, это означает, что имя друга находится в индексе 0.

Значения: ["Myeong Tae", "Korea", "Incheon"] * - переводится в - Индексы: [0,1,2]

Это означает, что для сравнения параметра имени из метода "yummy" с другом вы найдете друзей назовите это так:

друг [0]

friends = [["Myeong Tae","Korea","Incheon"],["Tae Hwan","Korea","JeJu"],["Lee Boon Tat","Malaysia","Klang"],["Hong Woo Jin","Korea","Bucheon"],["Kim kyung Tae","Korea","Seoul"],["Michael Jackson","Malaysia","Selangor"],["Son Heung Min","Malaysia","Penang"],["Riu Shan Sil","Korea","Gwang Meoung"],["Paul Kim","Malaysia","Malaca"],["Ki Ryang Park","Korea","Dae Jeon"]]


def yummy(name="", home_country="", home_state=""):
  for friend in friends:
    if name == friend[0]: #friend[0] represents the first item of a friend wich is the name
      return friend #return all items of the friend (name, country, city)         
print(yummy(name="Myeong Tae"))

Чтобы выполнить подобные действия, вам необходимо понимать циклы, операторы if / else и операторы. Я бы посоветовал разобраться в этих вещах.

0 голосов
/ 16 апреля 2020

Ошибка из-за этой строки:

filtered=friends()

Здесь вы пытаетесь вызвать (используя скобки) friends, который уже является списком, определенным так:

friends =[["Myeong Tae","Korea","Incheon"],["Tae Hwan","Korea","JeJu"],["Lee Boon Tat","Malaysia","Klang"],["Hong Woo Jin","Korea","Bucheon"],["Kim kyung Tae","Korea","Seoul"],["Michael Jackson","Malaysia","Selangor"],["Son Heung Min","Malaysia","Penang"],["Riu Shan Sil","Korea","Gwang Meoung"],["Paul Kim","Malaysia","Malaca"],["Ki Ryang Park","Korea","Dae Jeon"]]

То, что вы, вероятно, хотели, чтобы это:

def yummy(name="", home_country="", home_state=""):
    result = []
    for friend in friends:
        if name in friend or home_country in friend or home_state in friend:
            result.append(friend)
    return result

Пример теста:

>>> yummy(name="Myeong Tae")
[['Myeong Tae', 'Korea', 'Incheon']]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...