Enviar um café pro programador

Achar Unidade, Dezena, Centena...de um número em Python

Nesse exercício que iremos resolver e comentar o código, vamos aprender a usar o operador %, também conhecido por "resto da divisão", em nossa Apostila de Python Online.



Exercício de Python

"Faça um Programa que leia um número inteiro menor que 1000 e imprima a quantidade de centenas, dezenas e unidades do mesmo.

Exemplo:
123 = 1 centena(s), 2 dezena(s) e 3 unidade(s)
12 = 1 dezena(s) e 2 unidade(s)
Testar com: 326, 300, 100, 320, 310,305, 301, 101, 311, 111, 25, 20, 10, 21, 11, 1, 7 e 16"

Resto da Divisão em Python

Para sabermos o valor da unidade de um número inteiro positivo qualquer, em Python, basta usar o operador de resto da divisão % da seguinte maneira:

unidade = numero % 10

Pronto. Só isso.
Se nosso número é 123 e fizermos 123 % 10, o resultado vai ser 3.
Então 3 é nossa unidade.

E como achar a dezena?

O próximo passo é transformar nosso número de 123 pra 12 (excluímos a unidade).
Primeiro, subtraímos do número o valor da unidade.
123 - 3 = 120

Depois, dividimos o número por 10:
120 / 10 = 12

Prontinho, pra achar a dezena basta fazer: 12 % 10 = 2

Em programação Python, fica assim:
numero = (numero - unidade) / 10 # Passa de 123 pra 123-3 = 120 / 10 = 12
dezena = numero % 10                 # dezena = 12 % 10 = 2

E pra achar o valor da centena?
De novo, transformamos de 12 pra 1 (excluímos 2).

Subtraímos a dezena achada: 12 - 2= 10
E novamente dividimos por 10: 10/10 = 1

Em programação Python:
numero = (numero - dezena)/10
centena = numero

No caso, paramos por aí. Por só queremos achar até a centena.
Nesse ponto, nosso número vai ser o mesmo valor da centena.

Se quiser para números maiores, só seguir essa lógica.




Código comentado em Python

    numero = int(input('Digite um numero inteiro positivo: '))

    # Extraindo a unidade
    unidade = numero % 10

    # Eliminando a unidade de nosso número
    numero = (numero - unidade)/10

    # Extraindo a dezena
    dezena = numero % 10

    # Eliminando a dezena do número original, fica a centena
    numero = (numero - dezena)/10
    centena = numero

    # Fazendo ser inteiros
    dezena = int(dezena)
    centena = int(centena)
    print(centena,'centena(s),',dezena,'dezena(s) e',unidade,'unidade(s)')


Determinar se uma data é válida ou não em Python

"Faça um Programa que peça uma data no formato dd/mm/aaaa e determine se a mesma é uma data válida."

Saber se uma data é válida ou inválida em Python

Vamos armazenar os dados nas variáveis 'dia', 'mes' e 'ano'.

Para armazenar o valor lógico verdadeiro ou falso, vamos usar a variável booleana 'valido'. Inicialmente fazer ela ser falsa:
valido = False

O grande segredo nesse algoritmo é o mês.

Primeiro vamos testar se o mês digitado tem 31 dias.
São os meses 1, 3, 5, 7, 8, 10 ou mês 12.
Se tiver digitado um desses valores para 'mes', vamos verificar a variável 'dia' é menor ou igual a 31. Se for, a data é válida e fazemos 'valida = True'
Se não for, continua sendo False

Agora vamos testar os meses que tem 30 dias.
Eles são os meses 4, 6, 9 e o mês 11.
Nesses meses, temos que avaliar se a variável 'dia' tem um número menor ou igual a 30. Se sim, fazemos 'valida = True'.

Por fim, vamos avaliar o mês mais problemático, o mês 2, fevereiro.
Inicialmente, é preciso verificar se é ano bissexto, se for bissexto a variável 'dia' deve ser testada para saber se o valor digitado é 29 ou menos. Se sim, validamos a data com 'valida = True'

Se não for ano bissexto, testamos a variável 'dia' para saber se o valor digitado foi 28 ou menos. Se for, 'valida = True'

Caso não tenham digitado um número de 1 até 12 em mês, a variável 'valida' continua tendo valor False, pois não caiu em nenhum IF ou ELIF.

Por fim, testamos a variável booleana 'valida'. Se for True, dizemos que a data é válida, se tiver o valor lógico False nela, dizemos que é inválida:
    dia = int( input('Dia: ') )
    mes = int( input('Mês: ') )
    ano = int( input('Ano: ') )

    valida = False
    
    # Meses com 31 dias
    if( mes==1 or mes==3 or mes==5 or mes==7 or \
        mes==8 or mes==10 or mes==12):
        if(dia<=31):
            valida = True
    # Meses com 30 dias
    elif( mes==4 or mes==6 or mes==9 or mes==11):
        if(dia<=30):
            valida = True
    elif mes==2:
        # Testa se é bissexto
        if (ano%4==0 and ano%100!=0) or (ano%400==0):
            if(dia<=29):
                valida = True
        elif(dia<=28):
                valida = True

    if(valida):
        print('Data válida')
    else:
        print('Inválida')


Ano Bissexto em Python

" Faça um Programa que peça um número correspondente a um determinado ano e em seguida informe se este ano é ou não bissexto."





Achar ano bissexto pelo Python

Anos bissextos são aqueles que são múltiplos de 4, como 1996, 2000, 2004 etc (que podem ser divididos por 4 deixando resto 0).
Porém, há uma exceção: múltiplos de 100 que não sejam múltiplos de 400.


Uma das duas condições a seguir deve ser verdadeira:
Condição 1: Ser múltiplo de 4 e não ser múltiplo de 100
Condição 2: 
Ser múltiplo de 400 (se for múltiplo de 400 automaticamente é de 4)

Logo, temos o código:

ano = int(input('Ano: '))
if (ano%4==0 and ano%100!=0) or (ano%400==0):
    print('Bissexto')
else:
    print('Não é bissexto')



Programa que acha raízes de uma equação do segundo grau em Python

"
Faça um programa que calcule as raízes de uma equação do segundo grau, na forma ax² + bx + c. O programa deverá pedir os valores de a, b e c e fazer as consistências, informando ao usuário nas seguintes situações:
  1. Se o usuário informar o valor de A igual a zero, a equação não é do segundo grau e o programa não deve fazer pedir os demais valores, sendo encerrado;
  2. Se o delta calculado for negativo, a equação não possui raizes reais. Informe ao usuário e encerre o programa;
  3. Se o delta calculado for igual a zero a equação possui apenas uma raiz real; informe-a ao usuário;
  4. Se o delta for positivo, a equação possui duas raiz reais; informe-as ao usuário;
PS: digite 'import math' no início de seu script. Para achar a raiz quadrada da variável x, faça: math.sqrt(x)
"



Equação do segundo grau em Python

Antes de mais nada, vamos relembrar a fórmula de Bháskara para achar as raízes de uma equação do segundo grau, do tipo: ax² + bx + c = 0 :
Fórmula de Bháskara em Python
O primeiro teste que fazemos é em relação ao coeficiente a. Se for 0, não é uma equação do segundo grau e acaba o programa.

Se for diferente de 0, cai no else, que é onde todo nosso programa vai funcionar. Primeiro, dentro do else, pedimos o valor dos coeficientes b e c.

Agora, vamos calcular o delta.
Em Python, fica assim: delta = b*b - (4*a*c)

Agora vamos testar o delta, dentro de um if aninhado no else anterior.
Se for menor que 0, encerramos o programa dizendo que as raízes são imaginárias.

Em seguida, usamos um elif para testar se delta for 0, se sim valor da raiz será:raiz = -b / (2*a)

Por fim, se não é menor que 0 e o delta não é 0, é porque vai ser sempre maior que 0. Essa condição cai no else aninhado, onde calculamos as raízes assim:
raiz1 = (-b + math.sqrt(delta) ) / (2*a)
raiz2 = (-b  - math.sqrt(delta) ) / (2*a)

Nosso código ficou:

    import math
    
    print('Equaçao do 2o grau da forma: ax² + bx + c')
    
    a = int( input('Coeficiente a: ') )

    if(a==0):
        print('Se a=0, não é equação do segundo grau. Tchau')
    else:
        b = int( input('Coeficiente b: ') )
        c = int( input('Coeficiente c: ') )
        delta = b*b - (4*a*c)

        if delta<0:
            print('Delta menor que 0. Raízes imaginárias. Tchau')
        elif delta==0:
            raiz = -b / (2*a)
            print('Delta=0 , raiz = ',raiz)
        else:
            raiz1 = (-b + math.sqrt(delta) ) / (2*a)
            raiz2 = (-b - math.sqrt(delta) ) / (2*a)
            print('Raizes: ',raiz1,' e ',raiz2)



Curso de Python - Triângulo Equilatero, Isósceles e Escaleno

"
Faça um Programa que peça os 3 lados de um triângulo. O programa deverá informar se os valores podem ser um triângulo. Indique, caso os lados formem um triângulo, se o mesmo é: equilátero, isósceles ou escaleno.

  • Sabemos que:
  • Três lados formam um triângulo quando a soma de quaisquer dois lados for maior que o terceiro;
  • Triângulo Equilátero: três lados iguais;
  • Triângulo Isósceles: quaisquer dois lados iguais;
  • Triângulo Escaleno: três lados diferentes;
"


Código comentado - Curso de Python

Vamos receber os três lados do triângulo e armazenar nas variáveis a, b e c.

O primeiro teste que fazemos é para saber se a soma de quaisquer dois lados é menor que o terceiro lado. Se for, esses três valores não formam um triângulo e acabou o programa aí, precisa nem testar se é equilátero, isósceles e escaleno.

Se a soma de dois lados quaisquer for maior que o terceiro lado, ok, é triângulo e vamos pro elif.

Agora, vamos testar se é equilátero, para isso comparamos o lado a com o b e depois o lado a com o lado c.

Note que não precisamos comparar os lados b e c, pois se a é igual a b E TAMBÉM (operador lógico and) a é igual a c, então o lado b vai ser automaticamente igual ao lado c.
Se forem todos iguais, diz que é equilátero e acabou aí.

Se não for equilátero, cai no próximo elif.
Lá vamos testar se ele tem dois lados iguais: a==b ou a==c ou b==c (notem o OU, que é o operador lógico or).
Se alguma dessas comparações retornar verdadeiro, o triângulo é isósceles e acaba aí.

Porém, se não for isósceles, cai no else final.
Pois se não é equilátero nem isósceles, e é um triângulo, tem de ser escaleno.

    a = float(input('Primeiro lado: '))
    b = float(input('Segundo  lado: '))
    c = float(input('Terceiro lado: '))
    
    # Testando se é triângulo
    if (a + b < c) or (a + c < b) or (b + c < a):
        print('Nao é um triangulo')
    elif (a == b) and (a == c) :
        print('Equilatero')
    elif (a==b) or (a==c) or (b==c):
        print('Isósceles')
    else:
        print('Escaleno')



Python - Programa que calcula salário e aumento em porcentagem

"
As Organizações Tabajara resolveram dar um aumento de salário aos seus colaboradores e lhe contrataram para desenvolver o programa que calculará os reajustes.


  • Faça um programa que recebe o salário de um colaborador e o reajuste segundo o seguinte critério, baseado no salário atual:
  • salários até R$ 280,00 (incluindo) : aumento de 20%
  • salários entre R$ 280,00 e R$ 700,00 : aumento de 15%
  • salários entre R$ 700,00 e R$ 1500,00 : aumento de 10%
  • salários de R$ 1500,00 em diante : aumento de 5% Após o aumento ser realizado, informe na tela:
  • o salário antes do reajuste;
  • o percentual de aumento aplicado;
  • o valor do aumento;
  • o novo salário, após o aumento."

Código comentado em Python

Vamos armazenar o salário na variável 'salario' (que original, hein?)
Teremos outras variáveis no decorrer do programa:
  • percentual - percentual de aumento aplicado
  • aumento - valor em R$ do aumento aplicado
  • salario_novo - novo valor do salário, reajustado pelo aumento
A única coisa que muda, de acordo com o salário fornecido pelo usuário, é o percentual do aumento.

Vamos fazer uma série de testes IF ELIF ELSE pra descobrir qual percentual correto aplicar.

Se for menor ou igual a R$ 280,00 , percentual será 20%
Se não for, vamos testar para ver se é menor ou igual a R$ 700,00 - se for, o percentual será de 15%.

Se também não for menor R$ 700,00, vamos testar para ver se é menor igual a R$ 1500,00 - se sim, 'percentual' recebe 10 (%). 

Se também não for menor que R$ 1500,00 é porque é maior então aplicamos 5%.

Para saber o valor do aumento em R$, primeiro pegamos a variável  'percentual' e dividimos por 100.0 (usamos decimal pra mostrar ao Python que essa variável deve ser tratada como um float):
percentual = percentual / 100.0

(essa linha quer dizer: o novo valor de 'percentual' é o valor antigo dela dividido por 100).

Agora multiplicamos 'percentual' por 'salario' e temos o aumento do salário em R$.

Basta somar esse valor ao salário original, que temos o novo salário:


    salario = float(input('Salário do colaborador: '))

    if (salario <= 280):
        percentual = 20
    elif (salario <= 700):
        percentual = 15
    elif (salario <= 1500):
        percentual = 10
    else:
        percentual = 5

    print('Salario original: R$ ', salario)
    print('Percentual: ',percentual,'%')

    percentual = percentual/100.0
    aumento = percentual * salario
    novo_salario = salario + aumento
    
    print('Aumento: R$ ',aumento)
    print('Novo salário: R$ ', novo_salario)
 



Python - Trocando o valor de duas variáveis

"Faça um programa que pede dois inteiro e armazene em duas variáveis. Em seguida, troque o valor das variáveis e exiba na tela"



Temos duas variáveis: var1 e var2

Vamos fazer com que var2 receba o valor de var1:
var2 = var1

Agora vamos fazer com que var1 receba o valor de var2...epa!
Vai dar erro, pois eu MUDEI o valor de var2 no comando anterior!
O valor originalmente em var2 foi perdido quando fiz essa variável mudar de valor.

E agora, José?
Calma, você faz o Curso Python Progressivo, e vai aprender a resolver isso.
O segredo é: usar uma variável auxiliar, a aux

A função dar aux é guardar aquele primeiro valor contido em var2.
Então, a troca de valores se dá assim:

aux = var2
var2 = var1
var1 = aux

Faz sentido pra você?
Reflita e veja se entender perfeitamente, pois esse algoritmo de troca é MUITO importante!


    var1 = int(input('Primeiro numero: '))
    var2  = int(input('Segundo numero : '))

    print('Variavel 1: ',var1)
    print('Variavel 2: ',var2)
    print('Invertendo...')

    aux  = var2
    var2 = var1
    var1 = aux
    
    print('Variavel 1: ',var1)
    print('Variavel 2: ',var2)



Python - Três números em ordem decrescente

"Faça um Programa que leia três números e mostre-os em ordem decrescente."



Invertendo dois a dois

O grande segredo desse tipo de algoritmo, é comparar e trocar valor das variáveis, duas a duas.

Por exemplo, vamos pegar a sequência: 10 - 20 - 30
Primeira posição: 10
Segunda posição: 20
Terceira posição: 30

Primeiro vamos comparar a segunda posição com a terceira.
A terceira posição é maior que a segunda? Se for, inverte.
Agora fica: 10 - 30 - 20

Pronto, colocamos em ordem decrescente as duas últimas posições.
Agora vamos comparar a primeira posição com a segunda.

A segunda posição tem um valor maior (30) que a primeira (10)?
Sim! Tem! Então inverte essas duas.
Agora fica: 30 - 10 - 20

Note que ao fazer isso, da direita pra esquerda, pegando duas a duas a posição, jogamos sempre o maior número pro começo da ordem.

Por fim, vamos comparar novamente a segunda com a terceira posição.
A terceira é maior que a segunda? Se for, troca! E é.
Agora fica: 30 - 20 - 10

Algoritmo:
1. Compara as duas últimas posições
2. Compara as duas primeiras posições
3. Compara novamente as duas últimas posições


primeiro = int(input('Primeiro numero: '))
    segundo  = int(input('Segundo numero : '))
    terceiro = int(input('Terceiro numero: '))

    print(primeiro,'-',segundo,'-',terceiro)

    if(terceiro > segundo):
        aux = terceiro
        terceiro = segundo
        segundo = aux

    if(segundo > primeiro):
        aux = segundo
        segundo = primeiro
        primeiro = aux

    if(terceiro > segundo):
        aux = terceiro
        terceiro = segundo
        segundo = aux

    print(primeiro,'-',segundo,'-',terceiro)

Mais a frente, estudaremos o algoritmo de bubble sort, onde vamos aprender a ordenar listas de números de qualquer tamanho. A lógica é a mesma: ir comparando dois a dois, do fim pro começo (ou começo pro fim - depende se quer ordem crescente ou decrescente).






Treinando mais ordenação

Só pra treinar, vamos pegar uma sequência maior, de 4 números:
10 - 20 - 40 - 30

Vamos comparar dois a dois.
1. Quarta posição com a terceira: tá ok, 40 é maior que 30, não invertemos.
Ordem: 10 - 20 - 40 - 30

2. Agora a terceira posição (40) com a segunda (20):
40 é maior, então inverte.
Agora fica: 10 - 40 - 20 - 30

3. Segunda com a primeira posição: inverte, pois 40 > 10
Agora fica: 40 - 10 - 20 - 30

4. Chegamos no começo da lista. A primeira posição tem o maior número, que é o correto. Agora vamos comparar tudo de novo, da direita pra esquerda, porém vamos até a segunda posição, pois a primeira já tem o maior.

5. Comparando quarta com terceira: inverte, pois 30 > 20
Temos: 40 - 10 - 30 - 20

6. Comparando terceira com segunda: inverte, pois 30 > 10
Temos: 40 - 30 - 10 - 20
Chegamos ao fim, e colocamos o segundo maior valor na segunda posição, como desejamos. Não mexemos mais na primeira nem na segunda posição da lista.

Agora, vamos pro começo de novo, na direita.

7. Comparando a quarta com a terceira posição: inverte, pois 20 > 10
Temos: 40 - 30 - 20 - 10

Chegamos ao fim, o terceiro maior número na terceira posição.
Automaticamente, a última posição foi preenchida e...tcharam, a lista ficou ordenada, do maior pro menor!

Python - Recebe três números e exibe o maior e o menor

"Faça um Programa que leia três números inteiros, em seguida mostre o maior e o menor deles."



Código Comentado em Python

Vamos usar o mesmo código da questão anterior, pra achar o maior número:
Achar o maior número em Python 

Em seguida, vamos achar o menor.
A lógica é a mesma de achar o maior, primeiro fazemos com que a variável 'menor' receba o valor do 'primeiro' número.

Em seguida, comparamos se o segundo valor é menor que o primeiro.
Se for, a variável 'menor' agora vai receber o valor de 'segundo'.
Se não for menor, fica como está ('menor' continua com o valor de 'primeiro', que é o menor entre os dois primeiros números).

Agora vamos fazer o mesmo teste com o terceiro número.
Se ele for menor que o valor armazenado em 'menor', fazemos com que 'menor' receba o valor de 'terceiro'.

Nosso código fica:


 primeiro = int(input('Primeiro numero: '))
    segundo  = int(input('Segundo numero : '))
    terceiro = int(input('Terceiro numero: '))

    # Achando o maior número
    maior = primeiro

    if (segundo > maior):
        maior = segundo
    if (terceiro > maior):
        maior = terceiro

    print('Maior: ',maior)

    # Achando o menor número
    menor = primeiro

    if (segundo < menor):
        menor = segundo
    if (terceiro < menor):
        menor = terceiro

    print('Menor: ',menor)



Python: Pede três números e diz o maior

"Faça um Programa que leia três números inteiros e mostre o maior deles."





Questão de Python Resolvida

Vamos armazenar os três números que o usuário digitar nas variáveis 'primeiro', 'segundo' e 'terceiro'.

O pulo do gato, nessa questão, é usar uma variável extra, que chamaremos de 'maior'. A função dessa variável é simples: armazenar o maior valor que ela achar.


Inicialmente, fazemos com que 'maior' aponte para a variável 'primeiro', estamos supondo que o número 'primeiro' é o maior:

maior = primeiro

Agora vamos fazer os testes!

Vamos comparar o primeiro número com o segundo.
Se o segundo for maior que o primeiro, a variável 'maior' agora vai receber o valor da variável 'segundo':
maior = segundo

Se não for maior, então 'maior' ainda está com o valor da variável 'primeira', que definimos no começo. Então a variável 'maior' vai ter sempre o maior valor, entre os dois primeiros números digitados, concorda?


Agora vamos testar se a variável 'terceiro' é maior que o valor 'maior'.

Se for, o novo valor de 'maior' vai ser o terceiro número:
maior = terceiro

Se não for maior que 'terceiro', ela continua com valor anterior e este é o maior de todos.

Nosso código fica:

    primeiro = int(input('Primeiro numero: '))
    segundo  = int(input('Segundo numero : '))
    terceiro = int(input('Terceiro numero: '))

    maior = primeiro

    if (segundo > maior):
        maior = segundo
    if (terceiro > maior):
        maior = terceiro

    print('Maior: ',maior)

Não se assuste se não entender de cara.
Leia, releia, pense, pense de novo, reflita, chore em posição fetal até entender.

Programar é assim mesmo. O segredo é continuar tentando entender, continuar pensando...



Exercício de Python: Recebe duas notas, calcula média e diz se foi aprovado

"Faça um programa que pede duas notas de um aluno. Em seguida ele deve calcular a média do aluno e dar o seguinte resultado:  
  • A mensagem "Aprovado", se a média alcançada for maior ou igual a sete; 
  • A mensagem "Reprovado", se a média for menor do que sete; 
  • A mensagem "Aprovado com Distinção", se a média for igual a dez.
 "


Exercício Resolvido em Python

Pedimos as notas ao usuário e armazenamos nas variáveis 'nota1' e 'nota2'.
Não esqueça de transformá-las em decimal, usando a função float()

Em seguida, calculamos a média.
Use parêntesis para não ter problema de precedência de operadores.

Agora vamos aos testes.
É sempre interessante tratar logo a condição mais simples e que exclui logo todo o restante.

Nesse caso, testamos logo se a média é menor que 7.
Se for, diz reprovado e encerra o script.

Caso não seja menor, é porque é maior ou igual a 7.

Aqui temos que fazer outro teste: já sabemos que é 7.0 ou mais, mas esse número é menor 10.0 ?
Se for, então exibe a mensagem de parabéns.

Se não for menor que 10.0, é porque é 10.0 cravado, então exibimos a mensagem de aprovação com distinção.

    nota1 = float(input('Primeira nota: '))
    nota2 = float(input('Segunda nota: '))

    media = (nota1 + nota2) / 2

    print('Media: ',media)
    
    if media<7.0:
        print('Reprovado')
    elif media<10:
        print('Aprovado')
    else:
        print('Aprovado com Distinção!')




Python: Programa que diz se é vogal ou consoante

"Faça um Programa que verifique se uma letra digitada é vogal ou consoante."


Código comentado em Python

Primeiro, pedimos um caractere ao usuário e guardamos na variável 'caractere'.

O normal agora seria comparamos se é uma vogal 'a', 'e', 'i', 'o' ou 'u' ou não.
Nós vamos fazer isso sim, porém tem uma pegadinha aí.

Em programação, uma letra minúscula é diferente da sua maiúscula.
Logo, além das vogais que citamos, temos que comparar com 'A', 'E', 'I', 'O' e 'U' também.

Nosso código fica:

    char=input('Digite um caractere: ')

    if char=='a' or char=='e' or char=='i' or char=='o' or char=='u' or \
       char=='A' or char=='E' or char=='I' or char=='O' or char=='U':
           print('Vogal')
    else:
           print('Consoante')


Para um if não ficar muito grande, com muitas condições, quebramos ele em duas linhas. Para isso, basta usar uma barra \ , como fizemos no código.



Exercícios em Python: IF, ELIF e ELSE

1. Faça um Programa que verifique se uma letra digitada é vogal ou consoante.
Código comentado



2. Faça um programa que pede duas notas de um aluno. Em seguida ele deve calcular a média do aluno e dar o seguinte resultado:

    A mensagem "Aprovado", se a média alcançada for maior ou igual a sete;
    A mensagem "Reprovado", se a média for menor do que sete;
    A mensagem "Aprovado com Distinção", se a média for igual a dez.
Exercício resolvido


3. Faça um Programa que leia três números inteiros e mostre o maior deles.
Questão resolvida


4. Faça um Programa que leia três números inteiros, em seguida mostre o maior e o menor deles.
Código comentado



5. Faça um programa que pede dois inteiro e armazene em duas variáveis. Em seguida, troque o valor das variáveis e exiba na tela
Trocar (inverter) valores de duas variáveis


6. Faça um Programa que leia três números e mostre-os em ordem decrescente.
Três números em ordem decrescente


7. Faça um Programa que pergunte em que turno você estuda. Peça para digitar M-matutino ou V-Vespertino ou N- Noturno. Imprima a mensagem "Bom Dia!", "Boa Tarde!" ou "Boa Noite!" ou "Valor Inválido!", conforme o caso.


8. As Organizações Tabajara resolveram dar um aumento de salário aos seus colaboradores e lhe contrataram para desenvolver o programa que calculará os reajustes.

Faça um programa que recebe o salário de um colaborador e o reajuste segundo o seguinte critério, baseado no salário atual:

    salários até R$ 280,00 (incluindo) : aumento de 20%
    salários entre R$ 280,00 e R$ 700,00 : aumento de 15%
    salários entre R$ 700,00 e R$ 1500,00 : aumento de 10%
    salários de R$ 1500,00 em diante : aumento de 5% Após o aumento ser realizado, informe na tela:
    o salário antes do reajuste;
    o percentual de aumento aplicado;
    o valor do aumento;
    o novo salário, após o aumento.
Código comentado



9. Faça um programa para o cálculo de uma folha de pagamento, sabendo que os descontos são do Imposto de Renda, que depende do salário bruto (conforme tabela abaixo) e 3% para o Sindicato e que o FGTS corresponde a 11% do Salário Bruto, mas não é descontado (é a empresa que deposita). O Salário Líquido corresponde ao Salário Bruto menos os descontos. O programa deverá pedir ao usuário o valor da sua hora e a quantidade de horas trabalhadas no mês.

    Desconto do IR:
    Salário Bruto até 900 (inclusive) - isento
    Salário Bruto até 1500 (inclusive) - desconto de 5%
    Salário Bruto até 2500 (inclusive) - desconto de 10%
    Salário Bruto acima de 2500 - desconto de 20% Imprima na tela as informações, dispostas conforme o exemplo abaixo. No exemplo o valor da hora é 5 e a quantidade de hora é 220.

    Salário Bruto: (5 * 220)        : R$ 1100,00
    (-) IR (5%)                                : R$   55,00 
    (-) INSS ( 10%)                       : R$  110,00
    FGTS (11%)                            : R$  121,00
    Total de descontos                : R$  165,00
    Salário Liquido                       : R$  935,00


10. Faça um Programa que leia um número e exiba o dia correspondente da semana. (1-Domingo, 2- Segunda, etc.), se digitar outro valor deve aparecer valor inválido.


11.Faça um programa que lê as duas notas parciais obtidas por um aluno numa disciplina ao longo de um semestre, e calcule a sua média. A atribuição de conceitos obedece à tabela abaixo:

      Média de Aproveitamento  Conceito
      Entre 9.0 e 10.0                      A
      Entre 7.5 e 9.0                        B
      Entre 6.0 e 7.5                        C
      Entre 4.0 e 6.0                        D
      Entre 4.0 e zero                      E
    O algoritmo deve mostrar na tela as notas, a média, o conceito correspondente e a mensagem “APROVADO” se o conceito for A, B ou C ou “REPROVADO” se o conceito for D ou E.

12. Faça um Programa que peça os 3 lados de um triângulo. O programa deverá informar se os valores podem ser um triângulo. Indique, caso os lados formem um triângulo, se o mesmo é: equilátero, isósceles ou escaleno.

    Dicas:
    Três lados formam um triângulo quando a soma de quaisquer dois lados for maior que o terceiro;
    Triângulo Equilátero: três lados iguais;
    Triângulo Isósceles: quaisquer dois lados iguais;
    Triângulo Escaleno: três lados diferentes;
    Código comentado: Triângulos em Python


13. Faça um programa que calcule as raízes de uma equação do segundo grau, na forma ax² + bx + c. O programa deverá pedir os valores de a, b e c e fazer as consistências, informando ao usuário nas seguintes situações:

    Se o usuário informar o valor de A igual a zero, a equação não é do segundo grau e o programa não deve fazer pedir os demais valores, sendo encerrado;
    Se o delta calculado for negativo, a equação não possui raizes reais. Informe ao usuário e encerre o programa;
    Se o delta calculado for igual a zero a equação possui apenas uma raiz real; informe-a ao usuário;
    Se o delta for positivo, a equação possui duas raiz reais; informe-as ao usuário;

PS: digite 'import math' no início de seu script. Para achar a raiz quadrada da variável x, faça: math.sqrt(x)
Código comentado das raízes de uma equação do segundo grau


14. Faça um Programa que peça um número correspondente a um determinado ano e em seguida informe se este ano é ou não bissexto.
Achar ano bissexto


15. Faça um Programa que peça uma data no formato dd/mm/aaaa e determine se a mesma é uma data válida.
Validação de data em Python


16. Faça um Programa que peça um número inteiro e determine se ele é par ou ímpar. Dica: utilize o operador módulo (resto da divisão): %
Par ou Ímpar em Python


17. Faça um Programa que leia um número inteiro menor que 1000 e imprima a quantidade de centenas, dezenas e unidades do mesmo.
Observando os termos no plural a colocação do "e", da vírgula entre outros. Exemplo:

326 = 3 centenas, 2 dezenas e 6 unidades
12 = 1 dezena e 2 unidades Testar com: 326, 300, 100, 320, 310,305, 301, 101, 311, 111, 25, 20, 10, 21, 11, 1, 7 e 16
Achar unidade, dezena, centena...de um número em Python


18. Faça um Programa para um caixa eletrônico. O programa deverá perguntar ao usuário a valor do saque e depois informar quantas notas de cada valor serão fornecidas. As notas disponíveis serão as de 1, 5, 10, 50 e 100 reais. O valor mínimo é de 10 reais e o máximo de 600 reais. O programa não deve se preocupar com a quantidade de notas existentes na máquina.

    Exemplo 1: Para sacar a quantia de 256 reais, o programa fornece duas notas de 100, uma nota de 50, uma nota de 5 e uma nota de 1;
    Exemplo 2: Para sacar a quantia de 399 reais, o programa fornece três notas de 100, uma nota de 50, quatro notas de 10, uma nota de 5 e quatro notas de 1.
Contagem de cédulas de um caixa eletrônico

19.Faça um Programa que peça um número e informe se o número é inteiro ou decimal. Dica: utilize uma função de arredondamento.
Arredondar números em Python

20. Faça um Programa que leia 2 números e em seguida pergunte ao usuário qual operação ele deseja realizar. O resultado da operação deve ser acompanhado de uma frase que diga se o número é:

    par ou ímpar;
    positivo ou negativo;
    inteiro ou decimal.


21. Faça um programa que faça 5 perguntas para uma pessoa sobre um crime. As perguntas são:
    "Telefonou para a vítima?"
    "Esteve no local do crime?"
    "Mora perto da vítima?"
    "Devia para a vítima?"
    "Já trabalhou com a vítima?" O programa deve no final emitir uma classificação sobre a participação da pessoa no crime. Se a pessoa responder positivamente a 2 questões ela deve ser classificada como "Suspeita", entre 3 e 4 como "Cúmplice" e 5 como "Assassino". Caso contrário, ele será classificado como "Inocente".


22. Um posto está vendendo combustíveis com a seguinte tabela de descontos:
    Álcool: até 20 litros, desconto de 3% por litro
    acima de 20 litros, desconto de 5% por litro

    Gasolina:
    até 20 litros, desconto de 4% por litro
    acima de 20 litros, desconto de 6% por litro Escreva um algoritmo que leia o número de litros vendidos, o tipo de combustível (codificado da seguinte forma: A-álcool, G-gasolina), calcule e imprima o valor a ser pago pelo cliente sabendo-se que o preço do litro da gasolina é R$ 2,50 o preço do litro do álcool é R$ 1,90.


23. Uma fruteira está vendendo frutas com a seguinte tabela de preços:
                          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 em frutas ou o valor total da compra ultrapassar R$ 25,00, receberá ainda um desconto de 10% sobre este total. Escreva um algoritmo para ler a quantidade (em Kg) de morangos e a quantidade (em Kg) de maças adquiridas e escreva o valor a ser pago pelo cliente.


24. O Hipermercado Tabajara está com uma promoção de carnes que é imperdível. Confira:
                          Até 5 Kg               Acima de 5 Kg
    File Duplo      R$ 4,90 por Kg          R$ 5,80 por Kg
    Alcatra           R$ 5,90 por Kg          R$ 6,80 por Kg
    Picanha          R$ 6,90 por Kg          R$ 7,80 por Kg
    Para atender a todos os clientes, cada cliente poderá levar apenas um dos tipos de carne da promoção, porém não há limites para a quantidade de carne por cliente. Se compra for feita no cartão Tabajara o cliente receberá ainda um desconto de 5% sobre o total a compra. Escreva um programa que peça o tipo e a quantidade de carne comprada pelo usuário e gere um cupom fiscal, contendo as informações da compra: tipo e quantidade de carne, preço total, tipo de pagamento, valor do desconto e valor a pagar.

Operadores Lógicos - AND, OR e NOT

Até o momento, em nossos testes condicionais, fizemos apenas um teste em cada instrução IF.

Porém, é possível fazermos vários testes, em uma mesma instrução IF, tudo de uma vez. Mas para isso precisamos usar os operadores lógicos: and, or e o not.

São bem simples e fáceis de entender.
Vamos estudar eles agora!



Operador AND em Python

Se eu disser pra você que: para ser um bom programador Python você deve estudar bastante teoria e fazer exercícios. O que você faria para ser um bom programador Python?

Estudaria muita teoria ou faria muita exercícios? Ou os dois?
O segredo está no "... e ..."

Ou seja, você precisa fazer OS DOIS, se fizer apenas estudar teoria ou só resolver exercícios, não vai ser um bom programador. Tem que fazer OS DOIS!

O e é o operador and, em Python.
Seja o seguinte teste:

teste condição1 and  condição2

O teste vai retornar TRUE somente se as DUAS condições forem TRUE!
Se uma delas for falsa, já era, o retorno é falso.
Pode colocar 1 milhão de condições, se usar and:

teste condição1 and condição2 and condição3 and condição4....and condição1000000

Só vai retornar verdadeiro se TODAS as condições forem verdadeiras!
Se uma delas for falsa, fodeu a porra toda...o resultado é falso.




Exemplo de uso do operador and

Para votar, você deve ter entre 18 anos e menos de 65 anos.
Escreva um programa que pergunte sua idade e diga se você é obrigado a votar ou não.

Temos dois testes:
  1. Testar se tem 18 anos ou mais
  2. Testar se tem 65 ou menos

Para votar, cada um dos testes deve ser TRUE.
O nosso código fica:

resposta=int( input('Qual sua idade: ') )

if resposta>=18 and resposta <=65:
    print('Você é obrigado a votar!')
else:
    print('Você não é obrigado a votar')


Rode o código e faça um teste.
Veja que para o IF ter resultado verdadeiro, ambas as condições devem ser verdadeiras: tanto deve ter 18 anos ou mais E DEVE ter 65 anos ou menos.

Essa é a característica do operador and.
Todos os testes devem ser true, para o resultado ser true.
Se um deles for false, o resultado é falso.




Operador OR em Python

Para ter acesso a fila de prioridade, você deve ser idoso, gestante ou cadeirante. Escreva um programa que pergunta a situação do usuário (se é idoso, se é gestante, se é cadeirante ou nenhum destes) e diga se ele pode ter acesso a fila prioridade ou não.

Para o usuário ter acesso a fila de prioridade, ele deve ser idoso OU gestante OU cadeirante. Qualquer um desses. Basta que uma dessas condições seja verdadeira, para o teste condicional ser verdadeiro.

Para fazermos isso, devemos usar o operador or (ou em português), cujo modelos é o seguinte:

if condição1 or condição2 or condição3 or ... :
   [código]   # Caso qualquer condição seja verdadeira
   [código]   # Esse código vai ser executado
else:

   [código]   # Caso todas as condições sejam falsas
   [código]   # esse código vai ser executado

A solução do programa do idoso, gestante ou cadeirante, é:

print('1. Idoso')
print('2. Gestante')
print('3. Cadeirante')
print('4. Nenhum destes')
resposta=int( input('Você é: ') )

if (resposta==1) or (resposta==2) or (resposta==3) :
    print('Você tem direito a fila prioritária')
else:
    print('Você não tem direito a nada. Vá pra fila e fique quieto')


Note que fizemos três testes:
  • Se é idoso (resposta==1)
  • Se é gestante  (resposta==2)
  • Se é cadeirante (resposta==3)

Se qualquer um deles for verdade, esse if vai ser verdade, pois usamos o operador lógico or (OU). Pra ser prioridade, OU você tem que ser idoso, OU tem que ser gestante OU tem que ser cadeirante.

Não precisa ser os três, basta um deles ser verdade, que o teste retorna verdade. Faz sentido pra você?

Operador NOT em Python

O operador not em Python é o mais simples.
Ele ele pega a expressão e reverte ela.

Se era uma condição TRUE, ela vira FALSE.
Se algo era FALSE, ela vira TRUE.
Basta colocar not antes.

Por exemplo, vamos criar um script que pergunta qual a melhor banda do universo, para o usuário.

Se ele não digitar 'rush', chama o usuário de herege.
Se digitar, ok, parabeniza. Veja:

banda = input('Qual melhor banda do mundo? ')

if not banda=='rush':
    print('Herege!')
else:
    print('Correto, é o Rush!')

Tabela Verdade: Operador AND

Condição A    Condição B    AND (A.B)
True                 True              True
True                 False             False
False                True              False
False                False             False


Tabela Verdade: Operador OR

Condição A    Condição B    OR (A + B)
True                 True              True
True                 False             True
False                True              True
False                False             False

Tabela Verdade: Operador NOT

Condição A    NOT ( ~A)
True                 False
False                True