Ir ao conteúdo

Posts recomendados

Postado

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.

 

Postado

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

 

 

 É 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 ! ! !

  • Curtir 1
Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...