float e a função float()Nas últimas aulas, fizemos vários exercícios envolvendo números inteiros. Vimos que o tipo de dados associado a valores que são números inteiros é o int. Nesta aula, exercitaremos o uso de números reais. O tipo de dados em Python associado a números reais é o float (que vem de floating-point).
Podemos expressar um valor do tipo real usando diferentes notações:
a = 0.0003
print("a =", a, ", tipo de a:", type(a))
b = 3e-4
print("b =", b, ", tipo de b:", type(b))
Do mesmo modo que podemos transformar um valor do tipo string para um valor do tipo inteiro usando a função int, também podemos transformar um valor do tipo string para um valor do tipo real usando a função float.
num = float("3.75231")
print("%.2f" %(num)) # '%.2f' se refere a um número real com duas casas depois da vírgula
print(type(num))
num = (float("2"))
print(num, type(num))
/O operador / realiza a divisão de dois números.
O resultado da operação de divisão é sempre um número do tipo float (mesmo quando o quociente não tem casas decimais). Veja os exemplos a seguir:
a = 3 / 4
print(a, type(a))
b = 4 / 2
print(b, type(b))
c = 2.56 / 2
print(c, type(c))
d = 2.56 / 4.35
print(d, type(d))
Agora que já vimos uma porção de operadores matemáticos, é pertinente falar sobre as regras de precedência que regem a ordem de avaliação das operações dentro de uma expressão matemática. Python segue a mesma convenção usada na matemática; a ordem de avaliação dos operadores, do de maior precedência para o de menor precedência, é a seguinte:
( )***, divisão /, divisão inteira // e resto da divisão inteira %, que possuem a mesma precedência+ e subtração -, que possuem a mesma precedênciaUsamos parênteses para forçar que uma expressão seja avaliada em uma determinada ordem desejada. Ex.: 2 * (3-1) = 4, mas 2 * 3 - 1 = 5.
Operadores com a mesma precedência são avaliados da esquerda para a direita. Ex: 10 / 2 * 2 = 10 e 10 / (2 * 2) = 2.5. Mas há uma exceção para essa regra: a exponenciação. Ex: 2**3**2 equivale a 2**(3**2) que é 512; note que isso é diferente de (2**3)**2, que é 64.
Quando você estiver escrevendo uma expressão matemática e ficar na dúvida quanto às regras de precedência dos operadores, então use parênteses para garantir que a ordem de avaliação será correta. Com isso, você evitará possíveis erros.
if-elif-elsePodemos usar comandos if ou if-else de forma aninhada, como mostrado no exemplo a seguir.
def main():
x = int(input("Digite um numero: "))
y = int(input("Digite um numero: "))
if x < y:
print(x, "é menor que", y)
else:
if x > y:
print(x, "é maior que", y)
else:
print(x, "é igual a", y)
#--------
main()
Podemos substituir o uso de um if ou if-else aninhado em um else pelo elif, como mostrado a seguir:
def main():
x = int(input("Digite um numero: "))
y = int(input("Digite um numero: "))
if x < y:
print(x, "é menor que", y)
elif x > y:
print(x, "é maior que", y)
else:
print(x, "é igual a", y)
#--------
main()
É possível termos mais de um elif associado a um if. Além disso, também podemos ter if-elif sem um else.
Em aulas anteriores, vimos que o caracter # marca o início de um comentário de linha em Python, ou seja, tudo que está entre o caractere # e o final da linha será ignorado pelo interpretador.
Veja o exemplo a seguir; nele, o segundo comando de atribuição de valor à variável a é ignorado por estar depois do caracter #.
a = 1
print(a)
#a = a + 1
print(a) # será que o valor de a foi modificado desde o print anterior?
Quando o primeiro # de uma linha aparece dentro de uma string, então ele não será entendido como o início de um comentário de linha
print("Um caracter # dentro de uma string não inicia um comentário!")
Para criar comentários que abrangem mais de uma linha, é mais conveniente usarmos a sequência de caracteres ''' para delimitar o início e o fim do bloco de comentário. Veja o exemplo abaixo:
a = 1
''' Este o início de um comentário em bloco
a = a + 1
A linha acima não modificará o valor da variável a,
por que ela está dentro do bloco de comentário! '''
print(a)
Faça um programa que, dados um número inteiro n, n>0, e n notas de uma turma de MAC2166, determine a média da turma. Por exemplo, para a sequência
6
2.3 7.5 0.5 5.1 8.7 4.9
o seu programa deve escrever:
A média da turma é 4.83
def main():
n = int(input("Digite o número de alunos: "))
n_salvo = n
soma = 0.0
while n > 0:
nota = float(input("Digite uma nota: "))
n = n - 1
soma = soma + nota
print("A média da turma é %.2f " %(soma/n_salvo))
#----------
main()
Dados um número inteiro n, n>0, e uma sequência com n médias de MAC2166, determinar:
1. quantos alunos aprovados (média ≥ 5.0);
2. item 1. + quantos alunos em recuperação (3.0 ≤ média ≤ 5.0);
3. item 2. + quantos alunos reprovados (média < 3.0); e
4. item 3. + quantos alunos excelentes (média ≥ 8.0).
Por exemplo, para a sequência
6
2.3 3.0 5.0 6.5 8.7 4.9
Temos:
3 alunos aprovados
2 alunos em recuperação
1 alunos reprovados
1 alunos excelentes
Solução parcial (item 1)
def main():
n = int(input("Digite o número de alunos: "))
conta_aprovados = 0
while n > 0:
media = float(input("Digite uma média: "))
n = n - 1
if media >= 5.0:
conta_aprovados = conta_aprovados + 1
print("Total de alunos aprovados: ", conta_aprovados)
#----------
main()
Solução parcial (item 2)
def main():
n = int(input("Digite o número de alunos: "))
conta_aprovados = 0
conta_recuperacao = 0
while n > 0:
media = float(input("Digite uma média: "))
n = n - 1
if media >= 5.0:
conta_aprovados = conta_aprovados + 1
elif media >= 3.0:
conta_recuperacao = conta_recuperacao + 1
print("Total de alunos aprovados: ", conta_aprovados)
print("Total de alunos de recuperacao: ", conta_recuperacao)
#----------
main()
Solução parcial (item 3)
def main():
n = int(input("Digite o número de alunos: "))
conta_aprovados = 0
conta_recuperacao = 0
conta_reprovados = 0
while n > 0:
media = float(input("Digite uma média: "))
n = n - 1
if media >= 5.0:
conta_aprovados = conta_aprovados + 1
elif media >= 3.0:
conta_recuperacao = conta_recuperacao + 1
else:
conta_reprovados = conta_reprovados + 1
print("Total de alunos aprovados: ", conta_aprovados)
print("Total de alunos de recuperacao: ", conta_recuperacao)
print("Total de alunos reprovados: ", conta_reprovados)
#----------
main()
Solução parcial (item 4)
def main():
n = int(input("Digite o número de alunos: "))
conta_aprovados = 0
conta_excelentes = 0
conta_recuperacao = 0
conta_reprovados = 0
while n > 0:
media = float(input("Digite uma média: "))
n = n - 1
if media >= 5.0:
conta_aprovados = conta_aprovados + 1
if media >= 8.0:
conta_excelentes = conta_excelentes + 1
elif media >= 3.0:
conta_recuperacao = conta_recuperacao + 1
else:
conta_reprovados = conta_reprovados + 1
print("Total de alunos aprovados: ", conta_aprovados)
print("Total de alunos excelentes: ", conta_excelentes)
print("Total de alunos de recuperacao: ", conta_recuperacao)
print("Total de alunos reprovados: ", conta_reprovados)
#----------
main()
Dizemos que um número inteiro positivo é triangular se ele é o produto de três números inteiros consecutivos. Por exemplo, 120 é triangular, pois 4 × 5 × 6 é igual a 120.
Dado um número inteiro positivo n, verificar se n é triangular.
Obs.: Este problema corresponde ao exercício 10 da lista de exercícios sobre inteiros.
'''
Programa que lê um inteiro positivo n e imprime uma mensagem
indicando se ele é ou não triangular
'''
def main():
print("Determina se um número n é triangular\n")
# leia o valor de n
n = int(input("Digite o valor de n: "))
i = 1
while i * (i+1) * (i+2) < n:
i = i + 1
if i * (i+1) * (i+2) == n:
print("%d é o produto %d*%d*%d" %(n,i,i+1,i+2))
else:
print("%d não é triangular" %(n))
#----------
main()
floatfloat() de conversão de str para float/ifif-elseif-elif-else