Baixe o app para aproveitar ainda mais
Prévia do material em texto
FONTE DOS EXERCÍCIOS: a maior parte dos exercícios a seguir foi retirada de: https://panda.ime.usp.br/pensepy/static/pensepy/index.html https://developers.google.com/edu/python/ EXERCÍCIOS 1 - Crie uma lista chamada minha_lista com os seguinte items: 76, 92.3, “oi”, True, 4, 76. minha_lista = [76, 92.3, 'oi', True, 4, 76] 2 - Considerando a lista do exercício anterior, escreva comandos para: a) Inserir “laranja” e 76 no final da lista. minha_lista.extend(['laranja',76]) b) Inserir “gato” na posição de índice 3. minha_lista.insert(3,'gato') c) Inserir 99 no início da lista. minha_lista.insert(0,99) d) Encontrar o índice de “oi”. i = minha_lista.index('oi') e) Contar o número de ocorrências de 76 na lista. n = minha_lista.count(76) f) Remover a primeira ocorrência de 76 da lista. i = minha_lista.index(76) del minha_lista[i] g) Remover True da lista usando pop e index. i = minha_lista.index(True) pop = minha_lista.pop(i) 3 - Escreva uma função calcula_maximo que receba como entrada uma lista de números inteiros e retorne o maior valor na lista. Por exemplo, calcula_maximo([4,3,6,1,2]) deve retornar 6. (Observação: existe a função max que faz isso, mas você não deve usá-la.) def calcula_maximo(L): maior = L[0] for n in L: if(n > maior): maior = n return maior 4 - Escreva uma função soma_quadrados que receba como entrada uma lista de números e retorne a soma dos quadrados dos números na lista. Por exemplo, soma_dos_quadrados([2, 3, 4]) deve retorna 4+9+16 que é 29. def soma_dos_quadrados(L): soma = 0 for n in L: soma = soma + n*n return soma 5 - Escreva uma função soma_impares que receba como entrada uma lista de números inteiros e retorne a soma dos números ímpares na lista. Por exemplo, soma_impares([11,20,36,41,55,6]) deve retornar 107. def soma_impares(L): soma = 0 for n in L: if(n%2==1): soma = soma + n return soma 6 - Escreva uma função quantidade_negativos que receba como entrada uma lista de números inteiros e retorne a quantidade de números negativos na lista. Por exemplo, quantidade_negativos([1,2,3,4,5,6]) deve retornar 4. def quantidade_negativos(L): qtde = 0 for n in L: if(n<0): qtde = qtde + 1 return qtde 7 - Escreva uma função quantidade_palavras_5 que receba como entrada uma lista de palavras e retorne o número de palavras na lista que tenham comprimento 5. Por exemplo, quantidade_palavras_5(['Brasil','peralta','mesa','lance', 'teste']) deve retornar 2. def quantidade_palavras_5(L): qtde = 0 for n in L: if(len(n)==5): qtde = qtde + 1 return qtde 8 - Escreva uma função soma_par que receba como entrada uma lista de números inteiros e retorne a soma dos números na lista, excluindo o primeiro número par. Por exemplo, soma_par([12,20,13,84,15,6]) deve retornar 20+84+6 = 110. def soma_par(L): primeiro = False soma = 0; for n in L: if(n%2==0): if(primeiro==False): primeiro = True else: soma = soma + n return soma 9 - Escreva uma função quantidade_palavras_fim que receba como entrada uma lista de palavras e retorne o número de palavras que ocorre na lista até, e inclusive, a primeira ocorrência da palavra “fim”. Por exemplo, quantidade_palavras_fim(['Brasil', 'peralta', 'mesa', 'fim', 'lance', 'teste', 'fim', 'gato']) deve retornar 4. def quantidade_palavras_fim(L): i = L.index('fim') return len(L[:i+1]) 10 - Escreva um função imprime_letras que receba como entrada uma lista de palavras e imprima todas as letras da lista. Por exemplo, imprime_letras([“pera”, “laranja”, “uva”]) deve imprimir 'p,e,r,a,l,a,r,a,n,j,a,u,v,a '. def imprime_letras(L): letras='' for n in L: letras = letras + n print(','.join(letras)) 11 - Apesar do Python fornecer uma grande lista de métodos e funções nativos, é uma boa prática e instrutivo pensar sobre como eles podem ser implementados. Implemente uma função que se comporte como os seguintes comandos do Python: a) count def meu_count(L,v): qtde = 0 for n in L: if(n==v): qtde = qtde + 1 return qtde b) in def meu_in(L,v): em = False for n in L: if(n==v): em = True break return em c) reverse def meu_reverse(L): return L[::1] d) index def meu_index(L,v): indice = 1 for i,n in enumerate(L): if(n==v): indice = i break return indice e) insert def meu_insert(L,posicao,valor): L_novo = L[:posicao] + [valor] + L[posicao:] return L_novo 12 – Escreva uma função palavras_inicio_fim_iguais que receba como entrada uma lista de palavras e retorne a quantidade de palavras da lista que possuem 2 ou mais caracteres e cujos primeiro e último caracteres sejam iguais. Por exemplo, palavras_inicio_fim_iguais(['aba', 'xyz', 'aa', 'x', 'bbb']) retorna 3. def palavras_inicio_fim_iguais(L): qtde = 0; for n in L: if(len(n)>=2 and n[0]==n[1]): qtde = qtde + 1 return qtde 13 – Escreva uma função x_na_frente que receba como entrada uma lista de palavras e retorne uma lista ordenada com as palavras da lista de entrada, considerando que as palavras que começam com 'x' devam vir antes. Por exemplo, x_na_frente(['bbb', 'ccc', 'axx', 'xzz', 'xaa']) deve retornar ['xaa', 'xzz', 'axx', 'bbb', 'ccc']. Dica: ordene as palavras com 'x' em uma lista e as demais em outra lista e depois concatene. def x_na_frente(L): L_comeca_x = [] L_nao_comeca_x = [] for n in L: if(n[0]=='x'): L_comeca_x.append(n) else: L_nao_comeca_x.append(n) return sorted(L_comeca_x) + sorted(L_nao_comeca_x) 14 – Escreva uma função ordenar_ultimo que receba como entrada uma lista de tuplas não vazias e retorne uma lista ordenada com as tuplas, segundo o último elemento de cada tupla. Por exemplo, ordenar_ultimo([(1, 7), (1, 3), (3, 4, 5), (2, 2)]) deve retornar [(2, 2), (1, 3), (3, 4, 5), (1, 7)]. Dica: Utilize ordenação personalizada usando key. def meu_key(e): return e[-1] def ordenar_ultimo(L): return sorted(L,key=meu_key) 15 - Escreva uma função troca que receba como entrada três strings str, velho e novo e troca em str todas as ocorrências de velho por novo. Por exemplo, troca('Um aluno, dois alunos, tres alunos.','aluno','estudante') deve retornar a string 'Um estudante, dois estudante, tres estudantes.'. Observação: existe a função replace que faz isso, mas você não deve usá-la. (Dica: use os métodos split e join). def troca(str,velho,novo): str_nova = '' inicio=0 while(True): i = str.find(velho,inicio) if(i != -1): str_nova = str_nova + str[inicio:i] + novo inicio = i+len(velho) else: str_nova = str_nova + str[inicio:] break return str_nova 16 – Escreva uma função remove_pontuacao que receba como entrada uma string e retorne outra string com os caracteres da primeira sem os sinais de pontuação. Por exemplo, remove_pontuacao('Hoje eh dia de sol! Voce quer ir a praia, Emanuel?') deve retornar a string 'Hoje eh dia de sol Voce quer ir a praia Emanuel'. def remove_pontuacao(str): str_novo='' for n in str: if(n not in ',.!?'): str_novo = str_novo + n return str_novo 17 – Escreva uma função informacoes_string que receba como entrada uma string e imprima na tela uma mensagem da seguinte forma, contendo informações sobre a string: O texto contem 243 palavras, das quais 109 (44.8%) contem um 'e'. Por exemplo, informacoes_string('Uma string eh uma colecao ordenada de zero ou mais letras, numeros e outros simbolos.') deve imprimir na tela “O texto contém 15 palavras, das quais 8 (0.53%) contem um 'e'.” def informacoes_string(str): qtde_e = 0 palavras = str.split(' ') for n in palavras: if('e'in n): qtde_e = qtde_e + 1 print('O texto contém %d palavras, das quais %d (%f%%) contem um e.' % (len(palavras),qtde_e,qtde_e/(1.0*len(palavras)) ) ) 18 - Escreva uma função numero_digitos que receba como entrada um número inteiro e retorne o número de dígitos desse inteiro. Por exemplo numero_digitos(5237) deve retornar 4. def numero_digitos(d): s = str(d) return len(s) 19 - Escreva uma função remove_ocorrencias que receba como entrada uma string e uma letra e retorne uma string na qual todas as ocorrências da letra na string de entrada são removidas. Por exemplo, remove_ocorrencias('algoritmos e estrutura de dados','a') deverá retornar a string 'lgoritmos e estrutur de ddos'. def remove_ocorrencias(str,letra): str_nova = '' inicio=0 while(True): i = str.find(letra,inicio) if(i != -1): str_nova = str_nova + str[inicio:i] inicio = i+1 else: str_nova = str_nova + str[inicio:] break return str_nova 20 - Escreva uma função eh_palindroma que recebe como entrada uma string e retorna um valor booleano indicando se a string é palíndroma ou não. Por exemplo, eh_palindroma('arara') deve retorna True. (Dica: use a função reverse). def eh_palindroma(str): if(str == str[::-1]): return True else: return False 21 - Escreva uma função quantidade_string que recebe como entrada duas strings e retorne a quantidade de vezes que a primeia string ocorre na segunda. Por exemplo, quantidade_string('aluno','Um aluno, dois alunos, tres alunos.') deve retornar 3. (Dica: use a função find). def quantidade_string(str1,str2): qtde = 0 inicio = 0 while(True): i = str2.find(str1,inicio) if(i != -1): qtde = qtde + 1 inicio = i + 1 else: break return qtde 22 - Qual o resultado de cada um dos comandos seguintes: 1.'Python'[1] 'y' 2.'Strings são sequências de caracteres.'[5] 'g' 3.len('maravilhoso') 11 4.'Misterio'[:4] 'Mist' 5.'p' in 'Pineapple True 6.'apple' in 'Pineapple True 7.'pear' not in 'Pineapple True 8.'apple' > 'pineapple' False 9. 'pineapple' < 'Peach' False 23 - No livro Make Way for Ducklings de Robert McCloskey, os patinhos são chamados de Jack, Kack, Lack, Mack, Nack, Ouack, Pack, e Quack. Esse laço tenta imprimir esses nomes ordenadamente. prefixes = "JKLMNOPQ" suffix = "ack" for p in prefixes: print(p + suffix) É claro que esse programa tem problemas pois Ouack e Quack não são escritos corretamente. Você consegue consertar o programa? Podemos substituir o primeiro comando por: prefixes = ['J', 'K', 'L', 'M', 'N', 'Ou', 'P', 'Qu'] 24 - Escreva uma função interseccao que receba duas strings como entrada e retorne uma nova string contendo os caracteres comuns às duas strings de entrada. Por exemplo, interseccao('escolas','estudantes') deve retornar 'esa'. def interseccao(str1,str2): inter='' for n in str1: if(n in str2 and n not in inter): inter = inter + n return inter 25 – Escreva uma função nao_eh_ruim que receba como entrada uma string e encontre as primeiras ocorrências de 'nao eh' e de 'ruim'. Se 'nao' vier antes de 'ruim', deve-se substituir a expressão 'nao eh...ruim' por 'eh bom', retornando a nova string. Por exemplo, nao_eh_ruim('Figado nao eh tao ruim') deve retornar 'Figado eh bom'. def nao_eh_ruim(str): i1 = str.find('nao eh') i2 = str.find('ruim') if(i1 < i2): return str[:i1] + 'eh bom' + str[(i2+4):] else: return str DICIONÁRIOS 1 - Escreva um programa que leia uma string do teclado e retorne uma tabela com a frequência com que cada letra aparece na string, em ordem alfabética. Ignore se as letras são maiúsculas ou minúsculas. Um exemplo de execução do programa ficaria assim: "ThiS is String with Upper and lower case Letters." a 2 c 1 d 1 e 5 g 1 h 2 i 4 l 2 n 2 o 1 p 2 r 4 s 5 t 5 u 1 w 2 str = raw_input('Digite uma frase: ') str = str.lower() dic={} for n in str: if(dic.has_key(n) == False): dic[n] = 0 dic[n] = dic[n]+1 for n in sorted(dic.keys()): if(n.isalpha()==True): print(n,dic[n]) 2 - Forneça a resposta do interpretador Python para cada uma das questões seguintes, assumindo que os comandos são dados continuamente na mesma sessão: >>> d = {'apples': 15, 'bananas': 35, 'grapes': 12} d['banana'] KeyError: 'banana' d['oranges'] = 20 len(d) 4 'grapes' in d True d['pears'] KeyError: 'pears' d.get('pears', 0) 0 fruits = d.keys() fruits.sort() print(fruits) ['apples', 'bananas', 'grapes', 'oranges'] del d['apples'] 'apples' in d False Certifique-se de que você entendeu a razão de cada resultado. Então aplique o que você aprendeu para preencher o corpo da função abaixo: def add_fruit(inventory, fruit, quantity): global new_inventory new_inventory[fruit] = quantity # faça esses testes funcionarem... new_inventory = {} add_fruit(new_inventory, 'strawberries', 10) test('strawberries' in new_inventory, True) test(new_inventory['strawberries'], 10) add_fruit(new_inventory, 'strawberries', 25) test(new_inventory['strawberries'] , 35) 3 - A seguinte tabela contém tradução de algumas palavras em português para a língua dos piratas Português Pirata senhor matey hotel fleabag inn estudante swabbie garoto matey madame proud beauty professor foul blaggart restaurante galley seu yer com licença arr estudantes swabbies são be advogado foul blaggart o th’ banheiro head meu me oi avast é be homem matey Escreva um programa que pede que o usuário digite uma frase em português e imprima a tradução da frase para a língua dos piratas. Dicionario = {'senhor':'matey','hotel':'fleabag inn','estudante':'swabbie','garoto':'matey','madame':'proud beauty','professor':'foul blaggart','restaurante':'galley','seu':'yer','com licença':'arr','estudantes':'swabbies','são':'be','advogado':'foul blaggart','o':'th’','banheiro':'head','meu':'me','oi':'avast','é':'be','homem':'matey'} frase = raw_input('Digite uma frase para ser traduzida: ') palavras = frase.split(' ') frase_pirata = '' for n in palavras: if(Dicionario.has_key(n)==True): frase_pirata = frase_pirata + Dicionario[n] + ' ' else: frase_pirata = frase_pirata + n + ' '
Compartilhar