Estava tentando resolver o exercício 13 do Python.org.br, mas encontrei um erro (dois na verdade).
Cheguei no seguinte código:
# -*- coding: utf-8 -*-
altura = float(raw_input("Digite sua altura: "))
sexo = raw_input("Digite seu sexo [M/F]: ").capitalize()
peso = float(raw_input("Digite seu peso: "))
def classificacao_peso(real, ideal):
if real < ideal:
return "Peso abaixo do ideal!"
elif real == ideal:
return "Seu peso está ideal!"
elif real > ideal:
return "Peso acima do ideal!"
if sexo != "M" and sexo != "F" and not sexo.strip():
print "Digite uma opção válida!"
elif sexo == "M":
ideal = (72.7 * altura) - 58
print "Peso ideal masculino: ", ideal
print classificacao_peso(peso, ideal)
elif sexo == "F":
ideal = (62.1 * altura) - 44.7
print "Peso ideal feminino: ", ideal
print classificacao_peso(peso, ideal)
Primeiro que eu não sabia que a função tinha que ser definida antes da primeira chamada em Python, perdi um tempo nisso hehehhe
Mas o erro é o seguinte: na função que eu defini, não consigo fazer com que passe pelo 1º elif (elif real == ideal:). Imagino que tenha algo haver com os números de ponto flutuante. Penso que como usei a instrução print, o Python está exibindo o valor amigável da variável ideal, mas esse variável na verdade tem outro valor "não amigável". Só que eu não estou sabendo como limitar as casas decimais na hora que eu atribui à variável ideal... Ou seja:
Digite sua altura: 1.80
Digite seu sexo [M/F]: M
Digite seu peso: 72.86
Peso ideal masculino: 72.86
Peso abaixo do ideal!
Um outro problema que estou tendo é em relação ao primeiro if (no escopo global). Aparentemente a única expressão que está sendo lida é a not sexo.strip(). Pois se eu digitar no campos sexo "whatever", ele não exibe a mensagem de erro:
Digite sua altura: 1.80
Digite seu sexo [M/F]: whatever
Digite seu peso: 180
Se alguém puder me ajudar!
Bom final de anos para todos!
-----------------------------------
Fiz uma modificação, não sei qual a melhor, mas ainda não funciona:
# -*- coding: utf-8 -*-
def classificacao_peso(real, ideal):
if real < ideal:
return "Peso abaixo do ideal!"
elif real == ideal:
return "Seu peso está ideal!"
elif real > ideal:
return "Peso acima do ideal!"
sexo = raw_input("Digite seu sexo [M/F]: ").capitalize()
if sexo != "M" and sexo != "F" and not sexo.strip():
print "Digite uma opção válida!"
else:
altura = float(raw_input("Digite sua altura: "))
peso = float(raw_input("Digite seu peso: "))
if sexo == "M":
ideal = (72.7 * altura) - 58
print "Peso ideal masculino: ", ideal
print classificacao_peso(peso, ideal)
elif sexo == "F":
ideal = (62.1 * altura) - 44.7
print "Peso ideal feminino: ", ideal
print classificacao_peso(peso, ideal)
Pergunta
Guilherme Web
Olá, amigos!
Sou novo no fórum, assim como no Python!
Estava tentando resolver o exercício 13 do Python.org.br, mas encontrei um erro (dois na verdade).
Cheguei no seguinte código:
Primeiro que eu não sabia que a função tinha que ser definida antes da primeira chamada em Python, perdi um tempo nisso hehehhe Mas o erro é o seguinte: na função que eu defini, não consigo fazer com que passe pelo 1º elif (elif real == ideal:). Imagino que tenha algo haver com os números de ponto flutuante. Penso que como usei a instrução print, o Python está exibindo o valor amigável da variável ideal, mas esse variável na verdade tem outro valor "não amigável". Só que eu não estou sabendo como limitar as casas decimais na hora que eu atribui à variável ideal... Ou seja: Um outro problema que estou tendo é em relação ao primeiro if (no escopo global). Aparentemente a única expressão que está sendo lida é a not sexo.strip(). Pois se eu digitar no campos sexo "whatever", ele não exibe a mensagem de erro: Se alguém puder me ajudar! Bom final de anos para todos! ----------------------------------- Fiz uma modificação, não sei qual a melhor, mas ainda não funciona: Editado por Guilherme WebLink para o comentário
Compartilhar em outros sites
6 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.