Python - Número aleatorio sin que se repita

 
Vista:
sin imagen de perfil
Val: 50
Ha aumentado su posición en 5 puestos en Python (en relación al último mes)
Gráfica de Python

Número aleatorio sin que se repita

Publicado por Fernando (5 intervenciones) el 27/01/2020 02:21:54
Hola, amigos de la web del programador.
Estoy participando en un proyecto y tengo una inquietud.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import random
import unicodedata
level=0
contador=0
 
nombre=input("""¡Bienveinido a nuestro juego de preguntas!
Por favor, ingresa tu nombre :""")
print("¡Hola!", nombre,)
print("Muchas de las respuestas empiezan con artículos (el, la, los, las), así que ten cuidado.")
a=int(input("¿Estás list@ para empezar? Si es así, por favor pulsa 1 y presiona Enter: "))
 
while a==1:
    #Nivel 1
    while contador<3 and level<=5:
        vidas=2-contador
        a=(random.randint(1,10))
        contenido1 = {
        1:["¿Cuál es el ave insignia de Colombia?","El cóndor","Sabías que el cóndor de los Andes, es un ave que no sólo es insignia de Colombia sino también de países como Bolivia, Ecuador y Perú. La trascendencia e imponencia que tiene en los Andes lo ha hecho merecedor de ocupar los símbolos patrios de cada país, y su belleza es digna de admirar cuando vuela en el aire. Sin embargo, aunque tenga gran relevancia en la zona andina americana, la destrucción de sus hábitats y la poca disposición de ecosistemas que se le han dejado, han dificultado su reproducción (la cual tiene sus especificidades) llevándolo a estar en amenaza de extinción. "],
        2:["¿Qué hecho histórico aparece en las obras de Gabriel García Márquez?","La masacre de las bananeras","Sabías que, aunque en la obra más reconocida de Gabo (Cien Años de Soledad) se narre la masacre de las bananeras, también aparece en otros textos como “La hojarasca” y los “Funerales de la Mamá Grande”. Es tan así que el punto de quiebre de “La hojarasca” resulta ser la trágica situación que vivieron los trabajadores de la Fruit Company. Esta empresa, que se encargó de la exportación de plátano, estuvo presente en otros países caribeños como Panamá. El debate sobre lo ocurrido en la masacre, fue dado por Jorge Eliécer Gaitán, quien se mostró con este caso en la política colombiana."],
        3:["¿A qué jugador se le conoce como “El tigre”?","Falcao","Sabías que a comienzos de siglo XX ocurrió un delito, tal vez, sin precedentes en el país. Un hombre, luego de estar en un jolgorio, apuñaló a su compadre dejándole 210 heridas (contadas por el perito del caso). Por supuesto, fue vinculado al delito de homicidio, al fallecer su víctima, pero no tuvo castigo carcelario ya que se vinculó a un problema mental que tenía. Según su relato, se estaba defendiendo del difunto cuando sufrió un ataque de epilepsia. El veredicto fue posible porque en esa época la criminalidad tenía en cuenta los problemas psiquiátricos y mentales de los criminales, llegándolos a poner en manicomios en vez de cárceles, para pagar la pena por su delito. El caso de este homicida es recordado por el número de heridas que le provocó a su compadre y, por ello, hoy es conocido como “El hombre tigre”, de manera similar al apodo de Falcao."],
        4:["¿Quién creó la carranga?", "Jorge Velosa", "Sabías que Jorge Velosa es egresado del departamento de Veterinaria de la Universidad Nacional de Colombia, y que la raíz de la música carranguera viene de ritmos como el merengue y la parranda campesina. Estos ritmos a su vez tienen origen de ritmos caribeños como el paseo y el merengue. Así, la carranga fue creada por un veterinario con ritmos de la costa. Al parecer lo que bailamos y cantamos, y creemos que es del centro del país, tiene más de costeño que de andino."],
        5:["¿Cuál es el producto de exportación por excelencia colombiano? ","El café","Sabías que el café ha sido el principal producto de exportación de Colombia, desde finales del siglo XIX hasta hoy, teniendo reconocimiento a nivel mundial por su sabor y aroma. Sin embargo, durante la década de 1980, cuando ocurrió el “narcoterrorismo”, en varios años la principal exportación de Colombia fue la cocaína, la que superó las exportaciones del café (principal producto exportado nacionalmente)."],
        6:["¿Quién toma café a la hora del té?", "La iguana", "Sabías que la canción infantil «La iguana» es una muestra del nacionalismo colombiano. En ella se presenta una historia un tanto curiosa. Es una iguana que viste una ruana, al lado del río Magdalena, donde las temperaturas y la humedad son distintas (más altas) que la región andina. Además,  toma café a la hora del té, lo que significa que toma las tradiciones del país, tomando el producto nacional por excelencia, cuando se dispone una tradición europea"],
        7:["¿Cuál villancico es colombiano?", "Niño del alma", "Sabías que en los villancicos es muy cotidiano mostrar elementos de la nacionalidad de cada país en donde se componen. Así, mientras en el Burrito Sabanero quien lo monta va tocando un cuatro, en Niño del alma se va a cantarle al niño un bambuco, ritmo tradicional colombiano"],
        8:["¿A qué santo se le ora para conseguir marido?", "San Antonio de Padua", "Sabías que en Colombia la popularidad de San Antonio es tan alta, que en la novela de Betty la Fea la mamá de Betty le oraba al santo para que su hija consiguiera marido. Esta repercusión viene del pensamiento de que el santo ayuda al matrimonio, y se tienen toda serie de creencias para conseguir su intercesión: quitarle el niño, ponerlo de cabeza"],
        9:["¿Cómo se le llamó al movimiento insurgente que surgió a lo largo del Nuevo Reino de Granada en 1781?", "Rebelión de los comuneros", "Sabías que el movimiento de los comuneros en 1781 se toma como una rebelión, ya que no logró modificar o generar rupturas en la sociedad colonial del Nuevo Reino de Granada. Aunque los comuneros se hayan lanzado a combatir las reformas promovidas por los reyes Borbones, ante la represión que hizo la corona, el movimiento no tuvo mucha instancia en las decisiones económicas, sociales y políticas de los estancos y las alcabalas"],
        10:["Colombia posee costa sobre dos océanos, ¿cuáles son?", "El Pacífico y el Atlántico.", "Sabías que Colombia cuenta con 928.660 km2 de superficie oceánica, espacio en el que habita gran parte de la biodiversidad de nuestro país. Esto se debe a los diversos cambios continentales que ha tenido el mundo desde la época del gran continente Pangea (que se dividió hace millones de años para dar paso a los continentes actuales)."]
        }
        print()
        print(contenido1[a][0])
        respuesta=input("Ingresa tu respuesta: ")
        print()
        stir=respuesta.lower()==contenido1[a][1].lower()
        you=unicodedata.normalize('NFKD', respuesta).encode('ASCII', 'ignore').lower() == unicodedata.normalize('NFKD', contenido1[a][1]).encode('ASCII', 'ignore').lower()
        if stir==True or you==True:
            print ("¡Muy bien, acertaste!")
            level+=1
 
        else:
            print("¡Respuesta incorrecta!")
            contador+=1
            print ("Te quedan" , vidas ,"vidas")
            print()
            print ("la respuesta correcta es: " , contenido1[a][1])
            print()
        print ("¿Sabías qué...?", contenido1 [a][2])
    else:
        if contador==3 and level<=20:
            print()
            print ("Has agotado tus vidas :(")
            a=input("""Si quieres intentarlo nuevamente presiona 1, de lo contrario
            presiona la tecla ENTER""")
        elif contador<3 and level<=20:
            print("Te quedan", vidas, "vidas")
print("Chao")
No sé cómo hacer para que el número aleatorio elegido por "random", en el rango que está definido, no se repita. He consultado varios foros y no logro con el chiste.
Les agradecería mucho su ayuda.
Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de joel
Val: 1.599
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Número aleatorio sin que se repita

Publicado por joel (283 intervenciones) el 27/01/2020 09:10:52
Hola Fernando, si lo que quieres es que no se repita, tendrás que preparar una lista con los valores sin repetir, y luego ir leyendo la lista con esos valores no repetidos.

https://www.lawebdelprogramador.com/codigo/Python/5858-Obtener-una-lista-de-numeros-aleatorios-sin-repetirse.html
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 50
Ha aumentado su posición en 5 puestos en Python (en relación al último mes)
Gráfica de Python

Número aleatorio sin que se repita

Publicado por Fernando (5 intervenciones) el 27/01/2020 16:56:42
Hola Joel. Gracias por tu ayuda.
Tengo unas dudas con respecto a random.sample().
1. En el código que compartí anteriormente, ¿dónde debo ubicar random.sample() para que se ejecute?
1
2
3
4
import random
 
def randomNumbers2(n):
    return random.sample(range(0,n), n)
2. Como hay 10 números en el rango, los cuales a cada uno le corresponde una pregunta, ¿cómo hago para que el código que me compartiste solo tome los valores del rango definido?
Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de joel
Val: 1.599
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Número aleatorio sin que se repita

Publicado por joel (283 intervenciones) el 27/01/2020 21:12:08
Lo que se me ocurre, es que obtengas la lista de números aleatorios antes de entrar en el while, y luego en vez de buscar un numero aleatorio como haces en la linea 17, obtienes el siguiente valor de la lista, así sabes que nunca se va a repetir.

No se si me he sabido explicar... te he modificado estas lineas en tu código para que lo veas claro:

1
2
3
4
5
6
7
8
9
a=int(input("¿Estás list@ para empezar? Si es así, por favor pulsa 1 y presiona Enter: "))
 
numerosAleatorios=random.sample(range(1,11), 10)
 
while a==1:
    #Nivel 1
    while contador<3 and level<=5:
        vidas=2-contador
        a=numerosAleatorios.pop()
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar