Necesito imprimir el resultado de 'x / y' pero siempre devuelve '0'. Cuando imprimo 'x' me dice eso correctamente, cuando imprimo 'y' me dice eso correctamente pero cuando imprimo 'x / y' dice 0.
Aquí está mi código:
import random
y = 0
x = 0
p = 1
while True:
i = [random.randint(1,100), random.randint(1,100), random.randint(1,100), random.randint(1,100), random.randint(1,100)]
if len(set(i)) < len(i):
print "Match!"
x += 1
y += 1
print(x/y)
else:
print "No Match!"
y += 1
print y
Como dije, imprime y
bien cuando se supone que debe hacerlo, pero en el caso de que necesite imprimir x/y
imprime 0
. También he intentado imprimir x/y
e imprimir x//y
pero tampoco funcionan.
¿Qué estoy haciendo mal?
Gracias de antemano
4 respuestas
Si x e y son ambos enteros, Python siempre hace una división entera. Entonces, si el resultado es 0.algo, Python mostrará 0.
Debe convertirlos en flotadores si desea hacer la división de flotadores:
print float(x) / float(y)
U Decimal
objetos:
from decimal import Decimal
print Decimal(x) / Decimal(y)
Pensé que podría ser útil señalar la parte de esa PEP que es más relevante aquí:
La solución correcta es sutil: lanzar un argumento para float () está mal si podría ser un número complejo; agregar 0.0 a un argumento no conserva el signo del argumento si era menos cero. La única solución sin ningún inconveniente es multiplicar un argumento (generalmente el primero) por 1.0. Esto deja el valor y el signo sin cambios para flotante y complejo, y convierte int y long en un flotante con el valor correspondiente.
Entonces, puedes hacer:
print 1.0 * x / y
Tratar:
print float(x)/float(y)
La división entera siempre trunca el decimal.
También tenga en cuenta que solo el numerador realmente debe ser flotante, pero es mejor ser explícito sobre lo que está haciendo.
Haga esto
from __future__ import division
Lee esto
http://www.python.org/dev/peps/pep-0238/
Preguntas relacionadas
Nuevas preguntas
python
Python es un lenguaje de programación multipropósito, de tipificación dinámica y de múltiples paradigmas. Está diseñado para ser rápido de aprender, comprender y usar, y hacer cumplir una sintaxis limpia y uniforme. Tenga en cuenta que Python 2 está oficialmente fuera de soporte a partir del 01-01-2020. Aún así, para preguntas de Python específicas de la versión, agregue la etiqueta [python-2.7] o [python-3.x]. Cuando utilice una variante de Python (por ejemplo, Jython, PyPy) o una biblioteca (por ejemplo, Pandas y NumPy), inclúyala en las etiquetas.