Untitled
unknown
python
5 years ago
3.1 kB
6
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...