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

47 views
Skip to first unread message

Luis Roberto Porto Mendes

unread,
Oct 23, 2017, 7:49:17 AM10/23/17
to Python Brasil


Olá pessoal.
Estou enfrentando um problema chato que é não conseguir calcular os 10% do garçom em um programa.
Procurei algumas respostas em alguns sites, mas não fui feliz.
Segue a parte do programa onde faço as chamadas das variáveis e os cálculos:
---------------------------------------------------------------
def comanda():
 x
= random.randint(100, 1000)
 randomComanda
= str(x)
 rand
.set(randomComanda)

 cfritas
= float(fritas.get())
 chdog
= float(hdog.get())
 ccfile
= float(cfile.get())
 cxfrango
= float(xfrango.get())
 cxburger
= float(xburger.get())
 cbebida
= float(bebida.get())
 ccover
= float(cover.get())

 prcfritas
= cfritas * 15.00
 prchdog
= chdog * 17.00
 prcfile
= ccfile * 45.00
 prcxfrango
= cxfrango * 25.00
 prcxburger
= cxburger * 28.00
 prcbebida
= cbebida * 8.00
 prccover
= ccover * 8.00

 prcrefeicao
= 'R$', str('%.2f' % (prcfritas + prchdog + prcfile
 
+ prcxfrango + prcxburger + prcbebida))
 vlrtaxa
= (prcrefeicao * 0.10)

 vlrstotal
= (prcrefeicao + prccover)

 vlrtotal
= (vlrstotal + vlrtaxa)

 
Cover = 'R$', str('%.2f' % prccover)

 
Taxa = 'R$', str('%.2f' % vlrtaxa)

 
Vstotal ='R$', str('%.2f' % vlrstotal)

 
Vtotal ='R$', str('%.2f' % vlrstotal + vlrtaxa)

 taxa
.set(Taxa)
 custo
.set(prcrefeicao)
 cover
.set(Cover)
 stotal
.set(Vstotal)
 total
.set(Vtotal)


-----------------------------------------------------------
O erro gerado é:
C:\Python34\python.exe "C:/Users/lporto/Desktop/Lendo agora/Construindo Systema.py"
Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Python34\lib\tkinter\__init__.py", line 1482, in __call__
    return self.func(*args)
  File "C:/Users/lporto/Desktop/Lendo agora/Construindo Systema.py", line 70, in comanda
    vlrtaxa = (prcrefeicao * 0.10)
TypeError: can't multiply sequence by non-int of type 'float'
---------------------------------------------------------------------------------------------------------
Agradeço desde já a atenção
A

Eduardo Klosowski

unread,
Oct 23, 2017, 8:01:50 AM10/23/17
to python...@googlegroups.com
Oi,

Nessa linha:

prcrefeicao = 'R$', str('%.2f' % (prcfritas + prchdog + prcfile +
prcxfrango + prcxburger + prcbebida))

A virgula, em vez de concatenar as strings (juntar duas em uma só), está
transformando a expressão numa tupla, que é um tipo diferente. Porém de
qualquer forma, você não vai consegui multiplicar uma string ou uma
tupla por 0,10.

O mais correto neste caso é manter as variáveis como valores numéricos,
assim você poderá fazer as operações com problemas, convertendo para
texto (adicionar o R$ e depois coisas) apenas na hora de exibir esses dados.

Blog: https://eduardoklosowski.wordpress.com/
GitLab: https://gitlab.com/u/eduardoklosowski/
GitHub: https://github.com/eduardoklosowski/
> --
> --
> ------------------------------------
> Grupo Python-Brasil
> http://www.python.org.br/wiki/AntesDePerguntar
>
> <*> Para visitar o site do grupo na web, acesse:
> http://groups.google.com/group/python-brasil
>
> <*> Para sair deste grupo, envie um e-mail para:
> python-brasi...@googlegroups.com
>
> ---
> Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil"
> dos Grupos do Google.
> Para cancelar inscrição nesse grupo e parar de receber e-mails dele,
> envie um e-mail para python-brasi...@googlegroups.com
> <mailto:python-brasi...@googlegroups.com>.
> Para mais opções, acesse https://groups.google.com/d/optout.
Reply all
Reply to author
Forward
0 new messages