Reto: Alternos con excepciones
Imprimir diez números aleatorios sin repetición entre 100 y 130, excepto los números 110, 115, 120 y alternando par, impar, comenzando por par.
Método 1
Importamosrandint
de la librería random
. Creamos la lista L
inicialmente vacía. Nos metemos en un bucle while
con 10 ciclos. Por cada vuelta generamos un número aleatorio par entre 100 y 130. Si el número generado no es 110, ni 115, ni 120, y no está en la lista L
, para evitar repeticiones, entonces nos metemos en otro condicional if
.En el segundo condicional se analiza la condición de que el número aleatorio sea par y que el lugar (
n
) que toca sea par, para garantizar que se trata de la ubicación donde ha de ir un número par, entonces se añade a la lista con append
. y el contador n
se incrementa en 1. La otra condición del elif
analiza si el número aleatorio en impar y toca que la ubicación donde tenga que ir sea también impar, entonces se añade con append
y el contador n
se incrementa en 1.Finalmente se imprime la lista y luego se vuelve a imprimir ordenada con
sort
.from random import randint
n=0
L=[]
while n<10:
t=randint(100,131)
if t not in (110,115,120) and t not in L:
if t%2==0 and n%2==0: #par y toca par
L.append(t)
n+=1
elif t%2!=0 and n%2!=0: #impar y toca impar
L.append(t)
n+=1
print(L)
L.sort()
print(L)
Método 2
Generamos la listaLp
que contendrá ordenados todos los números pares posibles, que son los comprendidos entre 100 y 130 salvo el 110 y el 120.Generamos la lista
Li
que contendrá ordenados todos los números impares posibles, que son los comprendidos entre 100 y 130 salvo el 115.Imprimimos las listas
Lp
y Li
.Con
random.shuffle
barajamos cada lista. Creamos la lista L
, inicialmente vacía. Nos metemos en un bucle for
de 5 ciclos. Aunque nos piden 10 números en este reto el bucle for
es de 5 ciclos ya que en cada uno de ellos se genera una pareja de números, el primero par y el segundo impar. Para generar el número par se toma el primer par de la lista de pares Lp
, que ya se desordenó anteriormente, y para generar el número impar se hace lo mismo con la lista de impares Li
.El resultado será una lista de números
L
que contiene 5 parejas de números par, impar, que comienzan por par y se van alternando.import random
Lp=[i for i in range(100,131,2) if i not in (110,120)] #genera todos los pares posibles
Li=[i for i in range(101,131,2) if i!=115] #genera todos los impares posibles
print(Lp)
print(Li)
random.shuffle(Lp) #baraja los pares
random.shuffle(Li) #baraja los impares
L=[]
for k in range(5): # son 5 parejas de par, impar.
L.append(Lp[k]) # toma el pare de indice k
L.append(Li[k]) # toma el impar de indice k
print(L)
No hay comentarios:
Publicar un comentario