Baixe o app para aproveitar ainda mais
Prévia do material em texto
INF1025: Introdução à Programação Monitor: André Vicente Pessanha Lista de exercícios: *************************************************************************************************** OBS: Esse PDF contém exercícios de todos os tópicos de Python (P1, P2 e P3) Então pra facilitar, use o atalho CTRL + F e digite >> Exercícios de << e é só apertar enter até chegar no tópico desejado. :) *************************************************************************************************** Exercícios de Variáveis: EX1: Calcule o perímetro de um círculo de raio 5. (Dica: Use a fórmula p = 2*Pi*r) import math r = 5 p = 2 * math.pi * r print("Perímetro: %.2f" % p) EX2: Os raios dos anéis do casco de um caracol do centro até a borda crescem exponencialmente de acordo com a expressão: (3 + r)^n sendo r, o raio e n o número do anel. Qual o diâmetro do 5º anel em cm, sabendo que o raio é 2.1cm? r = 2.1 n = 5 total = (3 + r) ** n print(total) EX3: Uma torneira despeja 75 litros de água por hora. Quanto tempo, em horas, levará para encher uma caixa de 3150 litros? Q = V/ t Regra de três: 75 - 1h 3150 - x print(3150 / 75) EX4: Uma indústria produziu 188 peças e quer colocá-las em 12 caixas, de modo que todas as caixas tenham o mesmo número de peças. Quantas peças serão colocadas em cada caixa? print(188 //12 ) OBS: Aqui temos que usar o operador de divisão inteira! ------------------------------------------------------- // ------------------------------------------------------------ Exercícios de String: EX1: Guarde seu nome numa variável e exiba-o precedido e sucedido pela string formada por '*' com metade do comprimento de seu nome Exemplo: Nome: Mia Resultado na tela: *Mia* nome = input("Digite seu nome:") print('*' + nome + '*') EX2: Guarde o dia, mês e ano de seu nascimento em variáveis: a) Exiba a data de nascimento no formato 'dd/mm/aaaa' b) Exiba a frase: 'Não se esqueça do meu aniversário: dd/mm!!!" dia, mes, ano = input("Data de Nascimento: ").split(' ') print(dia + '/' + mes + '/' + ano) print("Não se esqueça do meu aniversário:" + str(dia) + '/' + str(mes)) EX3: Uma encomenda pesa 34250g e sua embalagem pesa 178g. Exiba o peso da encomenda com a embalagem no formato '...Kg e ...g' tot = 34250 + 178 print("%.2f Kg e %.2f g\n" % (tot/1000, tot)) EX4: Sabendo que a função str() converte um número para string. Mostre quantos algarismos tem o número 3 elevado a 1000. num = 3 ** 1000 print(len(str(num))) # Exibe 478 OBS: Como len é uma função somente para >> strings << logo é necessário converter primeiro! EX5: Guarde sua data de nascimento em uma variável no formato 'dd/mm/aaaa'. Exemplo dt = '01/01/1984' a) Exiba apenas o ano ('1984') b) Exiba o ano invertido ('4891') c) Exiba toda a data invertida. ('4891/10/10') d) Exiba a data no formato dd-mm-aaaa data = input("Digite data nascimento:") print("Ano:", data[6:]) print("Ano Invertido:", data[-1:-5:-1]) print("Data Invertida:", data[-1::-1]) novaData = data[:2] + '-' + data[3:5] + '-' + data[6:] print("Novo formato:", novaData) ------------------------------------------------------- // ------------------------------------------------------------ Exercícios de Módulo Externo: EX1: Calcule a área da coroa circular (anel) formada por 2 circulos de raios r1 e r2 (r1 > r2 e pi = 3.14 e área do circulo : pi*r ** 2 import math r1 = 5.0 r2 = 8.0 area = math.pi*r1**2 - math.pi*r2 **2 print("Resultado:", area) OBS: Os valores de r1 e r2 são só para testes! EX2: Calcule as raízes da equação 2x^2 + 6x - 20 = 0. Guarde delta em uma variável. import math a = 2 b = 6 c = -20 delta = (b**2 - 4*a*c)**0.5 print("Raízes: %.1f e %.1f\n" % ((-b - delta)/(2*a),(-b + delta)/(2*a))) EX3: Utilizando as leis do cosseno, mostre a medida do lado a do triângulo de lados a, 10 e 16 com theta igual a 60 graus: Obs: Fórmula Lei dos cossenos: a^2 = b^2 + c^2 - 2*b*c *cos(theta) import math b = 10 c = 16 a = (b ** 2 + c **2 - 2*b*c* math.cos(math.radians(60))) ** 0.5 print(a) OBS: Precisamos sempre converter para radianos! ------------------------------------------------------- // ------------------------------------------------------------ Exercícios de Funções: EX1: Crie uma função para calcular a área do círculo cujo raio é recebido. Use a constante math.pi e coloque uma mensagem de documentação (Doc String) na função. import math def calcAreaCirc (r): """Função que calcula a área de um círculo""" return math.pi * r**2 raio = float(input("Digite o Raio:\n")) print(calcAreaCirc(raio)) OBS: Quando o enunciado menciona que algo é >> Recebido << pela função, está implícito que é recebido como parâmetro. EX2: Crie uma função para calcular a área da coroa circular cujos raios r1 e r2 são recebidos. def calcAreaCoroa (r1, r2): return math.pi*r1**2 - math.pi*r2 **2 EX3: Crie as funções lateral(r, h), total (r, h) para calcular a área da lateral e a área total de um cilindro reto. (OBS: Use obrigatoriamente a função do item 1) def lateral(r, h): return 2* math.pi * r * h def total(r, h): return 2*calcAreaCirc(r) + lateral(r, h) OBS: Sempre que o enunciado cita o nome das funções e dos parâmetros, é obrigatório usar >> Exatamente << esses nomes no seu programa! EX4: Crie uma função que recebe a idade, altura e peso de uma pessoa, calcula o IMC e exiba uma mensagem de alerta pra quem está abaixo do peso ideal. Obs: Considere que uma pessoa com IMC abaixo de 18.5KG ou acima de 24.9KG é considerado abaixo do peso ideal. Obs: Fórmula de IMC: Peso dividido pela altura ao quadrado. def alertaAbaixoPeso (idade, altura, peso): imc = peso/altura **2 if(imc < 18.5 or imc > 24.9): print("Abaixo do peso ideal!") EX5: Modifique sua função anterior pra que ela exiba uma mensagem de alerta apenas para os menores de idade que estão abaixo do peso ideal. def exibeAlerta (idade, altura, peso): imc = peso/altura**2 if(imc < 18.5 or imc > 24.9 and idade < 18): print("Abaixo do peso ideal e é menor de idade!") EX6: Faça um programa que exiba na tela um dos avisos de acordo com o critério da tabela: def exibeAlerta (idade, altura, peso): imc = peso/altura**2 if(imc < 18.5): print("Abaixo do peso ideal") elif(imc < 24.9): print("peso ideal") elif(imc < 34.9): print("Obesidade de Grau 1") elif(imc < 39.9): print("Obesidade de Grau 2") else: print("Obesidade de Grau 3") idade, altura, peso = input("Digite um valor:").split(' ') exibeAlerta(idade, float(altura), float(peso)) EX7: A sensação térmica é influenciada por vários fatores climáticos, como a umidade e densidade do ar, mas principalmente pela velocidade do vento. A seguinte fórmula empírica calcula seu valor: ST = 33 + (10*raiz(v) + 10.45 - v)* ((T-33)/22) Faça um programa que pergunte a temperatura e a velocidade do vento ocorridas por hora de um dia e mostre a sensação térmica equivalente. def calcSensTerm (v, t): return 33 + (10 * v ** 0.5 + 10.45 - v)* ((t-33)/22) v, t = input("Digite a velocidade e temperatura:").split(' ') print("Sensação Térmica: %.2f\n" % calcSensTerm(float(v), float(t))) EX8: Refaça o item 7 utilizando a função uniform do módulo random na leitura dos dados. import random def calcSensTerm (v, t): return 33 + (10 * v ** 0.5 + 10.45 - v)* ((t-33)/22) v = random.uniform(30,100) t = random.uniform(30,100) print("Velocidade: %.2f\nTemperatura: %.2f\n" %( v ,t)) print("Sensação Térmica: %.2f\n" % calcSensTerm(v, t)) ------------------------------------------------------- // ------------------------------------------------------------ Exercícios de Condição: EX: Faça um programa que lê um número e exibe na tela se ele é par ou ímpar x = int(input("Digite um valor:")) if( x % 2 == 0 ): print("É par!") else: print("É ímpar!") OBS: É preciso converter de string para int ou float na leitura! ------------------------------------------------------- // ------------------------------------------------------------ Exercícios de Recursão: EX: Crie uma função recursiva que retorne a quantidade de algarismos de um número. def calcAlgRec(x): if(x < 10): return 1 return 1 + calcAlgRec(x // 10) print(calcAlgRec(123456)) # Exibe 6 EX: Crie uma função recursiva que calcule a soma de todos os algarismos de um número. def somaAlgRec(x): if(x < 10): return x return (x % 10) + somaAlgRec(x // 10) print(somaAlgRec(1234)) # Exibe 10 ------------------------------------------------------- // ------------------------------------------------------------ Exercícios de Lista: EX: Crie uma lista com nomes digitados pelo usuário até que o mesmo digite “fim”. nomes =[] nome = input("Digite o nome:”) while (nome != "fim"): nomes += [nome] nome = input("Digite o nome:") EX: Modifique o exercício do item anterior colocando após cada nome uma sequência de 5 zeros. nomes =[] nome = input("Digite o nome: ") while (nome != "fim"): nomes += [nome] nomes += [5*['0']] nome = input("Nome?") print(nomes) EX: Crie uma função recursiva que calcula o somatório de um conjunto de valores. Recebe como parâmetro uma lista (Conjunto de valores) e a quantidade de elementos. def somatorioRec(v, n): if(n == 0): return 0 return v[0] + somatorioRec(v[1:], n-1) print(somatorioRec([10, 20, 10], 3)) EX: Faça uma função recursiva que retorne o maior valor de uma lista com sublistas: def maior(l): if(not l): return 0 if(type(l[0]) == list): if(maior(l[0]) > maior(l[1:])): return maior(l[0]) else: return maior(l[1:]) if(len(l) == 1): return l[0] if(l[0] > maior(l[1:])): return l[0] else: return maior(l[1:]) EX: Faça uma função que exibe o maior valor de uma lista de preços. (Sem usar o método max) def exibeMaior(vals): maior = -1 for x in vals: if(x > maior): maior = x return maior vals = [50.5, 30.7, 25.2, 100, 70] print(exibeMaior(vals)) OBS: Como preço é sempre um número positivo, é só inicializar a variável maior com qualquer número negativo! Dessa forma, obrigatoriamente ele será menor que o primeiro valor lido da lista! E com isso, na primeira iteração, o maior valor será o primeiro elemento da lista, podendo ser atualizado ou não, dependendo se houver algum elemento com valor maior. EX: Faça uma função que implemente a Interseção entre listas: def intersect (l1, l2): l3 = [] for x in l1: if(x in l2): l3 += [x] return l3 l1 = [1, 5, 2] l2 = [10, 3, 5] print(l1, l2) print(intersect(l1,l2)) EX: Faça uma função que implemente a união entre listas: def union (l1, l2): l3 = [] for x in l1: if(x not in l2): l3 += [x] for x in l2: if(x not in l1): l3 += [x] return l3 EX: Faça uma função que implemente a subtração dos conjuntos A - B: def subsConj (l1, l2): l3 = [] for x in l1: if(x not in l2): l3 += [x] return l3 EX: Faça uma função que implemente a subtração simétrica de conjuntos: (x E União e not E interseção) Subtração simétrica de conjuntos: (x E União e not E interseção) def subsSimetrica (l1, l2): l3 = [] t1 = intersect(l1,l2) t2 = union(l1,l2) for x in l1: if(x in t1 and x not in t2): l3 += [x] for x in l2: if(x in t1 and x not in t2): l3 += [x] return l3 EX: Faça um programa que contabiliza o total gasto em litros de cada modelo de carro e exiba na tela o nome do modelo e a maior quantidade. Considere a lista dados em que cada elemento possui informação do nome do modelo e a quantidade de km/L e a lista lidos que cada elemento possui o nome do modelo e a quantidade de km. dados = [['Up', 18], ['Gol', 10], ['Corsa',11],['Fiat', 12.5], ['Furgão', 13]] lidos = [['Up', 100], ['Gol', 200], ['Corsa', 150],['Fiat', 230], ['Furgão', 450], ['Fiat', 300], ['Gol', 100]] def busca(nome, dados): for x in dados: if(nome == x[0]): return dados.index(x) return -1 def atualiza(dados, lidos, total): for x in lidos: pos = busca(x[0], dados) if(pos != -1): total[pos] += lidos[pos][1] for i in range(len(total)): total[i] /= dados[i][1] def exibeMaior(dados, total): maior = -1 for x in total: if(x > maior): maior = x pos = total.index(maior) print("Maior Quantidade: %.2f Modelo: %s\n" %(total[pos], dados[pos][0])) dados = [['Up', 18], ['Gol', 10], ['Corsa',11],['Fiat', 12.5], ['Furgão', 13]] lidos = [['Up', 100], ['Up', 100], ['Gol', 100], ['Corsa', 150],['Fiat', 230], ['Furgão', 450], ['Fiat', 300], ['Gol', 100]] total = 5*[0] atualiza(dados, lidos, total) print(total) exibeMaior(dados, total)
Compartilhar