Jump to content
Fórum Script Brasil
  • 0

Função Phyton


Gerivan Jose
 Share

Question

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 to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 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))
 

 

Edited by wootzor
Link to comment
Share on other 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 ! ! !

Edited by Felipe222
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Forum Statistics

    • Total Topics
      149.6k
    • Total Posts
      646.2k
×
×
  • Create New...