# Tuplas: "aglomerados" de valores. São imutáveis! tupla = "Hugo", 38, True unitária = (99,) # Strings: informação textual. São imutáveis! # Listas: "aglomerados" MUTÁVEIS de valores lista = ["Hugo", 38, True] # Dicionários: associações entre chaves e valores. São mutáveis! outratupla = (1,2,3) a = 'blablabla' outratuplaainda = (1,2,3,[4], a) a = 'agora outra coisa' dicionário = {'nome' : "Hugo", outratupla: 'blabla',} outralista = lista nome = "hugo" apelido = nome nome = "Hugo" lista_de_quadrados_até_100 = [x**2 for x in range(100)] dict_de_cubos_até_100 = {x:x**3 for x in range(100)} # curiosidade inútil: isso_aqui_não_é_tupla = (x**4 for x in range(100)) def teste_for(N=10**5): for i in range(N): pass def teste_while(N=10**5): i = 0 while i < N: i += 1 # P3-2018-1-João-Nuclear+Ambiental # Q1 def fatorial(n): prod = 1 for i in range(1,n+1): # prod = prod * i prod *= i return prod def combinações(n,p): return (fatorial(n))//(fatorial(p)*fatorial(n-p)) def soma_linha(n): return sum([combinações(n,p) for p in range(n+1)]) # soma = 0 # for p in range(n+1): # soma += combinações(n,p) # return soma def soma_diagonal(n,k): soma = 0 for bla in range(0,k+1): print(f'{n=}, {bla=}, {combinações(n+bla, bla)=}') soma += combinações(n+bla, bla) return soma # Q2 def ordena(lista): list.sort(lista) lista1 = [list.pop(lista,0)] pos = 1 lista2 = [] tamanho = len(lista) for i in range(tamanho): for p in lista: list.append(lista2, [p[pos:],p]) list.sort(lista2) lista1 += [lista2[0][1]] list.remove(lista, lista2[0][1]) pos += 1 lista2 = [] return lista1