Baixe o app para aproveitar ainda mais
Prévia do material em texto
Computação 1 Revisão Geral professor: Leonardo Carvalho O que vimos no curso? 2 Escrever uma palavra exatamente 1687 vezes 3 >>>1687*'rapadura ' 4 Desenhos muito loucos 5 Desenhos muito loucos Códigos mind-blowing def multiplica_matrizes(A, B): '''Multiplica duas matrizes.''' n = len(A) m = len(A[0]) p = len(B[0]) C = [] for i in range(n): linha = [] for j in range(p): s = 0 for k in range(m): s += A[i][k]*B[k][j] linha.append(s) C.append(linha) return C 6 Tipos de dados 7 Tipos de dados Numéricos: int, float, long, complex Lógico: bool Texto: str, unicode Coleções: tuple, list, set, dict 8 Variáveis Atribuição: variáveis = valores >>> a = 12.0284795 >>> b = 9 >>> c, d = 3*a, a-b >>> a += 10 >>> b -= c/d**2 9 Operações Em tipos numéricos (int, long, float, complex): Somar: + Subtrair: - Multiplicar: * Dividir: / // Potência: ** Resto: % Comparações: == != < <= > >= 10 Operações No tipo bool: and or not comparação: ==, != 11 Operações Em sequências (tuple, list, str): indexação, fatiamento, concatenação, multiplicação por int, len, index, count, operador in, comparações (==, !=, <, >, <=, >=) Em strings: find, upper, lower, replace, split, partition Em listas: append, extend, insert, remove, del, pop 12 Operações Em conjuntos: add remove, discard, pop union, | intersection, & difference, - issubset, <, <= issuperset, >, >= in, not in, clear, 13 Conjuntos 14 >>> A = {3, 8, 9, 3, 1, 2, 8} >>> B = {9, 5, 2, 6, 3} >>> A&B set([9, 2, 3]) >>> A|B set([1, 2, 3, 5, 6, 8, 9]) >>> A-B set([8, 1]) >>> {8, 9} <= A True >>> {1, 2, 3, 4, 5, 6, 7, 8, 9} > B True Operações Em dicionários: acesso a um item: D[chave] lista de chaves: D.keys() lista de valores: D.values() lista de itens: D.items() pertinência: chave in D apagar dados: del D[chave], D.clear() 15 Dicionários 16 >>> A = {'bolota': 12, 3: 10, 5: 'chimichanga'} >>> A {'bolota': 12, 3: 10, 5: 'chimichanga'} >>> A['bolota'] 12 >>> A[100] = 0 >>> A {'bolota': 12, 3: 10, 100: 0, 5: 'chimichanga'} Estruturas de repetição 17 for x in iterável: ...#Faz algo com x 18 Tipos iteráveis Tuplas: for x in (4, 1, 5, 'batata', 5.8): print x 19 4 1 5 batata 5.8 Tipos iteráveis Listas: for x in ['tututu', 93, 20, 10, 'uia']: print x 20 tututu 93 20 10 uia Tipos iteráveis Strings: for x in 'Bob Esponja': print x 21 B o b E s p o n j a Tipos iteráveis Conjuntos: for x in {10, 30, 20, 'casa', 'casa', 'boca'}: print x 22 20 10 casa boca 30 Tipos iteráveis Dicionários: for x in {10:'a', 4:12, 5:20, 'agua':'fogo'}: print x 23 10 4 5 agua Tipos iteráveis Dicionários: L = {10:'a', 4:12, 5:20, 'agua':'fogo'} for x in L: print x, L[x] 24 10 a 4 12 5 20 agua fogo Tipos iteráveis Geradores (não vimos como criar, apenas como usá-los com for): for x in xrange(10): print x 25 0 1 2 3 4 5 6 7 8 9 Tipos iteráveis Geradores (não vimos como criar, apenas como usá-los com for): V = 4, 7, 8, 2 for x in enumerate(V): print x 26 (0, 4) (1, 7) (2, 8) (3, 2) Tipos iteráveis Geradores (não vimos como criar, apenas como usá-los com for): V = 4, 7, 8, 2 for i, x in enumerate(V): print i, x 27 0 4 1 7 2 8 3 2 while condicao: comandos 28 while L = 'Eram duas caveiras que se amavam' i = 0 while i < len(L): print L[i] i += 3 29 E m u v r e e m a while import random i = random.randint(1, 100) while i != 50: print i i = random.randint(1, 100) 30 93 67 5 80 23 9 21 100 30 70 51 4 97 28 10 65 48 9 1 93 31 break 32 continue 33 break e continue L = ['agua', 'terra', 'vento', 'fogo', 'coracao', 'abelhinha', 'hahaha', 'hehehe'] for i in L: if i=='abelhinha': break if i=='vento': continue print i agua terra fogo coracao Estrutura condicional 34 if condição: comandos 35 Estrutura condicional # -*- coding: utf-8 -*- frase = u'Seu sorriso é tão resplandescente que deixou meu coração alegre' for x in frase.split(): if len(x) > 3: print x 36 sorriso resplandescente deixou coração alegre 37 Matrizes Matrizes A = [ [5, 8, 1, 3], [4, 6, 0, 1], [1, 1, 2, 0] ] B = [[8, 6, 3, 9, 7, 6, 7, 7, 0, 9, 4, 5, 2, 0, 9, 9, 8, 6], [1, 0, 7, 9, 1, 8, 9, 9, 5, 5, 3, 3, 2, 1, 2, 5, 1, 1], [8, 3, 6, 8, 4, 8, 7, 4, 4, 3, 6, 1, 8, 6, 2, 6, 9, 4], [7, 1, 3, 8, 0, 7, 4, 1, 3, 9, 2, 3, 0, 4, 2, 9, 6, 9], [1, 4, 1, 7, 9, 0, 9, 1, 6, 4, 7, 4, 4, 6, 8, 2, 8, 1], [4, 3, 4, 6, 0, 1, 2, 1, 3, 7, 8, 8, 9, 8, 5, 5, 6, 5], [1, 2, 4, 5, 2, 5, 0, 3, 5, 0, 4, 3, 0, 5, 9, 3, 9, 5], [2, 9, 1, 3, 1, 5, 4, 2, 0, 7, 3, 0, 1, 7, 5, 7, 4, 6], [2, 7, 5, 8, 8, 1, 2, 5, 2, 5, 8, 5, 4, 5, 8, 9, 8, 1], [3, 4, 2, 8, 4, 8, 0, 8, 4, 9, 3, 4, 1, 9, 4, 2, 1, 8]] 38 Criação de matrizes def matriz_alguma_coisa(m, n): '''Retorna uma matriz m por n preenchida por alguma coisa.''' A = [] for i in range(m): linha = [] for j in range(n): x = ... # Cálculo do termo A[i][j] linha.append(x) A.append(linha) return A 39 Processamento de matrizes def processa_matriz(A): '''Faz alguma coisa com cada elemento de A.''' m = len(A) n = len(A[0]) for i in range(m): for j in range(n): ... A[i][j] ... 40 Entrada e saída simples 41 Entrada e saída simples print mensagem input(mensagem) raw_input(mensagem) 42 Funções 43 Funções pré-definidas 44 Funções de conversão de dados: dados numéricos: int, float, complex coleções: tuple, list, set, dict string: str Outras funções: len, abs, min, max, sum, sorted, range, xrange, enumerate, zip, round input, raw_input Módulos 45 Módulo math: funções: sin, cos, tan, exp, log, sqrt, degrees, radians, acos, asin variáveis: pi, e Módulo random: randint, random, choice, uniform, sample, shuffle Módulo turtle: forward, backward, left, right, dot, goto, color, speed, etc Definição de funções def funcao_super_util(a, b, c=23, d=None): '''A melhor função de todos os tempos.''' for i in range(a, b): if d != None: c += d%i else: c += i return c 46 Que problemas conseguimos resolver? 47 Lados Dados, para cada triângulo, dois lados e o ângulo entre eles, calcule o outro lado: Primeira solução import math def lado_triangulo(b, c, angulo): '''Retorna um lado de um triângulo, dados dois lados b, c e o angulo entre eles em graus.''' alpha = math.radians(angulo) return math.sqrt(b**2 + c**2 - 2*b*c*math.cos(alpha)) Modo interativo: >>> lado_triangulo(6.73, 5.41, 35.75) 3.932342665242 >>> lado_triangulo(5.37, 9.41, 105.25) 11.998659460091869 >>> lado_triangulo(4.12, 8.87, 113.34) 11.162799978678958 >>> lado_triangulo(14.44, 6.73, 28.18) 9.081970932978138 49 Solução melhorada import math def lado_triangulo(b, c, angulo): '''Retorna um lado de um triângulo, dados dois lados b, c e o angulo entre eles em graus.''' alpha = math.radians(angulo) return math.sqrt(b**2 + c**2 - 2*b*c*math.cos(alpha)) triangulos = [ (6.73, 5.41, 35.75), (5.37, 9.41, 105.25), (4.12, 8.87, 113.34), (14.44, 6.73, 28.18)] for b, c, ang in triangulos: print b, c, ang, '->', lado_triangulo(b, c, ang) 50 6.73 5.41 35.75 -> 3.932342665245.37 9.41 105.25 -> 11.9986594601 4.12 8.87 113.34 -> 11.1627999787 14.44 6.73 28.18 -> 9.08197093298 Áreas Calcule a área do polígono, dadas as coordenadas dos vértices: Solução def area_poligono(P): '''Calcula a área de um polígono P''' s = 0 n = len(P) for i in range(n): x0, y0 = P[i-1] x1, y1 = P[i] s += .5*(y0+y1)*(x1-x0) return s P = [(3.71, 3.51), (7.58, 8.21), (13.83, 4.95), (12.77, 1.61), (8.01, 3.94)] print area_poligono(P) 52 31.0999 Provas ● 3 provas ● É necessário fazer pelo menos 2 provas! ● Nota final ○ NF = 30%P1 + 50%max(P2, P3) + 20%T ○ NF = 40%P2 + 40%P3 + 20%T (se não fizer a P1) ● Aprovação: NF >= 5.0 Exercício Crie uma função que calcula a nota final de um aluno, dadas as notas das provas e do trabalho. Usando None quando o aluno não tiver feito alguma prova. >>> nota_final(6, 7, None, 8) 6.9 >>> nota_final(None, 5, 4, 7) 5.0 >>> nota_final(None, 3, 5, 6) 4.4 Solução # -*- coding: utf8 -*- import math def nota_final(P1, P2, P3, T): '''Calcula a nota final de um aluno de computação.''' if T == None: T = 0 L = P1, P2, P3 if L.count(None) > 1: NF = 0 elif P1 != None: NF = .3*P1 + .5*max(P2, P3) + .2*T else: NF = .4*P2 + .4*P3 + .2*T return round(NF, 1) 55 Exemplo Escreva um programa completo (incluindo função main) que peça ao usuário digitar as notas das provas (deixando em branco se não tiver feito) e do trabalho e calcule e mostre a média final e se o aluno foi aprovado no curso. Nota da prova 1: 7 Nota da prova 2: 6 Nota da prova 3: 4 Nota do trabalho: 8 Nota final: 6.7 Aprovado! 56 Exemplo ... def ler_nota(msg): '''Pede um valor ao usuário, retorna None se o usuário não informar nada''' n = raw_input(msg) if n == '': return None else: return float(n) ... 57 Exemplo ... def main(): p1 = ler_nota('Nota da prova 1: ') p2 = ler_nota('Nota da prova 2: ') p3 = ler_nota('Nota da prova 3: ') T = ler_nota('Nota do trabalho: ') nota = nota_final(p1, p2, p3, T) print 'Nota final: ', nota if nota >= 5: print 'Aprovado!' else: print 'Reprovado!' if __name__ == '__main__': main() 58 59
Compartilhar