msmsms Posted October 12, 2013 at 10:10 PM Report #528693 Posted October 12, 2013 at 10:10 PM criei uma função e fiz uma nova função para repetir a inicial atraves de um loop for mas quando faço a repetição com a função criada para o efeito apenas os inputs são repetidos x vezes e nunca os resultados de return quero saber pork isto acontece grato desde ja # sendo colocado 0 como paramentro formal (genero) é determinado o pedo ideal para o homem # sendo colocado 1 é determinado o peso ideal para a mulher # sendo colocado qualquer outro valor (número) é retornada uma string de alerta def peso_ideal(): altura = eval(input('altura: ')) # eval() garante que o input será um número genero = eval(input('genero 0/1: ')) # eval() garante que o input será um número if genero == 0: return (72.7*altura)-58 elif genero == 1: return (62.1*altura)-44.7 else: return 'coloque 0 para homem ou 1 para mulher' def repetir(numero_vezes): for i in range(numero_vezes): peso_ideal()
KTachyon Posted October 12, 2013 at 10:30 PM Report #528695 Posted October 12, 2013 at 10:30 PM Não os estás a imprimir, estás a retornar. “There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.” -- Tony Hoare
thoga31 Posted October 12, 2013 at 11:57 PM Report #528702 Posted October 12, 2013 at 11:57 PM (edited) Outra coisa. Não uses eval, pode ser perigoso uma vez que ele executa código Python. Usa int: altura = int(input("Altura? ")) Mais, recomendo que o input do género seja feita numa estrutura de repetição. Se eu não inserir 0 ou 1, nada acontece a não ser um aviso. Se o ciclo for de 10 iterações e falhar o input de todas, nunca obterei o peso ideal. while genero not in [0, 1]: # input Edited October 13, 2013 at 12:00 AM by thoga31 Knowledge is free!
msmsms Posted October 13, 2013 at 12:42 AM Author Report #528707 Posted October 13, 2013 at 12:42 AM (edited) Não os estás a imprimir, estás a retornar. eu tentei fazer pint da função como deixo em baixo mas dá erro? como se faz o print para este caso? def repetir(numero_vezes): for i in range(numero_vezes): print peso_ideal() eu estou a usar python versao 3 quando eu faço no python 2: print 'abc'' obtenho a cadeia abc na consola quando o faço no python 3 obtenho um erro logo deve haver alguma coisa de diferente no print Edited October 13, 2013 at 12:47 AM by msmsms
msmsms Posted October 13, 2013 at 12:58 AM Author Report #528708 Posted October 13, 2013 at 12:58 AM (edited) já consegui descobrir porque não dava tenho de colocar parenteces ( ) no print em python 3, era por isso # sendo colocado 0 como paramentro formal (genero) é determinado o pedo ideal para o homem # sendo colocado 1 é determinado o peso ideal para a mulher # sendo colocado qualquer outro valor (número) é retornada uma string de alerta def peso_ideal(): altura = float(input('altura: ')) # float() garante que o input será um número com virgula genero = int(input('genero 0/1: ')) # int () garante que o input será um número inteiro if genero == 0: return (72.7*altura)-58 elif genero == 1: return (62.1*altura)-44.7 else: return 'coloque 0 para homem ou 1 para mulher' def repetir(numero_vezes): for i in range(numero_vezes): print (peso_ideal()) # como é python 3 tem de levar parentices aqui Edited October 13, 2013 at 01:01 AM by msmsms
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now