Introdução à Programação - minor João Pedro PEDROSO Departamento de Ciência de Computadores Faculdade de Ciências da Universidade de Porto Ano lectivo de 2012/2013 [email protected] Aula número 7 Revisões 1. Escreva um programa que imprima os valores de i e de 2i para i = 0, . . . , 64 com o seguinte formato: 0 1 1 2 2 4 3 8 4 16 [...] 64 18446744073709551616 2. Escreva um programa que imprima uma tabela com os logaritmos neperianos com 10 algarismos decimais, para os valores x = 1, 2, . . . , 10. (Utilize o operador de formatação %.) 3. Escreva uma função para lêr um valor numérico do teclado, e escrever uma frase dizendo se esse valor é menor, igual, ou maior do que zero. Sequências 4. Escreva uma função para contar quantos números pares há numa lista. (b) inserir o valor "cat" na posição 3; 5. Escreva uma função para somar os números pares de uma lista. (d) encontrar o índice de "hello"; 6. Escreva uma função para somar os números negativos ímpares de uma lista. (f) remover o elemento True utilizando o método pop e um índice; 7. Some todos os elementos de uma lista anteriores ao primeiro número par (exclusive). (c) inserir o valor 99 no princípio da lista; (e) contar o número de 76 na lista; 13. Considere as seguintes listas: 8. Conte quantas palavras há numa lista até à primeira ocorrência da palavra ip. t1 = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] t2 = [’Janeiro’, ’Fevereiro, ’Março’, ’Abril’, ’Maio’, ’Junho’, ’Julho, ’Agosto, ’Setembro’, ’Outubro’, ’Novembro’, ’Dezembro’] 9. Escreva a função sum_of_squares(xs) que calcula a soma dos quadrados dos números da lista xs. Crie um programa que constroi uma nova lista 10. Desenhe o diagrama de referência para a e b antes e depois de a terceira linha do código que se segue ser executada. (a) a = [1, 2, 3] (b) a = [1, 2, 3] b = a[:] b[0] = 5 b = a b[0] = 5 11. Crie uma lista chamada myList com os seguintes itens: 76, 92.3, "hello", True, 4, 76. Efetue um ciclo que imprime o valor e o tipo de cada elemento da lista. 12. Considere ainda a lista myList. Escreva instruções Python para fazer o seguinte: (a) adicionar "apple" à lista; [(’Janeiro’,31), (’Fevereiro’,28), ..., (’Dezembro’,31)] 14. Implemente uma função para imprimir todos os elementos de uma lista numa só linha, separados por um espaço. 15. Crie uma lista contendo 100 inteiros, aleatórios, com valores entre 0 e 1000. Escreva a função average que toma uma lista de valores numéricos como argumento e devolve a sua média; teste-a com uma lista para as quais conheça o resultado e com a lista que criou nesta alínea. 16. Escreva uma função que tome como parâmetro uma lista de inteiros e devolva o seu valor máximo. Testea como na alínea anterior. (Nota: ignore a função max do Python.) 17. Python fornece muitos métodos para listas, mas é instrutivo sabermos como podem ser implementados. Implemente funções em Python que funcionem como os seguintes métodos: count in reverse index insert. 18. Escreva a função replace(s, old, new) que substitui todas das ocorrências de old com new na string s. Executando replace(’Mississippi’, ’i’, ’I’) deveremos obter a string ’MIssIssIppI’. Utilize os métodos split e join. 19. Escreva uma função que, dada uma string com o nome completo de uma pessoa, devolva uma string com primeiro, segundo, e último nomes. Adicione um teste por forma a não contarem como nome as preposições da das de do dos e. Considere a possibilidade de o nome ter apenas uma ou duas palavras. (Sugestão: utilize split e join). 20. Escreva uma função para resolver equações do segundo grau. A função deverá devolver uma lista com as raízes (que poderá ter zero, um, ou dois elementos). 21. Utilizando tuplos, implemente a função circleInfo(r) que devolve a área e o perímetro de um círculo de raio r. 22. Considere o seguinte programa: def swap(x, y): # incorrect version print("before swap statement: id(x):", id(x), "id(y):", id(y)) x, y = y, x print("after swap statement: id(x):", id(x), "id(y):", id(y)) (a, b) = (0, 1) print("before swap function call: id(a):", id(a), "id(b):", id(b)) swap(a, b) print("after swap function call: id(a):", id(a), "id(b):", id(b)) Execute o programa e descreva o resultado. Utilizeo para explicar porque é que esta versão de swap não funciona. Quais serão os valores de a e de b depois da chamada a swap? 23. Escreva um programa para ler um valor do teclado e dizer se esse valor é um número. Assuma primeiro que o número é inteiro e positivo, e estenda a análise para números fracionários, positivos ou negativos. 24. Tendo em conta o que foi dito sobre Unicode, e que na versão 3 do Python as strings são compostas por carateres nesse formato, teste e explique o seguinte programa: s = "" i = 945 while i <= 969: s += chr(i) i= i + 1 print(s) Exercício a apresentar: um os seguintes, indicados a itálico, a ser sorteado. 25. Implemente a função split(a) que, dada uma lista de inteiros a, devolve um tuplo com duas listas: uma com os números pares existentes em a, e outra com os seus números ímpares. A ordem da lista a deve ser mantida. 26. Escreva uma função occur(a,s) que, dada uma lista de strings a e uma string s, retorna uma lista com um tuplo por cada string de a, contendo a própria string e um valor lógico que indica se s está nela contida. (Nota: não esqueça que maiúsculas e minúsculas são casos diferentes.) Por exemplo, occur(["Anabela", "Bela", "Ana"], "bela") deverá devolver [(’Anabela’, True), (’Bela’, False), (’Ana’, False)]. 27. Implemente a função dupl(a) que, dada uma lista a, devolve um tuplo contendo duas listas: a própria lista a, e uma lista com esses valores (pela mesma ordem), mas com o valor "*" a substituir cada elemento do tipo string. Por exemplo, dupl([1,2,"a",3]) deverá retornar ([1,2,"a",3],[1,2,"*",3]).