Exercícios: Básico do Python

Exercícios: Básico do Python#

  1. Elabore um programa em Python que leia três números reais e calcule a média desses números, exibindo o resultado na tela.

pass
  1. Calcule a área de um círculo de raio 2. Assuma pi = 3.14.

pass
  1. Sabemos que a conversão de uma temperatura em Celsius para Fahrenheit é dada pela fórmula:

    \[ F = \frac{9}{5} \cdot C + 32 \]

    Crie um programa que receba uma temperatura em Celsius e exiba o valor correspondente em Fahrenheit na tela.

pass
  1. A fórmula usada para calcular os juros compostos é:

    \[ M = C \times \left( 1 + \frac{J}{100} \right)^P \]

    em que:

    • \( C \) é o capital inicial,

    • \( J \) é a taxa de juros mensal (%),

    • \( P \) é o período em meses.

    Desenvolva um programa que leia os valores de \( C \), \( J \) e \( P \), e calcule e mostre na tela o valor final após a aplicação dos juros compostos.

pass
  1. A média final do curso é calculada pela seguinte fórmula:

    \[ MF = 0.35 \times P1 + 0.35 \times P2 + 0.2 \times NT + 0.1 \times EX \]

    Onde:

    • P1 é a nota da primeira avaliação,

    • P2 é a nota da segunda avaliação,

    • NT é a nota dos trabalhos.

    Crie um programa que leia as notas P1, P2 e NT, calcule a média final e imprima a situação do aluno com base na média final:

    • «Reprovado» se a média for inferior a 5,

    • «Recuperação» se a média estiver entre 5 e 6,

    • «Aprovado» se a média for maior ou igual a 6.

pass
  1. O índice de massa corpórea (IMC) de uma pessoa é calculado pela fórmula:

    \[ IMC = \frac{peso}{altura^2} \]

    em que:

    • peso é o peso da pessoa em quilogramas,

    • altura é a altura da pessoa em metros.

    Com base no IMC calculado, a classificação do indivíduo é a seguinte:

    • Abaixo de 18,5: «Abaixo do peso»,

    • Entre 18,5 e 24,9: «Peso normal»,

    • Entre 25,0 e 29,9: «Sobrepeso»,

    • Entre 30,0 e 34,9: «Obesidade grau 1»,

    • Entre 35,0 e 39,9: «Obesidade grau 2»,

    • Acima de 40,0: «Obesidade grau 3».

    Crie um programa que leia o peso e a altura de um indivíduo, calcule seu IMC e imprima o valor calculado, além da sua classificação de acordo com a tabela acima.

pass
  1. Uma equação do 2º grau é representada pela forma padrão:

    \[ ax^2 + bx + c = 0 \]

    As soluções para essa equação são dadas pela famosa fórmula de Bhaskara:

    \[ x_1 = \frac{-b - \sqrt{\Delta}}{2a} \]
    \[ x_2 = \frac{-b + \sqrt{\Delta}}{2a} \]

    em que \( \Delta = b^2 - 4ac \) é o discriminante.

    Crie um programa que, dados os valores de \(a\), \(b\) e \(c\), calcule e imprima as soluções reais da equação do 2º grau, de acordo com as condições:

    • \(a\) não pode ser igual a zero.

    • \( \Delta \) não pode ser negativo. Se \( \Delta = 0 \), existe apenas uma solução real.

pass
  1. Uma fruteira possui a seguinte tabela de preços para frutas:

    Tipo de fruta

    Até 5 Kg

    Acima de 5 Kg

    Morango

    R$ 2,50 por Kg

    R$ 2,20 por Kg

    Maçã

    R$ 1,80 por Kg

    R$ 1,50 por Kg

    Se o cliente comprar mais de 8 Kg no total ou se o valor total da compra ultrapassar R$ 25,00, será concedido um desconto de 10% sobre o total.

    Crie um programa que leia a quantidade de morangos (em Kg) e a quantidade de maçãs (em Kg) compradas, calcule o valor total da compra e determine o valor a ser pago pelo cliente, aplicando o desconto se necessário.

pass
  1. Elabore um programa que solicite a entrada de quatro notas, armazene-as em uma lista e exiba na tela as notas informadas, junto com a média calculada delas.

pass
  1. Escreva um código que imprima os elementos menores que 5 na seguinte lista:

a = [1, 4, 2, 3, 2, 1, 5, 8, 5, 7, -1, 0, 23]
  1. Escreva um código que encontra todos os divisores do número 42.

pass
  1. Calcule a multiplicação das duas matrizes abaixo sem usar laços:

a = [[2, 3], [4, 2]]
b = [[2, 0], [1, 2]]
  1. Calcule a multiplicação das duas matrizes acima usando laços

pass
  1. Calcule o fatorial de 5 usando algum tipo de laço.

pass
  1. Calcule a distância Euclidiana dos seguintes vetores:

a, b = [1, 0, 1], [-1, 2, 3]
  1. Crie um programa que leia um número limite \(N\) e imprima todos os números pares de 0 até \(N\) (inclusive, caso \(N\) seja par).

pass
  1. Imprima as potências de 2, começando em \(2^0\), enquanto o resultado for menor do que 2000.

pass
  1. Verifique se o número 79 é primo.

pass
  1. Crie um programa que leia um número \(N\) e calcule a soma dos \(N\) primeiros números inteiros.

  1. Escreva uma linha de código Python que gere uma lista apenas com os valores divisíveis por 2 e por 5 na lista abaixo:

a = [1, 4, 10, 13, 15, 16, 20, 28, 30]
  1. Escreva um laço que resulte no sétimo elemento da sequência de Fibonacci (lembrando que em Python os índices começam em 0):

pass
  1. Séries definidas por somatórios matemáticos são utilizadas para computar e aproximar diversas quantidades importantes. Para cada uma das séries abaixo, crie um programa que calcule o valor da série:

    a)

    \[ S = \frac{1}{1} + \frac{2}{2} + \frac{5}{3} + \frac{7}{4} + \dots + \frac{99}{50} \]

    b)

    \[ W = \frac{1}{1} - \frac{2}{4} + \frac{3}{9} - \frac{4}{16} + \frac{5}{25} - \frac{6}{36} + \dots + \frac{10}{100} \]

    c)

    \[ Z = \frac{1000}{1} - \frac{997}{2} + \frac{994}{3} - \frac{991}{4} \]

    O programa deve calcular e imprimir o valor de cada uma dessas séries.

pass
  1. A constante matemática \(\pi\) é amplamente utilizada em diversas áreas do conhecimento, como física, geometria e engenharia. Existem várias maneiras de aproximar o valor de \(\pi\) por meio de séries matemáticas, que são sequências de números que convergem para esse valor conforme somamos mais termos. Abaixo, apresentamos três séries clássicas para calcular aproximações de \(\pi\).

  1. Série de Leibniz

    Uma das séries mais conhecidas para calcular \(\pi\) é a série de Leibniz, que é uma soma infinita alternada. A fórmula para calcular \(\pi\) usando essa série é:

    \[ \pi = 4 \sum_{n=0}^{\infty} \frac{(-1)^n}{2n+1} = 4 \left( 1 - \frac{1}{3} + \frac{1}{5} - \frac{1}{7} + \frac{1}{9} - \cdots \right) \]
  2. Série de Basel

    Outra maneira de calcular aproximações de \(\pi\) vem da série de Basel, que envolve a soma dos inversos dos quadrados dos números naturais. A fórmula é a seguinte:

    \[ \pi = \sqrt{\sum_{n=1}^{\infty} \frac{1}{n^2}} = \sqrt{1 + \frac{1}{4} + \frac{1}{9} + \frac{1}{16} + \frac{1}{25} + \cdots} \]
  3. Produto de Wallis

    Uma terceira forma de aproximar \(\pi\) é por meio do produto de Wallis, que é um produto infinito de frações. A fórmula para esse cálculo é:

    \[ \pi = 4 \times \frac{2}{3} \times \frac{4}{3} \times \frac{6}{5} \times \frac{8}{7} \times \cdots \]

Para cada uma das séries descritas, desenvolva um programa que compute a aproximação de \(\pi\). O número de termos a ser considerado na série deve ser definido pelo usuário, para que ele possa observar a convergência do valor de \(\pi\) conforme mais termos são somados ou multiplicados. O objetivo é fornecer aproximações cada vez mais precisas de \(\pi\).

pass
  1. Uma forma de calcular a raiz quadrada de um número, quando ele é um quadrado perfeito, é realizar sucessivas subtrações de números ímpares consecutivos a partir de 1. O processo continua até que o valor restante seja zero ou negativo. O número de subtrações feitas é igual à raiz quadrada do número original.

    Considerando o número 16:

    Deve-se subtrair de 16 os números ímpares maiores que 1 até o resultado ser zero ou negativo:

    1. 16 - 1 = 15

    2. 15 - 3 = 12

    3. 12 - 5 = 7

    4. 7 - 7 = 0

    Ao realizar quatro subtrações, o valor chega a zero, e, portanto, a raiz quadrada de 16 é 4.

    Elabore um programa que, dado um número inteiro que seja um quadrado perfeito, calcule sua raiz quadrada utilizando essa técnica de subtração de números ímpares.

pass
  1. Crie um programa que solicite um nome de usuário e uma senha. O programa deve validar essas informações com valores predefinidos e, caso estejam incorretos, exibir uma mensagem de erro, pedindo ao usuário para tentar novamente. Considere que o nome de usuário seja o seu primeiro nome e a senha seja Scooby-dooby-doo.

pass
  1. Elabore um programa que solicite a idade de n pessoas. Ao final, o programa deve calcular a média de idade do grupo e classificá-lo conforme os seguintes critérios:

    • Se a média for entre 0 e 25, a turma será considerada «jovem».

    • Se a média estiver entre 26 e 60, a turma será considerada «adulta».

    • Se a média for superior a 60, a turma será considerada «idosa».

    A classificação deverá ser exibida com base na média calculada das idades informadas.

pass
  1. Escreva uma função que calcule o raio de um círculo, dado um valor de raio. Peça um valor de raio ao usuário e calcule o valor da função.

pass
  1. Escreva uma função que verifica se um número é par. Se for, imprima uma mensagem. Se não for, imprima outra mensagem.

pass
  1. No exercício acima, se o número for par, verifique se ele é múltiplo de 4. Se for, exiba uma mensagem diferente.

pass
  1. Escreva uma função que recebe uma lista e um valor e retorna uma sub-lista apenas com os elementos menores do que o valor fornecido.

pass
  1. Escreva uma função que calcula a multiplicação de duas matrizes usando laços, mas apenas se as dimensões das matrizes forem compatíveis.

pass
  1. Um número primo é aquele que é divisível apenas por um e por ele mesmo. Escreva uma função que verifica se um número é primo.

pass
  1. Faça uma função que retorna todos os divisores de um número.

pass
  1. Implemente uma função que determine o valor máximo presente em uma lista de elementos.

pass
  1. Faça uma função que calcula o fatorial de um número.

pass
  1. A função seno de um número pode ser aproximada por meio de uma série infinita, que calcula uma soma sucessiva de termos baseados no valor do ângulo. A fórmula dessa série é:

    \[ \text{sen}(x) = \sum_{n=0}^{\infty} \frac{(-1)^n}{(2n+1)!} \cdot x^{2n+1} = x - \frac{x^3}{3!}+\frac{x^5}{5!} - \cdots \]

    Elabore um programa que aceite como entrada o valor do ângulo \(x\) em radianos e o número de termos \(n\) da série. O programa deve calcular e exibir o valor aproximado de \(\text{sen}(x)\) utilizando os \(n\) primeiros termos dessa série.

pass
  1. A função cosseno de um número pode ser aproximada por meio de uma série infinita, que calcula uma soma sucessiva de termos baseados no valor do ângulo. A fórmula dessa série é:

    \[ \text{cos}(x) = \sum_{n=0}^{\infty} \frac{(-1)^n}{(2n)!} \cdot x^{2n} = 1 - \frac{x^2}{2!}+\frac{x^4}{4!} - \cdots \]

    Elabore um programa que aceite como entrada o valor do ângulo \(x\) em radianos e o número de termos \(n\) da série. O programa deve calcular e exibir o valor aproximado de \(\text{sen}(x)\) utilizando os \(n\) primeiros termos dessa série.

pass
  1. Escreva uma função que recebe uma lista, um valor e uma função de comparação e retorna uma sub-lista apenas com os elementos para os quais a função fornecida retorna True.

pass
  1. Implemente uma função que, dada uma lista de números inteiros L e um valor x, determine se x está presente na lista. Caso esteja, a função deve retornar o índice (posição) onde x se encontra. Se o valor não estiver na lista, a função deve retornar False. Essa tarefa é equivalente ao uso do operador in em Python, mas implementado de forma personalizada.

pass
  1. Dada a lista de números L = [-8, -29, 100, 2, -2, 40, 23, -8, -7, 77], implemente funções que, ao receber a lista como entrada, retornem os seguintes resultados:

    • a) Encontrar o menor número da lista

    • b) Encontrar o maior número da lista

    • c) Calcular a média dos elementos da lista

    • d) Inverter a lista

    • e) Calcular o desvio padrão dos elementos da lista

      \[ \text{Desvio} = \sqrt{\frac{1}{n} \sum_{i=1}^{n} (x_i - \bar{x})^2} \]

      em que:

      • \( x_i \) são os elementos da lista.

      • \( \bar{x} \) é a média dos elementos.

      • \( n \) é o número de elementos da lista.

pass
  1. Implemente uma função que receba duas palavras como entrada (strings) e verifique se elas são palíndromas, ou seja, se uma palavra for o inverso exato da outra.

pass
  1. Um pangrama é uma sentença que contém todas as 26 letras do alfabeto ao menos uma vez. Por exemplo, as sentenças

    • «Todo pajé vulgar faz boquinha sexy com kiwi.»

    • «Já fiz vinho com toque de kiwi para belga sexy.»

    • «Bancos fúteis pagavam-lhe queijo, whisky e xadrez.»

    são pangramas, pois inclui todas as letras do alfabeto.

    Escreva uma função que receba uma sentença como entrada e retorne True se a sentença for um pangrama e False caso contrário.

pass
  1. Seja uma lista L que contém o nome de diversas pessoas:

    L = ['mark', 'henry', 'matthew', 'paul', 'luke', 'robert', 'joseph', 'carl', 'michael']
    

    Escreva uma função que receba L como entrada e retorne um dicionário em que os nomes são agrupados pelo tamanho. (Por exemplo, na chave 4 deve ser armazenada uma lista com os nomes de 4 letras, e assim por diante.)

pass
  1. Em uma papelaria, os seguintes produtos estão disponíveis com os preços indicados abaixo:

    • Caderno: R$ 10,00

    • Pasta: R$ 7,50

    • Lápis: R$ 2,50

    • Caneta: R$ 3,00

    • Borracha: R$ 4,00

    a) Crie um dicionário d onde o nome de cada produto é a chave e o preço é o valor associado.

    b) Desenvolva uma função que encontre o produto mais barato.

    c) Devido à inflação, os produtos com preço abaixo de R\( 5 terão um aumento de 20%, enquanto os produtos com preço superior a R\) 5 terão um aumento de 10%. Escreva uma função que atualize os preços dos produtos conforme essa regra.

pass
  1. Em uma turma com N alunos, a avaliação final será realizada com base em 3 provas (P1, P2 e P3). Alunos com média inferior a 6 serão reprovados, enquanto os que tiverem média igual ou superior a 6 serão aprovados. A seguir, temos as questões a serem resolvidas:

    a) Escreva um trecho de código em Python que crie um dicionário inicialmente vazio, chamado dados, onde a chave é o nome do aluno e o valor é uma lista contendo as 3 notas (P1, P2 e P3) do aluno.

    Aluno

    P1

    P2

    P3

    João

    6.5

    5.0

    7.0

    Ana

    8.5

    4.0

    7.5

    Carlos

    3.0

    5.0

    7.0

    Maria

    5.5

    6.0

    9.0

    José

    3.5

    5.0

    6.0

    b) Escreva uma função que percorra o dicionário dados e, para cada aluno, calcule a média das 3 notas. Com base na média, imprima o nome do aluno e sua condição (aprovado ou reprovado).

    c) Os 3 melhores alunos da turma receberão uma bolsa de estudos. Escreva uma função que ordene os alunos pelas suas médias em ordem decrescente e imprima o nome dos alunos e suas respectivas médias. Isso deve gerar um ranking dos estudantes.

pass
  1. (Desafio: Cálculo dos Dígitos Verificadores de um CPF)

    O número de um CPF é composto por 9 algarismos seguidos de dois dígitos verificadores, que aparecem após um hífen ou uma barra. Em resumo, o CPF possui 11 algarismos no total. Ele pode ser apresentado no formato ABCDEFGHI-JK ou simplesmente como ABCDEFGHIJK, sendo que os números não podem ser todos iguais.

    Os dois últimos digitos são chamados de verificadores:

    • J é o primeiro dígito verificador.

    • K é o segundo dígito verificador.

    Como calcular o primeiro dígito (J)?

    Para calcular o primeiro dígito verificador, denominando-o como J, realizamos as seguintes multiplicações:

    • Multiplicamos os 9 primeiros dígitos do CPF (A, B, C, D, E, F, G, H, I) pelas constantes:

    • A × 10

    • B × 9

    • C × 8

    • D × 7

    • E × 6

    • F × 5

    • G × 4

    • H × 3

    • I × 2

    A soma dos resultados dessas multiplicações é calculada e chamada de S.

    Em seguida, dividimos S por 11 e analisamos o resto dessa divisão:

    • Se o resto for 0 ou 1, o dígito J será 0.

    • Se o resto for qualquer valor de 2 a 10, o dígito J será igual a 11 - resto.

    Como calcular o segundo dígito (K)?

    Com o dígito J já calculado, seguimos para o cálculo do segundo dígito verificador, chamado K. Para isso, multiplicamos os 9 primeiros dígitos do CPF, além do dígito J, pelas seguintes constantes:

    • A × 11

    • B × 10

    • C × 9

    • D × 8

    • E × 7

    • F × 6

    • G × 5

    • H × 4

    • I × 3

    • J × 2

    Calculamos a soma dos produtos resultantes, que também chamamos de S.

    Novamente, dividimos a soma por 11 e analisamos o resto:

    • Se o resto for 0 ou 1, o dígito K será 0.

    • Se o resto for qualquer valor de 2 a 10, o dígito K será igual a 11 - resto.

    Crie uma função em Python que, ao receber os 9 primeiros dígitos de um CPF, calcule e gere os dois dígitos verificadores (J e K). O programa deve ser testado com um CPF válido.

  1. (Desafio: Recursão).

    Recursão é uma abordagem para solucionar problemas que envolve dividir a tarefa em partes menores do mesmo tipo, i.e. é uma abordagem do tipo dividir-para-conquistar. Do ponto de vista computacional, um problema resolvido usando recursão envolve uma função que chama a si mesma até que o problema seja resolvido. Uma parte importante desse tipo de solução é a definição do ponto de parada da recursão, quando a função para de chamar a si mesma e começar a retornar os valores para as chamadas mais «acima». Vejamos um exemplo de recursão para o cálculo do fatorial de um número n:

def factorial(n):
    if n == 0:
        return 1
    else:
        return n * factorial(n - 1)

factorial(0), factorial(1), factorial(5)
(1, 1, 120)
Agora implemente uma função recursiva que recebe um número e retorna o número correspondente na sequência de Fibonacci.
pass
  1. (Desafio: Precisão da máquina)

A precisão da máquina é definida como o menor número \(\epsilon\) tal que, quando somado a 1, ainda resulta em um valor diferente de 1. Ou seja, é o menor valor que, quando adicionado a 1, não causa uma alteração no número devido às limitações de precisão do sistema.

Vamos calcular esse valor de \(\epsilon\):

* Escolha um valor inicial para $\epsilon$, por exemplo, `eps = 1`.

* Crie um laço que verifique se `1 + eps` é diferente de 1.

* A cada iteração do laço, corte o valor de `eps` pela metade.

Qual valor de \(\epsilon\) você encontra?

pass
  1. (Desafio: Interações - Parte 1)

Para iterar sobre tuplas, onde a tupla i-ésima contém os i-ésimos elementos de certas sequências, podemos usar a função zip(*sequences).

Vamos iterar sobre duas listas, names e age, e imprimir as tuplas resultantes.

* Comece inicializando as listas `names = ["Mary", "John", "Sarah"]` e `age = [21, 56, 98]`.

* Itere sobre as tuplas que contêm um nome e uma idade, a função `zip(list1, list2)` pode ser útil aqui.

* Imprima strings formatadas do tipo "*NOME tem IDADE anos*".
pass
  1. (Desafio: Interações - Parte 2)

A função enumerate(sequence) retorna tuplas contendo índices de objetos na sequência, e os próprios objetos.

O módulo random fornece ferramentas para trabalhar com números aleatórios. Em particular, random.randint(start, end) gera um número aleatório que não é menor que start e não é maior que end.

  • Gere uma lista de 10 números aleatórios de 0 a 9.

  • Usando a função enumerate(random_list), itere sobre as tuplas de números aleatórios e seus índices, e imprima «Match: NÚMERO e ÍNDICE» se o número aleatório e seu índice na lista coincidirem.

pass
  1. (Desafio: Contando Palavras)

Considere o seguinte texto:

texto = """
Ouviram do Ipiranga as margens plácidas
De um povo heróico o brado retumbante,
E o sol da Liberdade, em raios fúlgidos,
Brilhou no céu da Pátria nesse instante.
Se o penhor dessa igualdade
Conseguimos conquistar com braço forte,
Em teu seio, ó Liberdade,
Desafia o nosso peito a própria morte!
Ó Pátria amada, Idolatrada, Salve! Salve!
Brasil, um sonho intenso, um raio vívido
De amor e de esperança à terra desce,
Se em teu formoso céu, risonho e límpido,
A imagem do Cruzeiro resplandece.
Gigante pela própria natureza,
És belo, és forte, impávido colosso,
E o teu futuro espelha essa grandeza
Terra adorada, Entre outras mil,
És tu, Brasil, Ó Pátria amada!
Dos filhos deste solo és mãe gentil,
Pátria amada, Brasil!
Deitado eternamente em berço esplêndido,
Ao som do mar e à luz do céu profundo,
Fulguras, ó Brasil, florão da América,
Iluminado ao sol do Novo Mundo!
Do que a terra mais garrida
Teus risonhos, lindos campos têm mais flores;
"Nossos bosques têm mais vida",
"Nossa vida" no teu seio "mais amores".
Ó Pátria amada, Idolatrada, Salve! Salve!
Brasil, de amor eterno seja símbolo
O lábaro que ostentas estrelado,
E diga o verde-louro desta flâmula
Paz no futuro e glória no passado.
Mas, se ergues da justiça a clava forte,
Verás que um filho teu não foge à luta,
Nem teme, quem te adora, a própria morte!
Terra adorada Entre outras mil,
És tu, Brasil, Ó Pátria amada!
Dos filhos deste solo és mãe gentil,
Pátria amada, Brasil!
"""

Crie um dicionário que use as palavras únicas como chaves e tenha como valor o número de vezes que cada palavra aparece.

a) Escreva um loop sobre as palavras na string (usando split) e faça o seguinte:

  • remova qualquer pontuação (função .replace())

  • converta para minúsculas (função .lower())

  • verifique se a palavra já é uma chave no dicionário (usando o operador in)

    • se a chave existir, incremente a contagem da palavra para essa chave

    • caso contrário, adicione-a ao dicionário com a contagem apropriada de 1.

Ao final, imprima as palavras e a contagem de quantas vezes elas aparecem.

b) Refaça o exercício anterior e após a o item para coversão para eltras minusculas, use o set para garantir que as palavras repetidas sejam removidas e o count para contar quantas vezes cada palavra aparece na lista e crie o dicionário.

c) Considerando o Hino Nacional Brasileiro, escreva uma função que retorne todas as palavras com exatamente \(N\) letras. O texto do Hino e o valor de \(N\) devem ser fornecidos como entradas para a função.

pass
  1. (Desafio: Cifra de César)

Criptografia é o processo de transformar mensagens usando um conjunto de símbolos, com o objetivo de tornar seu conteúdo mais difícil de ser interpretado. Uma técnica simples para criptografar uma mensagem de texto é a cifra de César.

A cifra de César consiste em deslocar cada letra do alfabeto um número fixo de vezes. Por exemplo, se o deslocamento for de três, a letra «B» se torna «E» no texto cifrado.

a) Utilize um dicionário para implementar a cifra de César. Crie uma função chamada encript que receba três parâmetros: uma mensagem, um alfabeto e um valor K (deslocamento). A função deve retornar a mensagem criptografada.

b) Da mesma forma, utilize um dicionário para implementar a cifra de César. Crie uma função chamada decript que também receba três parâmetros: uma mensagem, um alfabeto e um valor K (deslocamento). A função deve retornar a mensagem descriptografada.