Программа доходит до оператора print() и заканчивает работу

Вот код:

Dominant = str(input('Введите букву доминантного признака: '))
Recesive = str(input('Введите букву рецесивного признака: '))

Dominant = str(Dominant.upper())
Recesive = str(Recesive.lower())

fst = str(input('Введите обозночение для ♀ с помощью цифр: ' + Dominant + ' - 1; ' + Recesive + ' - 2 '))
snd = str(input('Введите обозночение для ♂ с помощью цифр: ' + Dominant + ' - 1; ' + Recesive + ' - 2 '))

if len(fst) >= 3 or len(snd) >= 3:
    print("Я ещё не умею такое решать")
    input()
    exit()

if fst[0] == 1 and fst[1] == 1 or fst[0] == 2 and fst[1] == 2:      # проверка на гомозиготность ♀
    if snd[0] == 1 and snd[1] == 1 or snd[0] == 2 and snd[1] == 2:  # проверка на гомозиготность ♂

        if fst[0] == 1 and fst[1] == 1:                             # если ♀ с домитантным набором генов

            fstzig = Dominant                                       # зигота ♀

        else:                                                       # если ♀ с рецесивным набором генов

            fstzig = Recesive


        if snd[0] == 1 and snd[1] == 1:                             # если ♂ с домитантным набором генов

            sndzig = Dominant                                       # зигота ♂

        else:                                                       # если ♂ с рецесивным набором генов

            sndzig = Recesive

        print('P: ♀ {0}{0},  x ♂ {1}{1}'.format(fstzig, sndzig))
        print('      |       |')

программа пишется для решения задач по генетике, под первый закон Менделя. И при вводе следующих данных:

у
е
11
22

должна вывести строку:

P: ♀ УУ x ♂ ее

однако просто заканчивает работу. Я пробовал несколько вариантов и с форматированием и без.


Ответы (1 шт):

Автор решения: Интик

ваша ошибка что вы сравниваете разные типы данных. при вводе у вас получается str, а сравнение вы делаете с int. поэтому все условия уходят в "ложь"

Dominant = "y"
Recesive = "e"

Dominant = str(Dominant.upper())
Recesive = str(Recesive.lower())

fst = "11"
snd = "22"

if len(fst) >= 3 or len(snd) >= 3:
    print("Я ещё не умею такое решать")
    input()
    exit()

if fst[0] == "1" and fst[1] == "1" or fst[0] == "2" and fst[1] == "2":      # проверка на гомозиготность ♀

    if snd[0] == "1" and snd[1] == "1" or snd[0] == "2" and snd[1] == "2":  # проверка на гомозиготность ♂

        if fst[0] == "1" and fst[1] == "1":                             # если ♀ с домитантным набором генов

            fstzig = Dominant                                       # зигота ♀

        else:                                                       # если ♀ с рецесивным набором генов

            fstzig = Recesive


        if snd[0] == "1" and snd[1] == "1":                             # если ♂ с домитантным набором генов

            sndzig = Dominant                                       # зигота ♂

        else:                                                       # если ♂ с рецесивным набором генов

            sndzig = Recesive

        print('P: ♀ {0}{0},  x ♂ {1}{1}'.format(fstzig, sndzig))
        print('      |       |')

результат

P: ♀ YY,  x ♂ ee
      |       |
→ Ссылка