###################### # Prova P1 2019-2 Hugo ###################### # Questão 1 def segredo(T, V, C): pass def fórmula_processo_secreto(V, T, C=2.43): """ Calcula a fórmula do processo secreto do enunciado, dados: V, float, o volume do líquido em m3 T, float, a temperatura do líquido em K C, float, a constante correspondente ao líquido O retorno é um float """ return (2 * V + (T**3) / 3) ** C + segredo(T, V, C) # Questão 2 def a(b): """ Recebe uma string b, onde # é considerado separador. Se a quantidade de partes é par, retorna uma string contendo as partes de trás pra frente, pulando de 2 em 2, separadas por vírgula. Caso seja ímpar, a última parte deve ser um número indicando a posição de uma das outras partes; nesse caso, retorna-se a string original com a parte indicada convertida para maiúsculas. """ c = str.split(b, "#") d = len(c) if d % 2 == 0: return str.join(",", c[::-2]) e = int(c[-1]) if e < d - 1: c[e] = str.upper(c[e]) return str.join("#", c[:-1]) return "Operação inválida!" # Questão 3 def prevê_explosão(elementos, quantidades): """ Recebe duas listas, `elementos` contendo nomes de elementos (strings) e `quantidades` com suas respectivas quantidades em gramas (floats), e retorna um Booleano indicando se há explosão por causa dos elementos X e Y """ if "X" not in elementos or "Y" not in elementos: return False # a partir aqui sabemos que ambos X e Y estão presentes! índice_X = elementos.index("X") quantidade_X = quantidades[índice_X] índice_Y = elementos.index("Y") quantidade_Y = quantidades[índice_Y] return quantidade_X >= 50 and quantidade_Y >= 100 # alternativa if quantidade_X >= 50 and quantidade_Y >= 100: return True else: return False ###################### # P1 2018-2 João ###################### # Questão 2 # n-ésimo termo de uma PG de raz~ def termoPG(a1, r, n): return a1 * r ** (n - 1) def cincoTermosPG(a1, r): """ Retorna uma tupla de 5 números: os 5 primeiros termos da PG de termo inicial a1 e razão r. a1 e r devem ser números """ return ( termoPG(a1, r, 1), termoPG(a1, r, 2), termoPG(a1, r, 3), termoPG(a1, r, 4), termoPG(a1, r, 5), ) # Questão 3 def iniciofim(palavra): if len(palavra) > 0: return palavra[0] == palavra[-1] else: return True def mudaPalavra(pal, numero): if not (iniciofim(pal)): if numero < len(pal): quebra = pal[-1] + pal[0] + pal[1:-2] + pal[0] + pal[-1] else: quebra = pal[0] + pal[-1] + pal[1:-2] + pal[-1] + pal[0] else: quebra = numero * pal[::-1] return quebra ###################### # Lab 5, Questão 2 ###################### def proteína_correspondente(RNA): """ Bla ble bli (enunciado) """ tabela = { "UUU": "Phe", "CUU": "Leu", "UUA": "Leu", "AAG": "Lisina", "UCU": "Ser", "UAU": "Tyr", "CAA": "Gln", } trincas = RNA[0:3], RNA[3:6], RNA[6:9] return tabela[trincas[0]], tabela[trincas[1]], tabela[trincas[2]]