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]).
Download

Introdução à Programação