Untitled
unknown
python
4 years ago
3.1 kB
5
Indexable
''' Exercício sobre Funções 2 Uma fita de RNAm é uma sequência de códons (trincas formadas pela combinação das bases hidrogenadas U, C, A e G). Sabendo disso e que existe um códon de iniciação ("UUG", "CUG", "AUU", "AUG" e "GUG") e de terminação ("UAA", "UAG" e "UGA"), escreva uma função em Python que a partir de um possível RNAm (parâmetro), retorne True, caso seja uma sequência válida, ou False, em caso contrário. Usando essa função, codifique um programa no qual o usuário possa informar uma sequência e visualizar se é ou não válida para um RNAm. Além disso, permita que o usuário teste quantas sequências desejar. Importante: * É mais fácil trabalhar com strings. * O códon de iniciação só deve aparecer no início * O códon de terminação só aparece no fim. ''' # global validos = ('u', 'c' ,'a', 'g') iniciacao = ('uug', 'cug', 'auu', 'aug', 'gug') terminacao = ('uaa', 'uag', 'uga') def fatiar_codons(codons): ''' Cria uma lista onde cada elemento representa um codon. ''' if codons: return [codons[:3]] + fatiar_codons(codons[3:]) else: return [] def caracteres_invalidos(codons): ''' Verifica por algum caractere INvalido. ''' temp = [caractere for caractere in codons if caractere not in validos] return any(temp) def repete_inicio(fatiado): ''' Verifica se o codon inicial SE REPETE. ''' inicio = fatiado.pop(0) return inicio in fatiado def repete_fim(fatiado): ''' Verifica se o codon final SE REPETE. ''' fim = fatiado.pop() return fim in fatiado def inicio_invalido(fatiado): ''' Verifica se o codon inicial é INvalido. ''' inicio = fatiado.pop(0) return inicio not in iniciacao def fim_invalido(fatiado): ''' Verifica se o codon final e INvalido. ''' fim = fatiado.pop() return fim not in terminacao def verifica_codons(codons): ''' Verifica codons. ''' codons_fatidos = fatiar_codons(codons) if not codons.strip() or len(codons) % 3 == 1: print('Invalido, cada codon deve possuir tres elementos.') return False if caracteres_invalidos(codons): print('Invalido, caracteres invalidos foram incontrados.') return False if inicio_invalido(codons_fatidos.copy()): print(f'Invalido, codon iniciacao validos {iniciacao}.') return False if fim_invalido(codons_fatidos.copy()): print(f'Invalido, codon terminacao validos {terminacao}.') return False if repete_inicio(codons_fatidos.copy()): print('Invalido, codon inicial se repete.') return False if repete_fim(codons_fatidos.copy()): print('Invalido, codon final se repete.') return False return True codons = 'uuguuguga' continuar = 1 while continuar: codons = str(input('Informe os codons: ')) eh_valido = verifica_codons(codons) if eh_valido: print(f'{codons} é valido!!!') continuar = int(input('continuar [0 nao] [1 sim]: '))
Editor is loading...