Gerivan Jose Postado Janeiro 9, 2016 Denunciar Share Postado Janeiro 9, 2016 Olá, alguém sabe porquê não consigo chamar essa função? def hotel(dias): return 140 * dias dias = print(str(input("Digite o número de dias no hotel"))) print(hotel(dias)) Dá isso: TypeError: unsupported operand type(s) for *: 'int' and 'NoneType' Mas se eu defino o número de dias dá certo: def hotel(dias): return 140 * dias dias = 3 print(hotel(dias)) Ainda que funcione assim preciso receber o número de dias do usuário. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 wootzor Postado Janeiro 9, 2016 Denunciar Share Postado Janeiro 9, 2016 (editado) Suponho que a utilização do print na atribuição do valor à variável dias tenha sido involuntária. Certo? Para além disso, não faz sentido estar a converter o número de dias numa string. Assim funcionou perfeitamente: def hotel(dias): return 140 * dias dias = input("Digite o número de dias no hotel: ") print(hotel(dias)) Editado Janeiro 9, 2016 por wootzor Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Felipe222 Postado Janeiro 9, 2016 Denunciar Share Postado Janeiro 9, 2016 (editado) Olá! Olha sou inciante em programação, e principalmente em Python, então muito provavelmente vou dizer algo errado . . . Já me aconteceu algo parecido a algumas semanas, pela busca que fiz, o erro: unsupported operand type(s) for *: 'int' and 'NoneType' Parece estar sendo causado pelo uso da função print() na variável ( dias ), o que acho que esta acontecendo é que: - você declara uma variável chamada dias, e atribui a ela o seguinte comando: print ( str ( input ( "Digite o número de dias no hotel" ) ) ) - primeiro, essa linha vai fazer é chamar a função input(), para receber um valor introduzido pelo teclado, neste caso do tipo string, sendo assim o tipo da variável dias, assim que ela receber o valor de retorno da função input() vai ser do tipo string - segundo, ao vai ser receber o valor de retorno da função int(), a qual foi usada para converter o valor de string para o tipo inteiro, nesse momento o tipo da variável dias vai mudar do tipo ( string ) para o tipo ( int ) - terceiro e ultimo, a variável dias vai receber o valor de retorno da função print(), e esse é o seu problema, a função print() é uma função que não retorna nenhum valor, ou seja ela é um objeto cujo tipo é ( NoneType ), sendo assim neste momento o tipo da variável dias vai mudar do tipo ( inteiro ) para o tipo ( NoneType ), que não possui nenhum valor e é isso que que está causando a mensagem de erro: pois, quando você chama a sua função hotel(), passa para ela o valor da variável (dias) que tem como valor ( NoneType ), isso é completamente permitido, pela sintaxe da linguagem Python, mas quando você esta tenta realizar a operação de multiplicação, entre um valor inteiro e um valor do tipo NoneType, é retornado um erro pela tentativa de realizar uma operação que não é permitida ( suportada ) Ate onde pude estudar de Python você só precisa, mudar a linha para: dias = int ( input ( "Digite o número de dias no hotel" ) ) - alias você usou str() para a conversão, quando o apropriado seria int(), digo apropriado, pois, ela ate é passada corretamente para a sua função, mas quando o valor fosse ser exibido, o numero 3 seria impresso 140 vezes, isso é uma característica de Python, por isso o apropriado seria o valor ser do tipo int Bom por hora é só . . . Veja se as dicas acima lhe ajudam . . . Ubuntu 14.04 Python 3.4.3 Espero Ter Ajudado ! ! ! Editado Janeiro 9, 2016 por Felipe222 Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Gerivan Jose
Olá, alguém sabe porquê não consigo chamar essa função?
Dá isso: TypeError: unsupported operand type(s) for *: 'int' and 'NoneType'
Mas se eu defino o número de dias dá certo:
Ainda que funcione assim preciso receber o número de dias do usuário.
Link para o comentário
Compartilhar em outros sites
2 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.