
Придумайте и решите задачу по теме Наследование признаков сцепленных с полом


Ответы на вопрос

Задача: Рассмотрим семью, в которой мужчины имеют ряд признаков, сцепленных с полом, которых женщины не имеют. Напишите программу на языке программирования, которая позволяет задать признаки для мужчин и женщин в этой семье, а затем определяет, унаследовали ли их дети от своих родителей.
Решение: 1. Создадим класс "Человек", в котором будут храниться информация о поле и признаках этого человека. В качестве полей класса будем использовать "пол" и "признаки", представленные в виде списка. Также добавим методы для задания и получения значений пола и признаков:
```python class Person: def __init__(self): self.sex = None self.features = []
def set_sex(self, sex): self.sex = sex
def get_sex(self): return self.sex
def set_features(self, features): self.features = features
def get_features(self): return self.features ```
2. Создадим класс "Семья", который будет содержать информацию о родителях и детях:
```python class Family: def __init__(self): self.father = Person() self.mother = Person() self.children = []
def set_father(self, father): self.father = father
def get_father(self): return self.father
def set_mother(self, mother): self.mother = mother
def get_mother(self): return self.mother
def add_child(self, child): self.children.append(child)
def get_children(self): return self.children ```
3. Создадим функцию "check_inheritance", которая будет проверять наследуют ли дети признаки от своих родителей. В функции будем сравнивать признаки между родителями и каждым ребенком. Если ребенок наследует хотя бы один признак от обоих родителей, то считаем его наследником. Функция будет возвращать список наследников:
```python def check_inheritance(family): father_features = family.get_father().get_features() mother_features = family.get_mother().get_features() inherited_children = []
for child in family.get_children(): child_features = child.get_features() if all(feat in father_features for feat in child_features) and \ all(feat in mother_features for feat in child_features): inherited_children.append(child)
return inherited_children ```
4. Создадим объекты классов "Person" и "Family", зададим им значения, а затем проверим наследственность признаков для детей:
```python def main(): p1 = Person() p2 = Person() p3 = Person()
p1.set_sex("Male") p2.set_sex("Female") p3.set_sex("Male")
p1.set_features(["Feature1", "Feature2"]) p2.set_features([]) p3.set_features(["Feature1", "Feature2"])
f = Family() f.set_father(p1) f.set_mother(p2) f.add_child(p3)
inherited_children = check_inheritance(f)
if len(inherited_children) > 0: print("Some children inherit the features") for child in inherited_children: print("Child: gender - {}, features - {}".format(child.get_sex(), child.get_features())) else: print("No children inherit the features")
if __name__ == "__main__": main() ```
Результат выполнения программы позволит определить, унаследовали ли дети признаки от своих родителей. В данном примере, оба мальчика унаследовали признаки от обоих родителей, поэтому программа выводит информацию о них.


Топ вопросов за вчера в категории Биология
Последние заданные вопросы в категории Биология
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili