Desenvolvimento de aplicação em python

Olá, me chamo Carlos, tenho 17 anos e sou um amante de Python. Durante minhas aulas de biologia, onde eu tinha muita dificuldade com genética (Aa + aa) eu tive a ideia de desenvolver uma aplicação que cadastra as caracteristicas fisicas do pai e da mãe e assim retornando o que seria o resultado do filho, poupando assim todo o trabalho do calculo de um estudande por exemplo.

Eu fiz uma primeira versão simples com pequenas pocibilidades como por exemplo; duas cores de cabelo e olhos e somente duas etinias, usando como base somente "recessivo e dominante". gostei muito do resultado, porém achei muito complexo de alguém comum usar pois era tudo digitado no console. minha amiga me deu a ideia de fazer uma tela de cadastro para simplificar a usabilidade e pesquisando muito, estou tentando usar a biblioteca PysimpleGUI para fazer isso, porque eu já tenho um breve conhecimento com a Pygame então não seria tão dificil (na teoria).

Eu gostaria de um dia poder ter a pocibilide de transformar isso em um site ou até um aplicativo. Mas até lá quero aprimorar essa versão INDEV da aplicação. segue abaixo o código e a esperença de um incentivo e a esperança de que isso possa se tornar uma ferramenta util para alguém em um futuro próximo. Espero também que o conhecimento de todos possam me ajudar a melhorar meu código, lógica e também minha forma de denvolver

from time import sleep


###################

cads = list()

dad = dict()
mom = dict()
son = dict()

while True:
    dad.clear()
    mom.clear()
    son.clear()

    # CADASTRO DOS PAIS
    ###################################################################################
    dad['PAI'] = str(input('DIGA O NOME DO PAI: ')).replace(" ", "").upper()
    dad['OLHO'] = str(input('''DIGA A COR DOS OLHOS DO PAI [V/C/A] 
                            V = verde
                            C = Castanho
                            A = Azul
                            :''')).strip().upper()[0]
    while dad['OLHO'] not in 'VvCcAa':
        print('ERRO! OPÇÃO INVÁLIDA.')
        dad['OLHO'] = str(input('''DIGA A COR DOS OLHOS DO PAI [V/C/A] 
                            V = verde
                            C = Castanho
                            A = Azul
                            :''')).strip().upper()[0]



    dad['CABELO'] = str(input('''DIGA A COR DO CABELO DO PAI [C/L]
                                C = Castanho
                                L = Loiro
                                :''')).strip().upper()[0]

    while dad['CABELO'] not in 'CcLl':
        print('ERRO! OPÇÃO INVÁLIDA.')
        dad['CABELO'] = str(input('''DIGA A COR DO CABELO DO PAI [C/L]
                                C = Castanho
                                L = Loiro
                                :''')).strip().upper()[0]


    dad['ETINIA'] = str(input('''DIGA A ETINIA DO PAI [B/P]
                                B = Branco
                                P = Preto
                                :''')).strip().upper()[0]

    while dad['ETINIA'] not in 'PpBb':
        print('ERRO! OPÇÃO INVÁLIDA.')
        dad['ETINIA'] = str(input('''DIGA A ETINIA DO PAI [B/P]
                                B = Branco
                                P = Preto
                                :''')).strip().upper()[0]


    if dad['OLHO'] == 'V':
        dad['OLHO'] = 'VERDE'

    elif dad['OLHO'] == 'C':
        dad['OLHO'] = 'CASTANHO'

    elif dad['OLHO'] == 'A':
        dad['OLHO'] = 'AZUL'

    if dad['CABELO'] == 'C':
        dad['CABELO'] = 'CASTANHO'
    elif dad['CABELO'] == 'L':
        dad['CABELO'] = 'LOIRO'

    if dad['ETINIA'] == 'B':
        dad['ETINIA'] = 'BRANCO'

    elif dad['ETINIA'] == 'P':
        dad['ETINIA'] = 'PRETO'
        
        



    mom['MÃE'] = str(input('DIGA O NOME DA MÃE: ')).replace(" ", "").upper()

    mom['OLHO'] = str(input('''DIGA A COR DOS OLHOS DO MÃE [V/C/A] 
                            V = verde
                            C = Castanho
                            A = Azul
                            :''')).strip().upper()[0]
    while mom['OLHO'] not in 'VvCcAa':
        print('ERRO! OPÇÃO INVÁLIDA.')
        mom['OLHO'] = str(input('''DIGA A COR DOS OLHOS DO MÃE [V/C/A] 
                            V = verde
                            C = Castanho
                            A = Azul
                            :''')).strip().upper()[0]



    mom['CABELO'] = str(input('''DIGA A COR DO CABELO DO MÃE [C/L]
                                C = Castanho
                                L = Loiro
                                :''')).strip().upper()[0]

    while mom['CABELO'] not in 'CcLl':
        print('ERRO! OPÇÃO INVÁLIDA.')
        mom['CABELO'] = str(input('''DIGA A COR DO CABELO DO MÃE [C/L]
                                C = Castanho
                                L = Loiro
                                :''')).strip().upper()[0]


    mom['ETINIA'] = str(input('''DIGA A ETINIA DO MÃE [B/P]
                                B = Branco
                                P = Preto
                                :''')).strip().upper()[0]

    while mom['ETINIA'] not in 'PpBb':
        print('ERRO! OPÇÃO INVÁLIDA.')
        mom['ETINIA'] = str(input('''DIGA A ETINIA DO MÃE [B/P]
                                B = Branco
                                P = Preto
                                :''')).strip().upper()[0]
    


    if mom['OLHO'] == 'V':
        mom['OLHO'] = 'VERDE'

    elif mom['OLHO'] == 'C':
        mom['OLHO'] = 'CASTANHO'

    elif mom['OLHO'] == 'A':
        mom['OLHO'] = 'AZUL'


    if mom['CABELO'] == 'C':
        mom['CABELO'] = 'CASTANHO'

    elif mom['CABELO'] == 'L':
        mom['CABELO'] = 'LOIRO'


    if mom['ETINIA'] == 'B':
        mom['ETINIA'] = 'BRANCO'

    elif mom['ETINIA'] == 'P':
        mom['ETINIA'] = 'PRETO'
    ###################################################################################


    # CADASTRO DO FILHO
    ###################################################################################
    son['FILHO'] = str(input('DIGA O NOME DA CRIANÇA: ')).replace(" ", "").upper()
    
    sex_son = str(input('''
    DIGITE F SE A CRIANÇA FOR MENINA
    DIGITE M SE A CRIANÇA FOR MENINO
    :''')).strip().upper()[0]


    while sex_son not in 'FfMm':
        print('OPÇÃO INVÁLIDA!')
        sleep(0.5)
        sex_son = str(input('''
    DIGITE F SE A CRIANÇA FOR MENINA
    DIGITE M SE A CRIANÇA FOR MENINO
    :''')).strip().upper()[0]


    if sex_son in 'F':
        sex_son = 'FEMININO'
    elif sex_son in 'M':
        sex_son = "MASCULINO"

    son['SEXO'] = sex_son[:]

    # OLHO
    #####################################################################################
    if dad['OLHO'] == 'CASTANHO':
        if mom['OLHO'] == 'CASTANHO':
            son['OLHO'] = 'CASTANHO'
    if dad['OLHO'] == 'CASTANHO':
        if mom['OLHO'] == 'VERDE':
            son['OLHO'] = 'CASTANHO'
    if dad['OLHO'] == 'CASTANHO':
        if mom['OLHO'] == 'AZUL':
            son['OLHO'] = 'CASTANHO'


    if dad['OLHO'] == 'VERDE':
        if mom['OLHO'] == 'CASTANHO':
            son['OLHO'] = 'CASTANHO'
    if dad['OLHO'] == 'VERDE':
        if mom['OLHO'] == 'VERDE':
            son['OLHO'] = 'VERDE'
    if dad['OLHO'] == 'VERDE':
        if mom['OLHO'] == 'AZUL':
            son['OLHO'] = 'VERDE'

    
    if dad['OLHO'] == 'AZUL':
        if mom['OLHO'] == 'CASTANHO':
            son['OLHO'] = 'CASTANHO'
    if dad['OLHO'] == 'AZUL':
        if mom['OLHO'] == 'VERDE':
            son['OLHO'] = 'VERDE'
    if dad['OLHO'] == 'AZUL':
        if mom['OLHO'] == 'AZUL':
            son['OLHO'] = 'AZUL'
    ###################################################################################


    # CABELO ##########################################################################

    if dad['CABELO'] == 'CASTANHO':
        if mom['CABELO'] == 'CASTANHO':
            son['CABELO'] = 'CASTANHO'

    if dad['CABELO'] == 'CASTANHO':
        if mom['CABELO'] == 'LOIRO':
            son['CABELO'] = 'CASTANHO'

    
    if dad['CABELO'] == 'LOIRO':
        if mom['CABELO'] == 'CASTANHO':
            son['CABELO'] = 'CASTANHO'

    if dad['CABELO'] == 'LOIRO':
        if mom['CABELO'] == 'LOIRO':
            son['CABELO'] = 'LOIRO'

   ##################################################################################### 
    
    # Etinia ###########################################################################
    if dad['ETINIA'] == 'BRANCO':
        if mom['ETINIA'] == 'BRANCO':
            son['ETINIA'] = 'BRANCO'

    if dad['ETINIA'] == 'BRANCO':
        if mom['ETINIA'] == 'PRETO':
            son['ETINIA'] = 'PARDO'

    if dad['ETINIA'] == 'PRETO':
        if mom['ETINIA'] == 'PRETO':
            son['ETINIA'] = 'PRETO'

    if dad['ETINIA'] == 'PRETO':
        if mom['ETINIA'] == 'BRANCO':
            son['ETINIA'] = 'PARDO'
    ###################################################################################


    # ESCREVER NO TXT
    ###################################################################################   
    file = open('txt.txt', 'a')
    lines_1 = [dad, mom, son]
    with open ("txt.txt", 'a') as file:
            for line_1 in lines_1:
                file.write(str('+'*5))
                file.write(str(line_1))
                file.write(str('\n'))
            file.write(str('-='*55))
            file.write(str('\n'))
    ###################################################################################
    sleep(0.5)


    # NOVO CADASTRO
    ###################################################################################
    cads.append(dad.copy())
    cads.append(mom.copy())
    cads.append(son.copy())

    while True:
        back = str(input('DESEJA FAZER UM  NOVO CADASTRO? [S/N]')).strip().upper()[0]
        if back in 'SN':
            break
        print("ERRO! RESPONDA APENAS S OU N.")


    if back == 'N':
        break
    ###################################################################################


print('-=' *30)
for e in cads:
    print(f'O FILHO DE:{dad["PAI"]} e {mom["MÃE"]} chama-se: {son["FILHO"]}')
    print(f'{son["FILHO"]} é do sexo {son["SEXO"]}, sua etinia {son["ETINIA"]}, seus olhos são da cor {son["OLHO"]} e seu cabelo é {son["CABELO"]}')
print('-=' *30)




'''
DESENVOLVIDO POR:
intagram: @carlin_fg
Twitter: @ZinCrZin
'''

Que top!! Não entendo muito de GUI em python, eu foco em criar sites, mas eu sei uma dica boa para você.

Funções

Use funções, elas ajudam a criar pequenos blocos de códigos reutilizaveis com apenas um função. Assim o código fica mais limpo e fácil de melhorar.

Classes

Pesquise sobre Classes - POO em python, vai te ajudar a criar um projeto mais poderoso e fácil de mexer.

RoadMaph

Vou deixar um roadmap com uma trilha em python caso você queria ver essas duas dicas a cima. RoadMap

Exemplo

Vou refatorar seu código e deixar mais organizado, pera já volto e coloco o link do meu aqui

Muito Obrigado pelas dicas, eu fico muito grato!
Denada!! Vamo terminar esse projetão ainda, kkk. Dei uma arrumada, mas não consegui terminar. A parte das possibilidades de genes do filho me pegou. Vou dar uma estudada sobre como reduzir os IF/ELIFS e tento matar essa ### O Código https://github.com/Campos-GJC/CarlinHD Obs: sei usar apenas o básico do git. (:
Uau! O muito obrigado mesmo, ficou muito mais simples o código. espero trazer novas atualizações em breve. Muito obrigado pela ajuda :) <3

Meu querido CarlinHD coloca isso em um repositório do github e compartilha o link com a gente, assim fica mais facíl te ajudar e levar isso a outras pessoas

obrigado pela dica, eu farei isso e logo em seguida eu volto aqui para compartilhar o repositório