As I have already mentioned, the correct thing is to represent these floating values with a% point of% and not a comma% with% . See here for the problems and limitations of floating values in Python.
Your code should look like this:
t = int(input("Digite a quantidade de minutos gasta: "))
if t < 200:
p = t * 0.2
if t >= 200 and t < 400:
p = t * 0.18
if t >= 400:
p = t * 0.15
print ("O preco da ligacao foi de %.2f reais." % p)
# Ou com a funcao format()
print ("O preco da ligacao foi de {0:.2f} reais".format(p))
DEMO
Depending on the location factor, decimal separator may be different, rather than a % dot% can be a comma .
. To obtain this information you can use the ,
function of the .
with the ,
.
import locale
print (locale.nl_langinfo(locale.RADIXCHAR))
If you need to calculate the values having as decimal separator a nl_langinfo
you can use the locale
to convert a string to a floating value. Here's a demo:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import locale
# Em pt_BR vai o separador decimal é "."
print (locale.nl_langinfo(locale.RADIXCHAR))
# Mudamos o locale para Inglês - Dinamarca
locale.setlocale(locale.LC_ALL, 'en_DK.utf8')
# Em en_DK o separador decimal é ","
print (locale.nl_langinfo(locale.RADIXCHAR))
t = int(input("Digite a quantidade de minutos gasta: "))
if t < 200:
p = t * locale.atof("0,2")
if t >= 200 and t < 400:
p = t * locale.atof("0,18")
if t >= 400:
p = t * locale.atof("0,15")
print ("O preco da ligação foi de %.2f reais." % p)
# Ou com a função format()
print ("O preco da ligacao foi de {0:.2f} reais".format(p))