Enviar um café pro programador

Mostrando postagens com marcador while. Mostrar todas as postagens
Mostrando postagens com marcador while. Mostrar todas as postagens

Como Processar Arquivos com Laço FOR (looping)

Neste tutorial de Python, vamos aprender como processarcom arquivos usando laços e loopings, nos permitindo trabalhar com grandes quantidades de informação.

Se desejar viver de programação, acesse:
Curso de Python com certificado

Para estudar por este e outros tutoriais offline, veja:
Apostila Python Progressivo

Arquivos e Laço FOR

Até o momento, em nossa seção de Arquivos em Python, trabalhamos com pequenos arquivos de textos, geralmente de duas ou três linhas, até para simplificar e agilizar nossos tutoriais de explicações.

Porém, o normal é termos arquivos grandes, com centenas ou milhares de linhas.

Quando você se tornar um programador Python profissional, vai ter planilhas documentos de texto, PDF e outros tipos de listas (como de funcionários e alunos), de milhares e milhares de linhas.

Então, vamos te mostrar como trabalhar com um arquivo usando o laço FOR.

Primeiro, entre no seguinte link e copie toda a lista:

Salve em um arquivo de texto de nome linguagens.txt

Vamos criar um script que pergunta ao usuário quantos nomes de linguagens de programação ele deseja ver.

Primeiro, criamos um objeto do tipo FILE de nome arquivo, para abrir linguagens.txt
Vamos pegar todo o conteúdo de texto e colocar numa lista de nome linguas, através do método readlines()

Usamos a função len() para contar quantos elementos tem a lista linguas, cujo número de elementos é o número de linhas do arquivo de texto, logo, mostrando o total de linguagens de programação que tem no texto.

Perguntamos ao usuário quantas linguagens ele deseja ver o nome e armazenamos na variável inteira num.

Por fim, entramos no laço FOR.
Vamos percorrer um total de num elementos, onde imprimimos o número de vezes que o usuário escolheu, imprimindo os elementos da lista linguas (usamos o método rstrip() para retirar o caractere de quebra de linha '\n\).

Veja como ficou nosso código:

arquivo = open('linguagens.txt', 'r')
linguas = arquivo.readlines()

print("Existem", len(linguas), "linguagens. Quantas deseja ver?")
num = int(input())

for count in range(num):
    print(str(count+1),":",linguas[count].rstrip('\n'))
    
arquivo.close()

Detectando o final de um arquivo: End of file ''

Tem um probleminha no código anterior.
Experimente digitar 717.

Aguarde tooooda a lista de linguagens de programação ser printada em sua tela e...erro:

Arquivos e loopings - Tutorial de Python - Curso com certificado

Deu erro de list index out of range, ou seja, você tentou acessar um índice da lista que não existe.
A lista tem 716 linguagens/linhas, e você tentou acessar mais que isso.

Poderíamos evitar esse erro fazendo uma coisa bem simples: detectando o final do arquivo.
Agora, ao invés de criar uma lista, vamos imprimir linha por linha do arquivo, através do método readline(), que lê uma linha por vez e retorna essa string, e armazena na variável linha que criamos.

Vamos usar o mesmo laço FOR pra imprimir o número de linguagens que o usuário quis ver.
Ao final, quando chega no fim do arquivo, o método readline() retorna uma string vazia.

Uma string vazia é simboliza, simplesmente, por: ''

Ou seja, a cada iteração do loop verificamos o conteúdo de linha.
Se for diferente de string vazia, imprimimos mais uma linha.
Se for vazia, dizemos que chegou no fim do arquivo.

Nosso código Python ficou:

arquivo = open('linguagens.txt', 'r')
num = int(input("Numero de linguagens: "))

for linha in arquivo:
    linha = arquivo.readline()

    if linha != '':
        print(linha.rstrip('\n'))
    else:
        print("Fim do arquivo")
    
arquivo.close()

Lendo Arquivos com laço FOR

Os exemplos anteriores foram mais para você aprender como pensa um programador, entender como as coisas funcionam por trás dos panos e te ajudar em lógica, ou seja, de realmente entender o que tá fazendo e o que tá acontecendo quando seu código roda.


Porém, existe uma maneira ainda mais simples de ler um arquivo de texto, sem usar readlines() nem a readline(), simplesmente imprimindo direto da variável do tipo File, e também sem precisar detectar o final de um arquivo.

Sabe onde fizemos:
  • for variavel in range(valor): 

Em vez de range(), basta usar o objeto do tipo File mesmo.
O Python subtende que seu range vai ser as linhas do arquivo.

Fica:
  • for linha in arquivo:

Prontinho.
A cada iteração do loop For o valor de linha é uma linha do arquivo de texto arquivo, que definimos e abrimos anteriormente (com a open()).

Para exibir o número correto de linguagens que o usuário solicitou, vamos usar uma variável para fazer a contagem, a count. O IF imprime uma linha, já quando essa variável passa do valor digitado pelo usuário, cai no ELSE e ele dá um break no laço FOR, terminando a leitura do arquivo.

Veja como ficou nosso código Python:

arquivo = open('linguagens.txt', 'r')
num = int(input("Numero de linguagens: "))
count=0

for linha in arquivo:
    if count<num:
        print(linha.rstrip('\n'))
        count=count+1
    else:
        break

arquivo.close()

Primos em Python - Como Saber se um Número é Primo ?

Neste nosso Tutorial de Python, vamos falar sobre os números primos.

Vamos te explicar o que é, sua importância, onde são usados e o principal: como criar um programa que checa se um determinado inteiro positivo é um número primo ou não.

Como ser um excelente programador

Bem, chegou a hora de realmente colocar a mão na massa e começar a programar, ok?

Antes, gostaríamos de sugerir o nosso texto 'Como ser um excelente programador', nele a gente vai te orientar sobre:
  1. O que estudar
  2. Como estudar programação da maneira correta
  3. O que é importante estudar
  4. Quais linguagens é bom saber
  5. Qual a melhor a melhor linguagem de programação
  6. Como entrar no mercado do trabalho
  7. Como se portar corretamente numa entrevista de emprego
  8. A característica mais importante que um programador deve ter

É simplesmente tudo que eu gostaria de saber antes de começar minha carreira de programador. Se eu tivesse lido o texto no início de meus estudos, teria aprendido programação bem mais rapidamente e mais corretamente. Sério, não deixem de ler, vai mudar sua vida.

Acesse nossa apostila para ler:


Os Números Primos

Um número é dito primo quando é possível dividir ele (divisão de inteiro com inteiro) por 1 e por ele mesmo.

Exemplos de números primos:
2, 3, 5, 7,  11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373 ...

Pode sair tentando dividir esses daí por outro número menor, que não seja 1 ou ele mesmo, que não vai conseguir.


Exemplos de números que não são primos:
4: É possível dividir por 1, 2, e 4
6: É possível dividir por 1, 2, 3 e 6
8: É possível dividir por 1, 2, 4 e 8
2112: É divisível por 2 3 4 6 8 11 12 16 22 24 32 33 44 48 64 66 88 96 132 176 192 264 352 528 704 e 1056

Primos: Para que servem ?

Não, não é um conjunto inútil e sem sentido de números.
Se fosse, nem seriam estudados.

O assunto número primo é um dos mais pesquisados, estudados e misteriosos da história da humanidade.

Até hoje, não se tem uma fórmula para se criar números primos.
Ainda não descobriram um 'padrão' definitivo.

Um dos usos mais importante é no ramo da criptografia, principalmente com o algoritmo do sistema RSA.

Existem dois tipos de cigarras que possuem ciclos de vida de 13 e 17 anos, assim somente a cada 221 anos elas tem que dividir a floresta quando saem da terra, evitando se encontrar, o que prejudicaria sua permanência na natureza.

Enfim, se pesquisar na internet, vai achar uma infinidade de coisas onde os números primos estão metidos no dia-a-dia.

Há até quem use os números primos para ganhar na Mega-Sena.

Checar se um número é primo

Como Determinar e Verificar se um Número é Primo em Python

Vamos ver o problema que deu origem a este tutorial de Python, de nossa Lista de Exercícios de Laços e Loops


Inicialmente, pedimos um número inteiro e positivo para o usuário e armazenamos na variável n.

Vamos armazenar na variável mult o número de múltiplos que existe de 2 até n-1.

Ou seja, do intervalo (2, 3, 4, ..., n-1)
Isso é obtido usando a função range: range(2,n).

Vamos usar a variável count pra receber cada um desses valores, dentro desse intervalo.

Dentro do looping, temos que testar se o resto da divisão de n por count vai ser 0. Se for, é porque n é múltiplo de count, logo não é primo.

A medida que nosso programa ai encontrando múltiplos, conta eles na variável mult e exibe na tela.

Após terminar o laço, testamos o valor de mult.
Se permanecer zerado, é porque o número fornecido pelo usuário é primo.

Vejamos nosso código Python:

n = int(input("Verificar numeros primos ate: "))
mult=0

for count in range(2,n):
    if (n % count == 0):
        print("Múltiplo de",count)
        mult += 1

if(mult==0):
    print("É primo")
else:
    print("Tem",mult," múltiplos acima de 2 e abaixo de",n)

Desafio: crie um script em Python que checa se um número fornecido pelo usuário é primo ou não, usando laço while dessa vez.

Poste no comentário sua solução.


Série de Fibonacci em Python - Como Fazer a Sequência

Neste tutorial, de nossa Apostila de Python, vamos te explicar o que é a famosa sequência de Fibonacci, como é formada e como fazer a sequência usando programação em Python.

Série de Fibonacci na Matemática

A série de Fibonacci nada mais é que uma sequência de números inteiros, formada por uma regrinha bem simples e fácil, algo aparentemente 'bobo', mas com um impacto e importância brutal na natureza.

A regra é a seguinte:
  • O primeiro número da série é 1
  • O segundo número da série é 1 também
  • O próximo número da série é sempre a soma dos dois anteriores


Vamos chamar de a1, a2, a3, ...., os termos da sequência de Fibonacci, eles são o seguinte:
a1 = 1
a2 = 1
a3 = a2 + a1 = 1 + 1 = 2
a4 = a3 + a2 = 2 + 1 = 3
a5 = a4 + a3 = 3 + 2 = 5
a6 = a5 + a4 = 5 + 3 = 8
a7 = a6 + a5 = 8 + 5 = 13
a8 = a7 + a6 = 13 + 8 = 21
a9 = a8 + a7 = 21 + 13 = 34
...

E por aí vai, ela é uma sequência infinita.

A Sequência de Fibonacci na Natureza

A parte mais interessante da sequência de Fibonacci, é sua aplicação e uso em nosso dia a dia, bem como sua presença na natureza.

Na Matemática, se usa para achar o MDC (máximo divisor comum) de dois números inteiros.
Pode ser usado na conversão de milhas para KM.

Há estudos e usos de Fibonacci na música (afinar instrumentos).

O animal Nautilus possui uma espiral em sua concha, formada por proporções de números da série de Fibonacci.


Série de Fibonacci em Python - Apostila


Nossos dentes, por exemplo, possuem larguras cuja proporcionalidade entre si obedece aos números da sequência.

Calcular Fibonacci com Python

As folhas da Bromélia são formadas por espirais, cujos raios pertencem a série.

É uma sequência tão importante, tão misteriosa e presente que tem gente que até estudar os números de Fibonacci para tentar ganhar na Mega Sena.


Calcular Elementos de Fibonacci em Python

Ok! Já vimos o que são os números de Fibonacci, agora vamos aprender a achar eles usando apenas programação em Python.

Vamos resolver uma questão de nossa Lista de Exercícios de Laços:

A série de Fibonacci é formada pela seqüência 1,1,2,3,5,8,13,21,34,55,... Faça um programa capaz de gerar a série até o n−ésimo termo.


Lógica da Programação Python

Antes de nossa lógica funcionar no código, ela precisa funcionar em nossa cabeça. Esse é o grande segredo de todo bom programador: a coisa precisa funcionar na sua mente antes de você começar a codar, ok?

Vamos chamar de n a variável que representa o n-ésimo termo da série, termo que o usuário vai fornecer.

Como temos sempre que somar os dois elementos anteriores, as variáveis para representar eles terão os nomes ultimo e penultimo. O n-ésimo termo vai ser armazenado na variável termo.

Agora vamos, com calma, te ensinar o pulo do gato.

Vamos pegar um situação que temos a seguinte configuração:
ultimo = 5
penultimo = 3

Logo, o próximo termo é:
termo = ultimo + penultimo = 8

Depois, na nova iteração do laço, nossos novos valores de ultimo e penultimo devem variar, ir pra frente na sequência de Fibonacci. Devem ser agora:
ultimo = 8
penultimo = 5

Ou seja, o novo valor de penultimo deve ser o valor antigo de ultimo:
penultimo = ultimo

E o novo valor de ultimo deve ser o próximo termo da sequência.
E como calculamos o próximo valor da sequência? Somando os dois valores anteriores, que é o valor antigo de ultimo com penultimo.

O novo valor de ultimo fica:
ultimo = ultimo + penultimo

Ou simplesmente:
ultimo = termo

Exercício resolvido com laço WHILE

Lembrando que se o usuário pedir o termo de número 1 ou 2, devemos retornar 1. Checamos isso com um IF retornando 1 caso o usuário digite 1 ou 2.

Só daí em diante que aplicamos a regrinha da soma dos valores anteriores, aí cai no ELSE, onde iremos fazer o código explicado pela lógica anterior.

A variável que vai ficar responsável pela contagem de iterações é a count.
Ela se inicia valendo 3, pois já temos os dois valores iniciais da sequência (1 e 1) e vamos calcular em seguida o terceiro termo.

Quando o laço WHILE acaba, damos o print da variável termo.
(tudo ainda dentro do ELSE)

Nosso código fica assim:

n = int(input("Que termo deseja encontrar: "))
ultimo=1
penultimo=1


if (n==1) or (n==2):
    print("1")
else:
    count=3
    while count <= n:
        termo = ultimo + penultimo
        penultimo = ultimo
        ultimo = termo
        count += 1
    print(termo)


Exercício resolvido com laço FOR

n = int(input("Que termo deseja encontrar: "))
ultimo=1
penultimo=1

if (n==1) or (n==2):
    print("1")
else:
    for count in range(2,n):
        termo = ultimo + penultimo
        penultimo = ultimo
        ultimo = termo
        count += 1
    print(termo)

PS: algumas fontes definem como 0 o primeiro termo, 1 o segundo termo e do terceiro em diante é a soma dos dois termos anteriores, que é uma definição diferente dos dados da questão. No fim das contas, isso não importa muito, pois a lógica é a mesma, só precisa de alguns pequenos ajustes.


Lista de Exercícios de Laços e Loops

Lista de exercícios, resolvidos e com código comentado, sobre os laços e loops WHILE e FOR.

Tente resolver as questões a seguir após estudar:
Laços em Python: WHILE e FOR

Já adquiriu seu certificado? Com ele é possível trabalhar e ganhar dinheiro com Python!

Exercícios de Python  de Laços

Chegou ao fim a parte de Laços e Loopings!
Aprendemos tudo sobre os laços WHILE e FOR, que não são importantes, são essenciais, obrigatórios.

É praticamente impossível fazer qualquer coisa em Python sem usar WHILE ou FOR. Por isso estude bem, entenda os exemplos resolvidos e depois venha tentar resolver os seguintes exercícios.

São questões de Estruturas de Repetição do site Python.org.br .
Sugerimos o seguinte:

  1. Tente
  2. Tente de novo
  3. Novamente
  4. Chore em posição fetal
  5. Passe horas tentando
  6. Não durma algumas noites tentando
  7. Tente novamente



Somente após tentar MUITO e não conseguir, é que aconselhamos você a ver a solução, ok?

Só assim se evolui.
Ler a questão e ver a solução é algo praticamente inútil.
Se fizer isso, nem diga que estudou aqui pelo Curso Python Progressivo, pois vai ser um péssimo programador.

Questões de Estruturas de Repetição em Python




  1. Faça um programa que peça uma nota, entre zero e dez. Mostre uma mensagem caso o valor seja inválido e continue pedindo até que o usuário informe um valor válido.
    Solução: Validação de dados em Python
  2. Faça um programa que leia um nome de usuário e a sua senha e não aceite a senha igual ao nome do usuário, mostrando uma mensagem de erro e voltando a pedir as informações.
    Solução: Validação de dados em Python
  3. Faça um programa que leia e valide as seguintes informações:
    1. Nome: maior que 3 caracteres;
    2. Idade: entre 0 e 150;
    3. Salário: maior que zero;
    4. Sexo: 'f' ou 'm';
    5. Estado Civil: 's', 'c', 'v', 'd';
    Use a função len(string) para saber o tamanho de um texto (número de caracteres).
    Solução: Validação de dados em Python

  4. Supondo que a população de um país A seja da ordem de 80000 habitantes com uma taxa anual de crescimento de 3% e que a população de B seja 200000 habitantes com uma taxa de crescimento de 1.5%. Faça um programa que calcule e escreva o número de anos necessários para que a população do país A ultrapasse ou iguale a população do país B, mantidas as taxas de crescimento.
  5. Altere o programa anterior permitindo ao usuário informar as populações e as taxas de crescimento iniciais. Valide a entrada e permita repetir a operação.

    (4 e 5): Solução: Validação de dados em Python
  6. Faça um programa que imprima na tela os números de 1 a 20, um abaixo do outro. Depois modifique o programa para que ele mostre os números um ao lado do outro.
  7. Faça um programa que leia 5 números e informe o maior número.
  8. Faça um programa que leia 5 números e informe a soma e a média dos números.
    07. e 08: Programa que pede números, diz o maior, soma e média
  9. Faça um programa que imprima na tela apenas os números ímpares entre 1 e 50.
  10. Faça um programa que receba dois números inteiros e gere os números inteiros que estão no intervalo compreendido por eles.
  11. Altere o programa anterior para mostrar no final a soma dos números.
  12. Desenvolva um gerador de tabuada, capaz de gerar a tabuada de qualquer número inteiro entre 1 a 10. O usuário deve informar de qual numero ele deseja ver a tabuada. A saída deve ser conforme o exemplo abaixo:
    • Tabuada de 5:
      5 X 1 = 5
      5 X 2 = 10
      ...
      5 X 10 = 50
       
    Tabuada em Python

  13. Faça um programa que peça dois números, base e expoente, calcule e mostre o primeiro número elevado ao segundo número. Não utilize a função de potência da linguagem.
    Potência (exponenciação)
  14. Faça um programa que peça 10 números inteiros, calcule e mostre a quantidade de números pares e a quantidade de números ímpares.
  15. A série de Fibonacci é formada pela sequência 1,1,2,3,5,8,13,21,34,55,... Faça um programa capaz de gerar a série até o n−ésimo termo.
    Sequência de Fibonacci em Python

  16. A série de Fibonacci é formada pela sequência 0,1,1,2,3,5,8,13,21,34,55,... Faça um programa que gere a série até que o valor seja maior que 500.
  17. Faça um programa que calcule o fatorial de um número inteiro fornecido pelo usuário. Ex.: 5!=5.4.3.2.1=120
    Fatorial em Python
  18. Faça um programa que, dado um conjunto de N números, determine o menor valor, o maior valor e a soma dos valores.
  19. Altere o programa anterior para que ele aceite apenas números entre 0 e 1000.
  20. Altere o programa de cálculo do fatorial, permitindo ao usuário calcular o fatorial várias vezes e limitando o fatorial a números inteiros positivos e menores que 16.
  21. Faça um programa que peça um número inteiro e determine se ele é ou não um número primo. Um número primo é aquele que é divisível somente por ele mesmo e por 1.
    Número Primo em Python

  22. Altere o programa de cálculo dos números primos, informando, caso o número não seja primo, por quais número ele é divisível.
  23. Faça um programa que mostre todos os primos entre 1 e N sendo N um número inteiro fornecido pelo usuário. O programa deverá mostrar também o número de divisões que ele executou para encontrar os números primos. Serão avaliados o funcionamento, o estilo e o número de testes (divisões) executados.
  24. Faça um programa que calcule o mostre a média aritmética de N notas.
  25. Faça um programa que peça para n pessoas a sua idade, ao final o programa devera verificar se a média de idade da turma varia entre 0 e 25,26 e 60 e maior que 60; e então, dizer se a turma é jovem, adulta ou idosa, conforme a média calculada.
  26. Numa eleição existem três candidatos. Faça um programa que peça o número total de eleitores. Peça para cada eleitor votar e ao final mostrar o número de votos de cada candidato.
  27. Faça um programa que calcule o número médio de alunos por turma. Para isto, peça a quantidade de turmas e a quantidade de alunos para cada turma. As turmas não podem ter mais de 40 alunos.
  28. Faça um programa que calcule o valor total investido por um colecionador em sua coleção de CDs e o valor médio gasto em cada um deles. O usuário deverá informar a quantidade de CDs e o valor para em cada um.
  29. O Sr. Manoel Joaquim possui uma grande loja de artigos de R$ 1,99, com cerca de 10 caixas. Para agilizar o cálculo de quanto cada cliente deve pagar ele desenvolveu um tabela que contém o número de itens que o cliente comprou e ao lado o valor da conta. Desta forma a atendente do caixa precisa apenas contar quantos itens o cliente está levando e olhar na tabela de preços. Você foi contratado para desenvolver o programa que monta esta tabela de preços, que conterá os preços de 1 até 50 produtos, conforme o exemplo abaixo:
    • Lojas Quase Dois - Tabela de preços
      1 - R$ 1.99
      2 - R$ 3.98
      ...
      50 - R$ 99.50
  30. O Sr. Manoel Joaquim acaba de adquirir uma panificadora e pretende implantar a metodologia da tabelinha, que já é um sucesso na sua loja de 1,99. Você foi contratado para desenvolver o programa que monta a tabela de preços de pães, de 1 até 50 pães, a partir do preço do pão informado pelo usuário, conforme o exemplo abaixo:
    • Preço do pão: R$ 0.18
      Panificadora Pão de Ontem - Tabela de preços
      1 - R$ 0.18
      2 - R$ 0.36
      ...
      50 - R$ 9.00
  31. O Sr. Manoel Joaquim expandiu seus negócios para além dos negócios de 1,99 e agora possui uma loja de conveniências. Faça um programa que implemente uma caixa registradora rudimentar. O programa deverá receber um número desconhecido de valores referentes aos preços das mercadorias. Um valor zero deve ser informado pelo operador para indicar o final da compra. O programa deve então mostrar o total da compra e perguntar o valor em dinheiro que o cliente forneceu, para então calcular e mostrar o valor do troco. Após esta operação, o programa deverá voltar ao ponto inicial, para registrar a próxima compra. A saída deve ser conforme o exemplo abaixo:
    • Lojas Tabajara 
      Produto 1: R$ 2.20
      Produto 2: R$ 5.80
      Produto 3: R$ 0
      Total: R$ 9.00
      Dinheiro: R$ 20.00
      Troco: R$ 11.00
      ...
  32. Faça um programa que calcule o fatorial de um número inteiro fornecido pelo usuário. Ex.: 5!=5.4.3.2.1=120. A saída deve ser conforme o exemplo abaixo:
    • Fatorial de: 5
      5! =  5 . 4 . 3 . 2 . 1 = 120
  33. O Departamento Estadual de Meteorologia lhe contratou para desenvolver um programa que leia as um conjunto indeterminado de temperaturas, e informe ao final a menor e a maior temperaturas informadas, bem como a média das temperaturas.
  34. Os números primos possuem várias aplicações dentro da Computação, por exemplo na Criptografia. Um número primo é aquele que é divisível apenas por um e por ele mesmo. Faça um programa que peça um número inteiro e determine se ele é ou não um número primo.
  35. Encontrar números primos é uma tarefa difícil. Faça um programa que gera uma lista dos números primos existentes entre 1 e um número inteiro informado pelo usuário.
  36. Desenvolva um programa que faça a tabuada de um número qualquer inteiro que será digitado pelo usuário, mas a tabuada não deve necessariamente iniciar em 1 e terminar em 10, o valor inicial e final devem ser informados também pelo usuário, conforme exemplo abaixo:
    • Montar a tabuada de: 5
      Começar por: 4
      Terminar em: 7
      
      Vou montar a tabuada de 5 começando em 4 e terminando em 7:
      5 X 4 = 20
      5 X 5 = 25
      5 X 6 = 30
      5 X 7 = 35
      Obs: Você deve verificar se o usuário não digitou o final menor que o inicial.
  37. Uma academia deseja fazer um senso entre seus clientes para descobrir o mais alto, o mais baixo, a mais gordo e o mais magro, para isto você deve fazer um programa que pergunte a cada um dos clientes da academia seu código, sua altura e seu peso. O final da digitação de dados deve ser dada quando o usuário digitar 0 (zero) no campo código. Ao encerrar o programa também deve ser informados os códigos e valores do clente mais alto, do mais baixo, do mais gordo e do mais magro, além da média das alturas e dos pesos dos clientes
  38. Um funcionário de uma empresa recebe aumento salarial anualmente: Sabe-se que:
    1. Esse funcionário foi contratado em 1995, com salário inicial de R$ 1.000,00;
    2. Em 1996 recebeu aumento de 1,5% sobre seu salário inicial;
    3. A partir de 1997 (inclusive), os aumentos salariais sempre correspondem ao dobro do percentual do ano anterior. Faça um programa que determine o salário atual desse funcionário. Após concluir isto, altere o programa permitindo que o usuário digite o salário inicial do funcionário.
  39. Faça um programa que leia dez conjuntos de dois valores, o primeiro representando o número do aluno e o segundo representando a sua altura em centímetros. Encontre o aluno mais alto e o mais baixo. Mostre o número do aluno mais alto e o número do aluno mais baixo, junto com suas alturas.
  40. Foi feita uma estatística em cinco cidades brasileiras para coletar dados sobre acidentes de trânsito. Foram obtidos os seguintes dados:
    1. Código da cidade;
    2. Número de veículos de passeio (em 1999);
    3. Número de acidentes de trânsito com vítimas (em 1999). Deseja-se saber:
    4. Qual o maior e menor índice de acidentes de transito e a que cidade pertence;
    5. Qual a média de veículos nas cinco cidades juntas;
    6. Qual a média de acidentes de trânsito nas cidades com menos de 2.000 veículos de passeio.
  41. Faça um programa que receba o valor de uma dívida e mostre uma tabela com os seguintes dados: valor da dívida, valor dos juros, quantidade de parcelas e valor da parcela.
    • Os juros e a quantidade de parcelas seguem a tabela abaixo:
      Quantidade de Parcelas  % de Juros sobre o valor inicial da dívida
      1       0
      3       10
      6       15
      9       20
      12      25
      Exemplo de saída do programa:
      Valor da Dívida Valor dos Juros Quantidade de Parcelas  Valor da Parcela
      R$ 1.000,00     0               1                       R$  1.000,00
      R$ 1.100,00     100             3                       R$    366,00
      R$ 1.150,00     150             6                       R$    191,67
  42. Faça um programa que leia uma quantidade indeterminada de números positivos e conte quantos deles estão nos seguintes intervalos: [0-25], [26-50], [51-75] e [76-100]. A entrada de dados deverá terminar quando for lido um número negativo.
  43. O cardápio de uma lanchonete é o seguinte:
    • Especificação   Código  Preço
      Cachorro Quente 100     R$ 1,20
      Bauru Simples   101     R$ 1,30
      Bauru com ovo   102     R$ 1,50
      Hambúrguer      103     R$ 1,20
      Cheeseburguer   104     R$ 1,30
      Refrigerante    105     R$ 1,00
      Faça um programa que leia o código dos itens pedidos e as quantidades desejadas. Calcule e mostre o valor a ser pago por item (preço * quantidade) e o total geral do pedido. Considere que o cliente deve informar quando o pedido deve ser encerrado.
  44. Em uma eleição presidencial existem quatro candidatos. Os votos são informados por meio de código. Os códigos utilizados são:
    • 1 , 2, 3, 4  - Votos para os respectivos candidatos 
      (você deve montar a tabela ex: 1 - Jose/ 2- João/etc)
      5 - Voto Nulo
      6 - Voto em Branco
      Faça um programa que calcule e mostre:
    • O total de votos para cada candidato;
    • O total de votos nulos;
    • O total de votos em branco;
    • A percentagem de votos nulos sobre o total de votos;
    • A percentagem de votos em branco sobre o total de votos. Para finalizar o conjunto de votos tem-se o valor zero.
  45. Desenvolver um programa para verificar a nota do aluno em uma prova com 10 questões, o programa deve perguntar ao aluno a resposta de cada questão e ao final comparar com o gabarito da prova e assim calcular o total de acertos e a nota (atribuir 1 ponto por resposta certa). Após cada aluno utilizar o sistema deve ser feita uma pergunta se outro aluno vai utilizar o sistema. Após todos os alunos terem respondido informar:
    1. Maior e Menor Acerto;
    2. Total de Alunos que utilizaram o sistema;
    3. A Média das Notas da Turma.
      Gabarito da Prova:
      
      01 - A
      02 - B
      03 - C
      04 - D
      05 - E
      06 - E
      07 - D
      08 - C
      09 - B
      10 - A
      Após concluir isto você poderia incrementar o programa permitindo que o professor digite o gabarito da prova antes dos alunos usarem o programa.
  46. Em uma competição de salto em distância cada atleta tem direito a cinco saltos. No final da série de saltos de cada atleta, o melhor e o pior resultados são eliminados. O seu resultado fica sendo a média dos três valores restantes. Você deve fazer um programa que receba o nome e as cinco distâncias alcançadas pelo atleta em seus saltos e depois informe a média dos saltos conforme a descrição acima informada (retirar o melhor e o pior salto e depois calcular a média). Faça uso de uma lista para armazenar os saltos. Os saltos são informados na ordem da execução, portanto não são ordenados. O programa deve ser encerrado quando não for informado o nome do atleta. A saída do programa deve ser conforme o exemplo abaixo:
    Atleta: Rodrigo Curvêllo
    
    Primeiro Salto: 6.5 m
    Segundo Salto: 6.1 m
    Terceiro Salto: 6.2 m
    Quarto Salto: 5.4 m
    Quinto Salto: 5.3 m
    
    Melhor salto:  6.5 m
    Pior salto: 5.3 m
    Média dos demais saltos: 5.9 m
    
    Resultado final:
    Rodrigo Curvêllo: 5.9 m
  47. Em uma competição de ginástica, cada atleta recebe votos de sete jurados. A melhor e a pior nota são eliminadas. A sua nota fica sendo a média dos votos restantes. Você deve fazer um programa que receba o nome do ginasta e as notas dos sete jurados alcançadas pelo atleta em sua apresentação e depois informe a sua média, conforme a descrição acima informada (retirar o melhor e o pior salto e depois calcular a média com as notas restantes). As notas não são informados ordenadas. Um exemplo de saída do programa deve ser conforme o exemplo abaixo:
    Atleta: Aparecido Parente
    Nota: 9.9
    Nota: 7.5
    Nota: 9.5
    Nota: 8.5
    Nota: 9.0
    Nota: 8.5
    Nota: 9.7
    
    Resultado final:
    Atleta: Aparecido Parente
    Melhor nota: 9.9
    Pior nota: 7.5
    Média: 9,04
  48. Faça um programa que peça um numero inteiro positivo e em seguida mostre este numero invertido.
    • Exemplo:
        12376489
        => 98467321
  49. Faça um programa que mostre os n termos da Série a seguir:
    •   S = 1/1 + 2/3 + 3/5 + 4/7 + 5/9 + ... + n/m. 
      Imprima no final a soma da série.
  50. Sendo H= 1 + 1/2 + 1/3 + 1/4 + ... + 1/N, Faça um programa que calcule o valor de H com N termos.
  51. Faça um programa que mostre os n termos da Série a seguir:
    •   S = 1/1 + 2/3 + 3/5 + 4/7 + 5/9 + ... + n/m. 
      Imprima no final a soma da série.


Envie sua solução

O mais bacana de se programar é ver soluções diferentes.
As vezes passamos meses programando, escrevemos milhares de linhas de código...aí vem um filho da mãe que resolve tudo de maneira melhor, mais rápido e usando só 20 linhas.

Acontece.

Por isso, poste ai nos comentários sua solução.
Não tenha vergonha, vamos discutir!

Intruções ELSE, BREAK e CONTINUE em Laços

Neste tutorial de Python, vamos falar de algumas instruções muito importantes sobre laços: BREAK, CONTINUE, PASS e ELSE.

Instrução ELSE em Python

Já falamos da instrução ELSE em Testes Condicionais do tipo IF ELSE ELIF.
Essa instrução, embora não seja muito famosa, também existe junto com o laço WHILE.



Sua estrutura é a seguinte:

while TESTE:
    codigo
    codigo
    ...
else:
    codigo
    ...

A lógica do ELSE junto com o WHILE é bem simples: assim que sai do laço WHILE (sem ser via instrução BREAK), o código dentro da instrução ELSE será executado.

Ou seja, enquanto o TESTE for verdadeiro, ele roda o código dentro do WHILE.

Quando a condição vira falso, e não se usa uma instrução BREAK, o código do ELSE será executado (com uma mensagem de saída, de desligamento de sistema, por exemplo).



Instrução BREAK em Python

Outro comando muito importante e usado em laços Python, é o BREAK, que significa 'quebrar', 'interromper', 'pausar'. E é isso que faz.




while TESTE:
    codigo
    if TESTE2:
       break;
    ...

A função do BREAK é simplesmente parar o looping.
Se fizer um teste, ele der positivo e você usar a break, o laço é automaticamente findado.


Instrução CONTINUE em Python

Na instrução BREAK, quando ela é executada, tudo para, tudo acaba, adeus laço, adeus WHILE, adeus FOR, termina ele.




Se ao invés de break usar continue, o laço não é terminado. Porém, ele pula do continue pro início do laço, tudo que tem ali em diante do continue não é mais executado.

Exemplo de Código Python

A instrução pass é muito utilizada quando queremos um código vazio, uma instrução vazia, sem fazer nada de específico.

O código a seguir é um looping infinito, roda eternamente, esse código só vai parar de executar se você digitar CONTROL + C

while 1:
    pass

Exercício Resolvido de Python

Escreva um programa em Python que vai somar todos os números de 1 até 1 milhão, menos os que são múltiplos de 3.

A soma total ficará armazenada em total.
Vamos percorrer todos os números de 1 até 1 milhão, quem vai assumir todos esses valores é a variável count, nosso contador.

Primeiro incrementamos nosso contador. Ele começa em 0 e logo vira 1.
Agora, vamos fazer um teste para saber se o valor de count é múltiplo de 3.

Se for múltiplo de 3, damos uma instrução continue e o loop for segue para o próximo elemento, nada é feito, pulamos para a próxima iteração.

Caso não seja múltiplo de 3, vamos somar esse valor do contador na variável total.

Prontinho, nosso programa percorre de 1 até 1 milhão e soma tudo que não for múltiplo de 3:

total=0

for count in range(1000000):
    count += 1
    if(count % 3 == 0 ): continue
    total += count
    
print(total)


Como calcular Fatorial em Python

Neste tutorial de nosso Curso de Python Online Grátis, vamos te ensinar o que é o número fatorial, para que serve, e como implementar ele tanto usando o laço FOR como o laço WHILE.

Já pensou em ir além de apenas aprender Python...e trabalhar com isso?
Leia:

Fatorial na Matemática

O fatorial é uma operação matemática, representada pelo símbolo de exclamação: !



A fórmula de fatorial de um número n é:
n! = n * (n-1) * (n-2) * ... * 3 * 2 * 1

Ou seja, o valor de n! (leia-se: n fatorial) é o produto de 1, por 2, por 3, ..., por (n-1) e n.

Por exemplo:
4! = 4 x 3 x 2 x 1 = 24
5! = 5 x 4 x 3 x 2 x 1 = 120 (ou: 5! = 5 x 4! = 5x24 = 120)

E por ai vai.

O fatorial é muito usado em um ramo da Matemática chamado Análise Combinatória. Muito mesmo. Se você fez ensino médio, certamente sabe o que é um fatorial.

Agora, vamos levar isso pro nosso amado Python.


Fatorial com o laço WHILE em Python

Vamos aprender agora como calcular o fatorial de número usando o laço While em Python.



Vamos lá, tente o máximo que puder:
Crie um programa em Python que pede um número inteiro ao usuário e calcule seu fatorial.


Vamos pedir um número inteiro e positivo ao usuário, e armazenar na variável numero.

Agora precisamos calcular o produto:
1*2*3*...*(numero-1) * numero

Vamos armazenar esse produto na variável resultado.
Inicialmente, vamos iniciar a variável resultado com 1:

resultado = 1

Agora vamos precisar de um contador, vamos usar a variável count para ir de 1 até numero, a cada iteração do laço WHILE, ela é incrementada.

Então, dentro do laço while, fazemos com que resultado seja multiplicado por count, pois count vai assumir os valores de 1, 2, 3, ..., até numero.

Quando chegar em numero, nosso looping while deve parar.
Logo, o teste condicional do while deve ser: count <= numero , ok?

Veja como ficou nosso script em Python:


numero = int(input("Fatorial de: ") )

resultado=1
count=1

while count <= numero:
    resultado *= count
    count += 1

print(resultado)


Lembrando que:
  • resultado *= count é o mesmo que: resultado = resultado * count
Ou seja, o novo valor de 'resultado' vai ser o valor antigo multiplicado por 'count'.

  • Já: count += 1 significa: count = count + 1
Ou seja, estamos incrementando o valor de 'count' em uma unidade, a cada iteração do laço WHILE.


Calcular fatorial usando laço FOR em Python

A lógica deve ser a mesma. Na verdade, tudo que um laço WHILE faz o FOR faz, e vice-versa.



"Ué, então pra que criar os dois?"
Porque tem situações que é melhor usar um e situações que é melhor usar outro.

Neste caso, você vai ver que é melhor usar o FOR.

Vamos repetir a ideia: Precisamos fazer várias multiplicações, do número 1 até o valor inserido pelo usuário, numero.
Do intervalo 1 até numero.

Isso te lembra algo? Intervalo?

Sim, range.
Nossa querida, amada função range do Python, que é unha e carne com o laço FOR.

Como queremos um intervalo que vai de 1 até numero, basta usarmos:
range(1, numero+1)

Veja como nosso código fica bem mais enxuto e fodástico usando o laço FOR:

numero = int(input("Fatorial de: ") )

resultado=1
for n in range(1,numero+1):
    resultado *= n

print(resultado)

Exercício de Python

Seu  professor de Matemática, cansado de ficar fazendo multiplicações para achar o fatorial, te encomendou um script em Python (obviamente pagou, pois você possui um certificado do curso de Python).

Porém, ele quer fazer vários e vários cálculos.
Nos exemplos anteriores a gente pede o número uma vez, mostra o fatorial e fecha o script.

Ele não, ele quer um looping infinito, que só acabe quando ele fornecer o número 0 como entrada.

Se garante? Faça aí e poste nos comentários.

Laço FOR em Python - Um loop controlado

Agora que já estudamos e aprendemos direitinho, em nosso Curso Python Progressivo, como usar o laço While, vamos aprender um outro loop, chamado FOR.


Laço FOR em Python - Como usar ?

Sem mais delongas, vamos mostrar como é a declaração e estrutura de um laço for, em Python:

for variavel in [val1, val2, val3, etc]:
    codigo
    codigo
    codigo

Funciona basicamente assim.
A variável 'variavel' vai assumir o valor da variável 'val1', e executa o código.

Em seguida, 'variavel' recebe o valor de val2, e executa o código. E assim sucessivamente, até 'variavel' ter recebido todos os valores da sequência.

Ou seja, nosso laço for tem três coisas:
A variável que vai receber os valores de uma sequência de dados
A sequência de dados
Código a ser executado em cada iteração

Diferente do loop WHILE, que apenas faz um teste (se for verdadeiro executa um código, se for falso, termina o loop), o loop FOR é dito controlado, pois vai executar um determinado número de vezes, que nós escolhemos previamente.

Vamos ver alguns exemplos de uso do laço FOR para firmar os conceitos, só ler essa abstração é meio...abstrato.




Exemplo 1 de uso do laço FOR em Python

"Crie um script em Python que imprima os números de 1 até 5 na tela."
 
Nossa sequência é: 1, 2, 3, 4, 5
Então, nosso código fica:

for val in [1,2,3,4,5]:
    print(val)

Sim, é só isso.
E mais simples é o funcionamento: a variável 'val' recebe o valor 1, e imprime. Depois recebe o valor 2, e imprime....por fim, recebe o valor 5 e imprime.

Como a variável percorreu todos os elementos da lista (esses valores entre colchetes se chamam list e estudaremos as listas com afinco, mais na frente em nosso curso), o laço for acaba.



Exemplo 2 de uso do laço FOR em Python

"Crie um script que imprime todos os dias da semana na tela."
 
Não é obrigatório usarmos números na sequência. Uma lista pode ser formada de strings, por exemplo.

Nosso código fica:

for dia in ['Segunda', 'Terça', 'Quarta', 'Quinta', 'Sexta', 'Sábado', 'Domingo']:
    print(dia)


Ou seja, a variável 'dia' recebe o valor de cada string e imprime na tela.

Exercício:

"Escreva um script que imprima os números de 1 até 1000."

"Nossa senhora, vou ter que usar a sequếncia [1,2,3,4,5,6,7,8,9...,1000] ???
Deus me livre!"

Calma, nobre cavaleiro Python. A programação veio para facilitar nossas vidas, e não o contrário.

Não precisa digitar os mil números, é para isso que serve o Python: trabalhar pra gente!

No próximo tutorial de Python, vamos aprender a usar a função range() do Python, que resolve esse problema e muitos outros.

A função range

Curso de Python com Certificado

Já imaginou ganhar dinheiro com Python?
Se, trabalhando e se tornando um programador Python profissional.

Pois é, pare de imagine e tome uma atitude pra isso se tornar realidade:
Curso de Python

WHILE em Python - Como usar

Neste tutorial de nosso curso de Python, vamos estudar uma das coisas mais importantes e usada em programação: o laço while (ou looping while).



Laço WHILE

Sem mais delongas, vamos aprender a usar essa arma de destruição em massa, que é o laço while.

Seu formato é

while <teste>:
   codigo1
   codigo2
   codigo3
   ... 

codigo4

A instrução while funciona assim:
Assim que começa o while, ele faz um teste (como se fosse um IF teste condicional) e testa a instrução <teste>.

Se este teste resultar em verdadeiro (TRUE), tudo que está dentro do laço while (codigo1, codigo2, codigo3..., é executado).

Terminou de executar tudo?
Testa de novo. Deu true? Executa tudo de novo...

E fica assim, testando, executando, testando, executando...
Como se fosse um looping. E, de fato, é um looping.

E só vai parar quando o teste for FALSE.
Aí acaba o while e o 'codigo4', de fora, é executado e o script segue seu percurso naturalmente.

Você vai entender melhor usando alguns exemplos.




Exemplo 1 de uso do laço WHILE

"Crie um programa que imprima na tela os números 1 até o 10, usando o laço while".

Primeiro de tudo, vamos declarar a variável 'numero' e fazer ela iniciar com valor 1.

O que queremos é imprimir ela, depois fazer ela virar o número 2 e imprimir de novo. Fazer ela receber o número 3, e imprimir de novo...até virar o número 10, imprimir e acabar aí.

O nosso teste é: 'numero é menor ou igual a 10? Ok, então imprime'.
E o looping é simplesmente imprimir nossa variável.

Nosso código Python fica assim:

numero=1

while numero<=10:
    print(numero)
    numero += 1

Tem uma novidade aí: numero += 1
Que é o mesmo que: numero = numero + 1

Ou seja, estamos incrementando a variável 'numero' em uma unidade.
Vamos ver passo a passo como funciona esse tal de while.

Primeiro definimos nossa variável com valor 1.
Depois testamos se ela é menor que 10. Como é, vai executar o laço while.
Primeiro, imprime o valor da variável, que é 1.
Depois adiciona 1 a essa variável.

Agora ela vale 2. O teste é realizado, como 2 é menor que 10.
Executa de novo...imprime 2, incrementa e agora a variável é 3.

E assim vai indo, indo, repetindo, repetindo...vai chegar uma hora que 'numero=10'

Como 'numero<=10' é verdadeiro, o laço while é executado.
O número 10 é impresso na tela, e ele vira 11.

Agora, o teste vai dar falso e o while vai parar de executar.
E prontinho, você imprimiu do número 1 até o 10 usando o laço while!

Simples, não?
Vamos aprofundar mais e deixa esse código mais interessante.



Exemplo 2 de uso do laço WHILE

"Faça um programa que peça um número maior que 1 ao usuário. Em seguida, imprima todos os números, de 1 até o número que o usuário informou".

No exemplo anterior, a gente tinha um 'limite', que era o valor 10.
Quando chegava em 10...créu. Acabava o laço while.

Agora esse valor vai ser informado pelo usuário. Vamos armazenar essa informação na variável 'max' (de máximo).

Nosso código fica:

numero=1
max = int(input("Digite um inteiro maior que 1: ") )

while numero <= max:
    print(numero)
    numero += 1


Experimente digita 100, 1000, um milhão, um trilhão...
Veja que interessante: quantas vezes esse while vai ser executado?

Ué, depende do usuário!
Pode repetir uma vez, 10, mil, 1 trilhão...há uma interação entre o script e o usuário, vai fazer coisas diferentes de acordo com o desejo do usuário.

Exemplo 3 de uso do laço WHILE

"Escreva um programa que repita pra sempre, na tela, a mensagem 'Curso Python Progressivo'".

Quando que um laço vai se repetir pra sempre, indefinidamente?
Ué, quando seu teste for SEMPRE verdadeiro!

while True:
    print("Curso Python Progressivo")


Também poderia colocar '1', '2' ou qualquer outro valor diferente de 0 ou false no teste, que daria sempre verdadeiro e iria sempre repetir.

Exemplo 4 de uso do laço WHILE

"Crie um programa que peça um número ao usuário e imprima todos os números pares de 1 até o número fornecido"

Vamos usar o código do exemplo 2.
Porém, não vamos sair imprimindo tudo. Devemos fazer um teste antes (teste condicional IF) para saber se o número é primo, se for aí sim imprimimos.

Ou seja, vamos ter um IF dentro de um WHILE:

numero=1
max = int(input("Digite um inteiro maior que 1: ") )

print("Numeros pares entre 1 e", max, ":")

while numero <= max:
    if numero%2==0:
        print(numero,  end=" ")
    numero+=1

O end=" " é para mostrar um espaço em branco após imprimir cada número, ao invés de quebra de linha (enter).

Looping while em Python

Exemplo 5 de uso do laço WHILE

"Escreva um programa que pede a senha ao usuário, e só sai do looping quando digitarem corretamente a senha"

Obviamente, a senha é o número mais importante do universo:
senha='2112'

A senha que o usuário vai digitar, vai ficar na variável 'tentativa'.

Se 'senha' e 'tentativa' forem diferentes, o laço while fica repetindo e repetindo e repetindo...sempre pedindo a senha ao usuário.

O laço while só acaba quando as variáveis 'senha' e 'tentativa' forem iguais, ou seja, quando o usuário digitar a senha correta:

senha='2112'
tentativa=input("Digite a senha:")

while (senha != tentativa):
    print("Senha errada! Tente novamente!")
    tentativa=input("Digite a senha:")

print("Senha correta. Entrando no sistema...")

Pelo amor de deus, agora que sabe como funciona, não vai sair por aí usando seus conhecimentos pra invadir o sistema da Nasa, FBI, Polícia Federal ....


Exemplo 6 de uso do laço WHILE

"Programe um script em Python que calcule a média de uma turma, não importa o número de alunos que ela tenha, seu único script serve para todos os casos"

Esse é o problema que descrevemos quando falamos de laços e loopings em Python.

Primeiro, perguntamos quantos alunos tem na turma e armazenamos em "alunos".

Vamos usar uma variável de apoio, chamada 'count', ela vai de 1 até o número de alunos, ok ? Ela que é incrementada no laço while (cresce de um em um).
A soma de todos os alunos, armazenamos na variável 'soma'.

Agora vem o laço while.
O teste é se 'count' é menor que 'alunos'. Se sim, vamos pedir a nota de cada aluno, do primeiro até o aluno de número 'alunos'.

A nota que o usuário digitar, vai ser armazenada na variável 'nota'.
Em seguida, armazenamos na variável 'soma'.

E assim vai indo, de aluno em aluno...no final, temos a soma total das notas de tooodo mundo, e não importa o número de alunos na turma, seja um aluno, 10, 20 ou mil alunos, a variável 'soma' vai ter a soma da nota de todo mundo.

Quando acabar o while basta dividir essa 'soma' pelo número de alunos ('alunos') e prontinho, temos a média da turma, não importando o tamanho da turma:

alunos=int(input("Numeros de alunos na turma: "))

count=1; soma = 0.0
while count <= alunos:
    print("Nota do aluno ", count, ":")
    nota = float( input() )
    soma += nota
    count += 1

print("Media da turma: ", (soma/alunos) )

Foda, essa instrução while, não é?