sábado, 30 de junio de 2018

Cifras pares e impares en Python

Reto: Cifras pares e impares

Generar un número aleatorio entero entre un millón y dos millones. Imprimir ese número en pantalla y decir cuántas cifras pares e impares tiene.




Método 1

Generamos un número aleatorio entero, lo convertimos a cadena con str, recorremos sus valores con un bucle for y por cada elemento lo convertimos nuevamente en número con int para ver si se trata de un número par. Finalmente contamos los pares e imprimimos el resultado.

from random import randint
x = randint(1000000, 2000001)
print(x)
x=str(x)
par=0
for i in x:
  if int(i)%2==0:
    par+=1
print('Hay un total de',par,'cifras pares')
print('Hay un total de',7-par,'cifras impares')



Método 2

En este caso no convertimos el número aleatorio en una cadena sino que operamos todo el tiempo con valores numéricos. Para obtener las cifras individuales que componen el número que debemos analizar hemos creado una expresión z que por ser muy larga hemos descompuesto en dos expresiones parciales que hemos denominado e0 y e1.

import random
x = random.randint(1000000, 2000001)
print(x)
par=0
for i in range(1,8):
  e0=int(x/10**i)
  e1=int(x/10**(i-1))
  z=e1-e0*10 #obtenemos cada una de las cifras
  if z%2==0:
    par+=1
print('Hay un total de',par,'cifras pares')
print('Hay un total de',7-par,'cifras impares')

Para ilustrar el significado de los cálculos intermedios e0 y e1 elegimos el siguiente ejemplo para el número 1849253. La columna z nos proporciona cada una de la cifras por separado.

2 comentarios:

  1. logre una manera sencilla de resolver esto, la idea es primero pasar el numero entero 'randint' a un 'str', para poder recorrerlo en un bucle 'for'. funciona perfectamente.

    def numbers():
    num = randint(1e6, 2e6)
    num_str= str(num)
    print('el numero es: ', num)

    for i in num_str:
    x = int(i)
    if x % 2 == 0:
    print('el numero: ', x, 'es par')
    else:
    print('el numero: ', x,'es impar')

    numbers()

    ResponderEliminar
  2. Olvide poner los contadores para saber cuantos números pares e impares hay, aquí la solución

    from random import randint

    def numbers():
    num = randint(1e6, 2e6)
    num_str= str(num)
    print('el numero es: ', num)

    count_p = 0
    count_i = 0

    for i in num_str:
    x = int(i)
    if x % 2 == 0:
    print('el numero: ', x, 'es par')
    count_p += 1
    else:
    print('el numero: ', x,'es impar')
    count_i += 1

    print('Hay ', count_p, ' numeros pares')
    print('Hay ', count_i, 'numeros impares')

    numbers()

    ResponderEliminar