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 2ª Prova de Computação 1 7 de março de 2013 Questão 1: Expressões Python simples (3.0 pontos) Determine o valor das expressões a seguir. Indique o raciocínio que o levou a cada uma das respostas. i. 5.0 + (ord('D') - ord('A')) / 2 = 5.0 + 3 / 2 = 5.0 + 1 = 6.0 ii. 4 != 4 / 2 or 5 % 2 == 1 and 7 / 3 > 2 = 4 != 2 or 1 == 1 and 2 > 2 = True or True and False = True or False = True iii. str((ord('c') - ord('a')) + 3) + "a" = str(2 + 3) + "a" = str(5) + "a" = "5" + "a" = "5a" Questão 2: Um programa simples usando o módulo random (4.0 pontos) Escreva um programa que simule uma sequencia de lançamentos de um dado. O tamanho da sequencia deve ser parametrizado no código através da variável NUM_LANCAMENTOS. Ao final dos lançamentos, seu programa deve determinar o tamanho da maior série de números em ordem crescente. Exemplo 1: lançamento: 5 lançamento: 6 lançamento: 6 lançamento: 5 lançamento: 2 lançamento: 1 lançamento: 1 lançamento: 1 lançamento: 3 lançamento: 3 lançamento: 3 lançamento: 2 lançamento: 4 lançamento: 4 lançamento: 6 lançamento: 1 lançamento: 2 lançamento: 3 lançamento: 4 lançamento: 6 Maior sequencia: 4 Exemplo 2: lançamento: 2 lançamento: 5 lançamento: 2 lançamento: 5 lançamento: 3 lançamento: 5 lançamento: 4 lançamento: 4 lançamento: 2 lançamento: 3 lançamento: 4 lançamento: 6 lançamento: 3 lançamento: 5 lançamento: 2 lançamento: 1 lançamento: 2 lançamento: 3 lançamento: 1 lançamento: 2 Maior sequencia: 3 from random import * NUM_LANCAMENTOS = 20 NUM_FACES = 6 tamMaximaSequencia = 0 tamSequenciaAtual = 0 ultimoLancamento = -1 # No início, não há um lançamento anterior válido for i in range(NUM_LANCAMENTOS): lancamento = randint(1, NUM_FACES) print "lançamento:", lançamento # O lançamento anterior continua a sequencia? if lancamento == (ultimoLancamento + 1): tamSequenciaAtual += 1 else: tamSequenciaAtual = 1 # inicia uma nova sequencia # verifica se a sequencia atual é maior do que a maior sequencia até agora if tamSequenciaAtual > tamMaximaSequencia: tamMaximaSequencia = tamSequenciaAtual ultimoLancamento = lancamento # mantém o registro do último lançamento # Se nenhuma sequencia foi encontrada, a maior sequencia tem tamanho 1 if tamMaximaSequencia == 1: print "Não foram encontradas sequencias" else: print "Maior sequencia:", tamMaximaSequencia Questão 3: Tkinter (3.0 pontos) Escreva um aplicativo Tkinter que, após alguns cliques do mouse, mostre ao usuário uma imagem oculta. Seu programa deverá inicialmente desenhar no canvas a imagem de fundo. Figura 1: A imagem de fundo Em seguida você deve ocultar a imagem com dezesseis retângulos cinzas, todos do mesmo tamanho. Figura 2: A imagem encoberta pelos retângulos Seu programa deve então entrar mainloop() e esperar pelos eventos provocados pelo usuário. A cada clique do mouse o programa deve apagar o retângulo na posição correspondente descobrindo assim partes da imagem original. Figura 3: O canvas após alguns cliques do mouse Esteja certo de não apagar a imagem de fundo! O seguinte código pode servir de base à sua solução: root = Tk() minerva = PhotoImage(file="minerva.gif") canvas = Canvas(width=minerva.width(), height=minerva.height()) canvas.pack() # seu código aqui... mainloop() from Tkinter import * # Nome do arquivo contendo a imagem escondida ARQUIVO_IMAGEM = "minerva.gif" def escondeImagem(): width = canvas.winfo_reqwidth() / 4.0 height = canvas.winfo_reqheight() / 4.0 for x in range(4): for y in range(4): canvas.create_rectangle(x * width, y * height, (x + 1)*width, (y + 1)*height, outline='white', fill='gray') def clicouMouse(e): hit = canvas.find_overlapping(e.x, e.y, e.x, e.y) if len(hit) > 1: canvas.delete(hit[1]) root = Tk() minerva = PhotoImage(file=ARQUIVO_IMAGEM) canvas = Canvas(width=minerva.width(), height=minerva.height()) canvas.pack() background = canvas.create_image(minerva.width()/2, minerva.height()/2, image=minerva) escondeImagem() canvas.bind("<1>", clicouMouse) mainloop()
Compartilhar