sábado, 16 de junio de 2018

Intervalos de números

Reto: Intervalos

Generar un número aleatorio entre 1 y 120. Decir si se encuentra en el intervalo entre 10 y 50, o bien si es mayor de 50 hasta 100, o bien si es mayor de 100, o bien si es menor de 10.



Método 1

Primero importamos la librería random que nos permitirá trabajar con números aleatorios.
Generamos un número aleatorio entero usando random.randrange.
Con una estructura condicional if clasificamos el valor según el intervalo al que pertenece.
La estructura condicional también usa elif que es la abreviatura de 'else if' que podríamos traducir como "y si". Al final tenemos un else que indica "y en caso contrario" para recoger los valores de x que no están en ninguno de los otros intervalos.

import random
x = random.randrange(120)
print('Numero elegido:', x)
if x<10:
  print('El numero es menor de 10')
elif x<50:
  print('El numero esta entre 10-50')
elif x<100:
  print('El numero esta entre 50-100')
else:
  print('El numero es mayor que 100')


Método 2

En este caso trabajamos con listas. Primero generamos una lista. Luego usamos random.choice que nos permite elegir aleatoriamente un valor entre todos los de la lista. Finalmente usamos el mismo condicional que en el caso anterior.


import random
y =list(range(1,121))
x = random.choice (y)
print('Numero elegido:', x)
if (x < 10 ):
 print('El numero es menor de 10')
elif (x <50):
 print('El numero esta entre 10-50')
elif (x <100):
 print('El numero esta entre 50-100')
else:
 print('El numero es mayor que 100')


Método 3

Generamos el número aleatorio con random.randint.
Creamos un diccionario con la variable d, donde la clave son los números del 1, 2, 3, 4 que son los cuatro casos posibles que podemos imprimir. El valor asociado a cada clave es cada una de las cuatro frases que se puede llegar a imprimir.

1:'El número es menor de 10',
2:'El número está entre 10-50',
3:'El número está entre 51-100',
4:'El número es mayor que 100'


import random
x=random.randint(1, 120)
print('Número elegido:', x)
d={1:'El número es menor de 10',2:'El número está entre 10-50',3:'El número está entre 51-100',4:'El número es mayor que 100'}
z=1+len([i for i in [9,50,100,121] if i<x])
print(d[z])

La línea que realmente hace el trabajo duro es la que calcula la variable z.
La sentencia len calcula la longitud de la lista creada. Luego sumamos 1 ya que las posiciones de una lista comienzan en cero y nosotros el diccionario le hemos comenzado en uno.
Finalmente se imprime el valor del diccionario asociado con la clave z.

4 comentarios:

  1. import random

    def aleatorio1():
    a = random.randint(1, 120)
    if a < 10:
    print (f"{a} , es menor de 10")
    if a > 10 and a <=50:
    print (f"{a} ,intervalo entre 10 y 50")
    if a >= 51 and a <=100:
    print (f"{a}, intervalo entre 51 y 100")
    elif a >= 101:
    print(f"{a}, Mayor que 100")

    print ("Hola")
    aleatorio1()

    ResponderEliminar
  2. import random as ran
    result = (ran.randrange(120))
    print (result)
    if result < 10:
    print("es menor a 10")
    elif result >= 10 and result <= 50:
    print("se encuentra entre 10 y 50")
    elif result > 50 and result <= 100:
    print("se encuentra entre 51 y 100")
    elif result > 100:
    print("es mayor a 100")

    ResponderEliminar
  3. pues yo lo hice de esta manera , me funciona bien :)

    from random import randint

    """Generar un número aleatorio entre 1 y 120.
    Decir si se encuentra en el intervalo entre 10 y 50,
    o bien si es mayor de 50 hasta 100,
    o bien si es mayor de 100,
    o bien si es menor de 10."""


    numeroX = randint(1,120)

    if numeroX <10:
    print('el numero es menor que 10','numero: ',numeroX)
    elif numeroX >= 10 and numeroX <=50:
    print('el numero se encuentra en el intervalo entre 10 y 50', 'numero',numeroX)
    elif numeroX > 50 and numeroX <=100:
    print("el numero si es mayor de 50 hasta 100",'numero: ',numeroX)
    else:
    print('el numero es mayor de 100','numero: ',numeroX)

    ResponderEliminar
  4. pues el método 1 , no funciona al 100%
    por que si cae 50,
    cae en la 3ra condición,
    es mayor de 50 hasta 100,

    por donde debe entrar en la 2da condición,
    ya que me esta pidiendo que le informe
    que el numero que callo es == 50
    debe imprimir intervalo entre 10 y 50,

    ResponderEliminar