Как вернуть 2 вывода из списка

#python-3.x

#python-3.x

Вопрос:

Наверное, очень глупый вопрос! Слишком много работы повредило мой мозг сегодня.

Я застрял на решении основной проблемы с сайта.

У меня есть функция, которая имеет 3 значения в кортеже (имя, возраст, пол). Я работал над тем, чтобы получить только возраст и пол в списке, а затем повторить его, чтобы получить среднее значение, если пол соответствует M или F, и не соответствует, если что-то помимо этого.

Теперь я застрял в проблеме, выделенной ЖИРНЫМ шрифтом в коде,где я не могу вернуть ни один из выходных данных, т. Е. Если gender = «m» или «f», он работает правильно, но если он использует avergae_age(члены, Z), он не возвращает «Не найдено совпадений» вместо ошибки, что очевидно.

  1. Как мне сделать этот код лучше?

б) Как мне просто получить вывод, если что-либо, кроме формы M/F, вводится без изменения моего существующего кода, пожалуйста ?

Заранее спасибо

 def average_age(members,gender): lst=[] for x in zip(members):  lst.append(x[0][1])  lst.append(x[0][2])   lst_tuple = [x for x in zip(*[iter(lst)]*2)]  #return lst_tuple  **lst1=[] for z in lst_tuple:  if z[1]!=gender:  lst1=[] return ("No matches found.")  for z in lst_tuple:  if z[1]==gender:  lst1.append(z[0]) return (sum(lst1)/len(lst1))**  

Комментарии:

1. Может быть, вы можете сначала предоставить некоторые примеры входных и выходных данных?

Ответ №1:

Для входных данных:

 members = [("Maria", 20, "F"), ("Dan", 21, "M"), ("Ana", 30, "F"), ("Max", 40, "M")]  

Вы можете вычислить средний возраст примерно так:

 def average_age(members: list, gender: str):   # Collect ages for the given gender  ages = [member[1] for member in members if member[2] == gender]   try:  return sum(ages) / len(ages)   except ZeroDivisionError:  print("Unable to compute average age")