Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Duvida exercicio python

Boa noite pessoal, segue um exercicio bem simples de python, mas o resultado esta retornando none, por gentileza da uma olhada ai. obrigado

#definicao da funcao
def calculaPrecoFinal(codigo, preco):
    if(codigo == 00):
        desconto = preco * 0.10
        return desconto

#parte principal do programa
codigo = raw_input('Digite o codigo do pruduto: ')
preco = raw_input("Digite o preco do produto")
total = calculaPrecoFinal(codigo, preco)

print total
4 respostas
solução!

Julian

Qual é o código que esta digitando?

Se for o 0 entrará no if e será calculado o desconto. Outro ponto somente haverá uma resposta da função se o código for 0. Outro ponto é que o raw_input recebe um valor string/texto e comparar com um numero nem sempre é bom pois dependendo da versão pode ter problemas. Corrija o código assim:

def calculaPrecoFinal(codigo, preco):
    if(codigo == '00'):
        desconto = preco * 0.10
    else: 
        desconto = preco 

  return desconto

#parte principal do programa
print 'Digite o codigo do pruduto: '
codigo = raw_input()
print 'Digite o preco do produto'
preco = raw_input()
total = calculaPrecoFinal(codigo, preco)

print total

Julian, o que acontece é que na sua função você só retorna um valor caso codigo seja igual ao número inteiro 0. O problema é que, do jeito que está, nunca vai ser, porque a função raw_input(), que você está usando para pegar tanto o código como o preço, transforma a entrada do usuário em string automaticamente. Desse modo, 0 != '0'.

Você pode apenas transformar seus valores recebidos do usuário para floats, alterando duas linhas:

# código omitido
codigo = float(raw_input())
# ...
preco = float(raw_input())

A solução do Marcos resolveria a questão de comparar a string com o número inteiro, mas ainda traria uma exceção ao tentar multplicar um número flutuante com uma string.

Abraços, espero que tenha ajudado!

Yan, verdade existe tambem a questão da multiplicação e isso é necessario fazer a conversão, porem ao inves de converter para int sugiro converter para float a variavel preço.

preco = float(raw_input())

Opa, tem razão, corrigi lá, valeu, Marcos!