#python-3.x
#python-3.x
Вопрос:
Наверное, очень глупый вопрос! Слишком много работы повредило мой мозг сегодня.
Я застрял на решении основной проблемы с сайта.
У меня есть функция, которая имеет 3 значения в кортеже (имя, возраст, пол). Я работал над тем, чтобы получить только возраст и пол в списке, а затем повторить его, чтобы получить среднее значение, если пол соответствует M или F, и не соответствует, если что-то помимо этого.
Теперь я застрял в проблеме, выделенной ЖИРНЫМ шрифтом в коде,где я не могу вернуть ни один из выходных данных, т. Е. Если gender = «m» или «f», он работает правильно, но если он использует avergae_age(члены, Z), он не возвращает «Не найдено совпадений» вместо ошибки, что очевидно.
- Как мне сделать этот код лучше?
б) Как мне просто получить вывод, если что-либо, кроме формы 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")