Ir para conteúdo
Fórum Script Brasil
  • 0

Função Phyton


Gerivan Jose

Pergunta

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.

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

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 por wootzor
Link para o comentário
Compartilhar em outros sites

  • 0

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 por Felipe222
Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...