Autor Tema: Números aleatorios Python

0 Usuarios y 1 Visitante están viendo este tema.

21 Noviembre, 2020, 01:32 pm
Leído 128 veces

Quema

  • $$\Large \color{red}\pi\,\pi\,\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 1,722
  • País: uy
  • Karma: +0/-0
  • Sexo: Masculino
Se eligen tres números enteros entre del 1 al 10. Si coinciden se despliega Correcto, al cabo de tres intentos si no los tres no coinciden se despliega juega en otra oportunidad. Pensé en esto, pero no me funciona

import random
def juego():
    a=[]
num1=random.randrange(1, 11)
num2=random.randrange(1, 11)
num3=random.randrange(1, 11)
print(num1,num2,num3)
if num1==num2==num3:
    print('Correcto')
else:
    print('Incorrecto')
    a.append('Incorrecto')
while 'Correcto' not in a and len(a)<3:
juego(x)
    if len(a)==3:
    print('Juega en otra oportunidad')

21 Noviembre, 2020, 04:32 pm
Respuesta #1

feriva

  • $$\Large \color{red}\pi\,\pi\,\pi\,\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 9,172
  • País: es
  • Karma: +1/-0
  • Sexo: Masculino
Ahí sí que te conviene usar una función para ir retornando.

Creo que funcionará, aunque no he tenido paciencia para probar hasta que me dé los tres iguales.

(Corregido. Ya está todo como quería)
Código: [Seleccionar]

import random
cont =0    #Contador que va a verificar los múltiplos de 3

def f():
global cont    #Se toma la variable contador como global para que funcione en dentro de f().
L=[]         # Lista de los tres números.
while len(L)<3:       #El while parará cuando haya 3 elementos en la lista
n=(random.randint(1, 10))       # "n" variable del número aleatorio
L.append(n)
if L[0]==L[1] and L[0]==L[2] and L[1]==L[2]:      #Compara los números según las combinaciones por si son iguales
print (L)
print ("Ganaste")
else:
cont = cont+1 #Si no son iguales suma 1 al contador
if cont != 0 and cont % 3 ==0:      #Si el contador no es cero y es mútliplo de tres aparece el cartel siguiente.
print (L)
print ("¿Quieres intentarlo otra vez?; pulsa ENTER terminar y s y después ENTER para seguir"
t=str(input())
if t=="s":
f()
else:
return
print (L)
s=str(input("pulsa ENTER para seguir"))
f()

f()

Saludos

21 Noviembre, 2020, 04:48 pm
Respuesta #2

ingmarov

  • Moderador Global
  • Mensajes: 4,900
  • País: hn
  • Karma: +0/-0
  • Sexo: Masculino
Hola

Correciones que haría a tu código

...
import random

def juego():

    num1=random.randrange(1, 11)
    num2=random.randrange(1, 11)
    num3=random.randrange(1, 11)
    print(num1,num2,num3)
    if num1==num2 and num1==num3:
        print('Correcto')
        return("Correcto")
    else:
        print('Incorrecto')
        return('Incorrecto')


a=[]    #Aquí debe ir esta lista, si la pones dentro de la función juego no podrás acceder a ella ni para leer sus valores ni para agregarle nuevos.

while 'Correcto' not in a and len(a)<3:
    a.append(juego(x))

if len(a)==3 and 'Correcto' not in a:
        print('Juega en otra oportunidad')

Saludos
No te confíes, revisa lo que escribo. Yo también me equivoco.
Odio el autocorrector de Android...

21 Noviembre, 2020, 06:15 pm
Respuesta #3

feriva

  • $$\Large \color{red}\pi\,\pi\,\pi\,\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 9,172
  • País: es
  • Karma: +1/-0
  • Sexo: Masculino
Se eligen tres números enteros entre del 1 al 10. Si coinciden se despliega Correcto, al cabo de tres intentos si no los tres no coinciden...

Creo que te he interpretado mal, he hecho un programa que hace algo más complicado; he interpretado que tres intentos no es sacar tres números, sino tandas de tres, pues un número sería un 1/3 de intento (:D yo entiendo las cosas sí... ya me conocéis).

Bueno, pero sirve también.

Pero si es eso nada más, uno muy simple podría ser así

Código: [Seleccionar]
k=0
for pasos in range (3):
n=(random.randint(1, 10))
k=k+n
if k==3*n:
print ("Correcto")
else:
print ("Pruebe otro día")

Saludos.