Você está na página 1de 3

Curso: Computação II

Lista de Exercícios: Listas, Arquivos, Exceções


Professor: Jonas Knopman

Exercício 1: Estica
Escreva uma função chamada estica() que recebe como um parâmetro um List Python contendo números
inteiros e modifica-o de modo que, ao final do processamento, ele contém o dobro de elementos da lista
original. Para isto, todo número inteiro na lista original é substituído por um par de inteiros, cada um metade
do número original. Se o número na lista original for ímpar, então o primeiro número no novo par deve ser
uma unidade maior do que o segundo, de modo que a soma seja igual ao número original. Por exemplo, se a
variável lista contém os valores [18, 7, 4, 24, 11], a chamada de estica(lista) deve alterar
lista para que ela contenha [9, 9, 4, 3, 2, 2, 12, 12, 6, 5] (O número 18 é esticado no par 9,
9, o número 7 no par 4, 3, o número 4 no par 2, 2, o número 24 no par 12, 12 e o número 11 é esticado em
6, 5).
O exemplo a seguir deve deixar clara sua tarefa.
def estica(intList):
# seu código aqui
pass

lista = [18, 7, 4, 24, 11]


estica(lista)
print lista # imprimirá [9, 9, 4, 3, 2, 2, 12, 12, 6, 5]

Observe que a função estica() não retorna uma nova lista, ao contrário, ela modifica a lista recebida no
mesmo endereço de memória da lista original.

Exercício 2: Joga moedas


Escreva uma função chamada jogaMoedas()que recebe como parâmetro um objeto do tipo arquivo.
Suponha que os dados do arquivo de entrada representem resultados de sequências de lançamentos de
moedas anotados como cara (H) ou coroa (T), em maiúsculas ou minúsculas, separados por ao menos um
espaço em branco. Sua função deve considerar cada linha do arquivo de entrada como um conjunto
independente de lançamentos de moedas e deve imprimir no console o número e a porcentagem de caras
nessa linha. Se esse percentual for maior que 50%, você deve imprimir uma mensagem adicional na forma
'Mais caras que coroas!'.
Considere por exemplo o seguinte arquivo de entrada:
H T H H T
T t t T h H
h

Para a entrada acima, sua função deve produzir a seguinte saída:


3 cara(s) (60%)
Mais caras que coroas!

2 cara(s) (33%)

1 cara(s) (100%)
Mais caras que coroas!

Você pode assumir que o arquivo de entrada contém pelo menos uma linha e que, cada linha, contém pelo
menos um símbolo e que nenhum símbolo diferente de h, H, t ou T estará presente nas linhas.
O seguinte trecho de código deve deixar clara sua tarefa.
def jogaMoedas(arq):
# seu código aqui
pass

arq = open('jogaMoedas.txt')
jogaMoedas(arq)
arq.close()

Exercício 3: Exceções
Observe o trecho de código a seguir:

TAM = 10

lista = []
for i in range(TAM):
lista.append(i)

def imprimeLista(lista):
try:
print 'Entrando no try'
out = open('arqSai.txt', 'w')
for i in range(len(lista)):
out.write('Valor na posição %d: %d\n' % (i, lista[i]))
except IndexError as e:
print "Erro no índice: " + e.message
except IOError as e:
print "Erro de entrada/saída: " + e.message
finally:
print 'Fechando o arquivo de saída'
out.close()

Acrescente a esse código a função leLista(lista) que lê números inteiros de um arquivo (um número
por linha), e acrescenta cada número lido ao final da lista recebida como parâmetro. Você deve capturar
todos os possíveis erros em sua função. O trecho de código a seguir deve deixar clara a sua tarefa:

leLista(lista)
'''
Suponha que o arquivo de entrada contém os números (um por linha):
78
87
9
3
59
'''
imprimeLista(lista)
'''
A saída do programa seria:
Entrando no try
Fechando o arquivo de entrada
Entrando no try
Fechando o arquivo de saída

E o conteúdo de arqSai.txt seria:


Valor na posição 0: 0
Valor na posição 1: 1
Valor na posição 2: 2
Valor na posição 3: 3
Valor na posição 4: 4
Valor na posição 5: 5
Valor na posição 6: 6
Valor na posição 7: 7
Valor na posição 8: 8
Valor na posição 9: 9
Valor na posição 10: 78
Valor na posição 11: 87
Valor na posição 12: 9
Valor na posição 13: 3
Valor na posição 14: 59
'''

Você também pode gostar