Baixe o app para aproveitar ainda mais
Prévia do material em texto
Universidade Federal do Rio de Janeiro Engenharia de Produção – Turma EP1 3ª Prova de Computação 1 11 de julho de 2011 Duração: 2 horas Questão 1: Um passeio aleatório no Metrô (3.0 pontos) from random import * estacoes = ['Ipanema/Gal Osório', 'Cantagalo', 'Siqueira Campos', 'Cardeal Arcoverde', 'Botafogo', 'Flamengo', 'Largo do Machado', 'Catete', 'Glória', 'Cinelândia', 'Carioca', 'Uruguaiana', 'Presidente Vargas', 'Central', 'Cidade Nova', 'São Cristóvão', 'Maracanã', 'Triagem', 'Maria da Graça', 'Nova América/Del Castilho', 'Inhauma', 'Engenho da Rainha', 'Thomaz Coelho', 'Vicente de Carvalho', 'Irajá', 'Colégio', 'Coelho Neto', 'Acari Fazenda Botafogo', 'Eng. Rubens Paiva', 'Pavuna'] INICIAL = 4 NUM_PARADAS = 7 atual = INICIAL print 'Início na estação', estacoes[atual] i = 0 while i < NUM_PARADAS: direcao = choice(['norte', 'sul']) numEstacoes = randint(1, 6) if direcao == 'sul': numEstacoes *= -1 if 0 <= atual + numEstacoes < len(estacoes): atual += numEstacoes print 'Viaja %d estações para o %s até a estação %s' % \ (abs(numEstacoes), direcao, estacoes[atual]) i += 1 else: print 'Viaja %d estações para o %s -- Fora dos limites. Tente novamente.' % \ (abs(numEstacoes), direcao) print 'Final na estação %s' % estacoes[atual] Questão 2: Metagramas (3.0 pontos) def ehPalavraExistente(palavra): lexico = ['LAMA', 'LEMA', 'TEMA', 'TELA', 'CELA', 'CERA', 'PERA', 'PIRA', 'TEMAS'] return palavra in lexico def contaCaracteresDiferentes(s1, s2): conta = 0 for i in range(len(s1)): if s1[i] != s2[i]: conta += 1 return conta def ehMetagrama(anterior, atual): if not ehPalavraExistente(atual): return False if anterior == '': return True; if len(anterior) != len(atual): return False return contaCaracteresDiferentes(anterior, atual)==1 print 'Programa para verificar um metagrama.' print 'Entre com uma sequencia de palavras, terminando com uma linha em branco.' anterior = '' while True: atual = raw_input().upper() if atual == '': break if not ehMetagrama(anterior, atual): print 'Essa palavra não é válida. Tente novamente.' else: anterior = atual Questão 3: Círculos Caindo (4.0 pontos) from Tkinter import * import random import time DELAY = 0.02 # pausa entre animações MIN_DIAM = 30 # diametro mínimo de um círculo MAX_DIAM = 100 # diametro máximo de um circulo LARGURA = 500 # largura do canvas ALTURA = 300 # altura do canvas DY = 2 # deslocamento vertical (em pixels) dos círculos # a cada intervalo de animação def osCirculosSeForam(): return len(listaCirculos) == 0 def criaCirculos(): numeroDeCirculos = random.randint(1, 10) for i in range(numeroDeCirculos): diametro = random.uniform(MIN_DIAM, MAX_DIAM) x0 = random.uniform(0, LARGURA - diametro) y0 = random.uniform(0, ALTURA - diametro) oval = canvas.create_oval(x0,y0, x0+diametro,y0+diametro, fill='white') listaCirculos.append(oval) def moveCirculos(): for o in listaCirculos: canvas.move(o, 0, DY) coords = canvas.coords(o) if coords[1] > ALTURA: listaCirculos.remove(o) canvas.delete(o) time.sleep(DELAY) canvas.update() def cliqueMouse(e): objetos = canvas.find_overlapping(e.x, e.y, e.x, e.y) if len(objetos) > 0: listaCirculos.remove(objetos[0]) canvas.delete(objetos[0]) listaCirculos = [] canvas = Canvas(background='white', width=LARGURA, height=ALTURA) canvas.pack() canvas.bind("<Button-1>", cliqueMouse) while True: if osCirculosSeForam(): criaCirculos() moveCirculos() mainloop()
Compartilhar