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-else
Podemos 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()
float
float()
de conversão de str
para float
/
if
if-else
if-elif-else