Error in def function

Asked

Viewed 97 times

-3

How can I calculate salary value with number of hours above 40 as defined in the if, I try to run with 41 hours but gives me this error

salario = float(40*valor_hora+(h_excd*(1.5*valor_hora)))#valor salario com horas extras

TypeError: can't multiply sequence by non-int of type 'float'

My code is this::

def calcular_pagamento(qtd_horas, valor_hora): # função calcular o pagamento de salário
    horas = float(qtd_horas) #converte string para float e é a variável de horas que pode ser float
    valorhora = float(valor_hora) #converte string para float e é a variavel do valor hora que pode ser float
    if horas <= 40:
        salario=horas*valorhora#valor salario sem horas extras
    else:
        h_excd = float(horas - 40) #calculo horas extras
        salario = float(40*valor_hora+(h_excd*(1.5*valor_hora))) #valor salario com horas extras
    return salario # retorna o valor de salário

n_horas= input('Digite numero de horas: ') # string numero de horas
n_valor_hora=input('Digite valor hora: ') #string valor hora
total_salario = calcular_pagamento(n_horas,n_valor_hora) # vai buscar o valor de retorno da função 
print('O valor do salário é:',total_salario,"€") # dá o valor de salário
  • 1

    It’s exactly the same problem your other question: you are trying to multiply things that are not numbers. It is probably the variable valor_hora, since you convert to float, but saved in valorhora, not even using this variable. Pay more attention when writing the code, please.

  • 2

    Possible duplicate of Try and except block

1 answer

2


You must change the line:

salario = float(40*valor_hora+(h_excd*(1.5*valor_hora)))

for:

salario = float(40*valorhora+(h_excd*(1.5*valorhora)))

You converted the variable valor_hora(string) for float and called it valorhora just forgot to use

Browser other questions tagged

You are not signed in. Login or sign up in order to post.