Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Problema de dados
#1
Buenos dias gente.

Les paso abajo un problema o ejercicio que debo hacer.

No entiendo como codificar para que se repita el bucle.

Trate con Return de varias formas y todas me dieron error.

Me podran ayudar???


"" Hacer un programa y que cada vez que ejecutamos el programa, éste elegirá dos números aleatorios entre el 1 y el 6.
El programa deberá imprimirlos en pantalla, imprimir su suma y preguntarle al usuario si quiere tirar los dados otra vez"""

Este es mi codigo:

s = ""
cont = s
while cont == s:
    a=int(random.randrange(16))
    b=int(random.randrange(16))

    print("El numero del primer dado es: " , a)
    print("El numero del segundo dado es: ", b)

    print("La suma de ambos dados es: " , (a + b))

    s = input("Desea continuar: ")


Esta es la desvolucion:

PS C:\Users\juanp\Desktop\Python\Modulo 1> & C:/Users/juanp/AppData/Local/Programs/Python/Python39/python.exe "c:/Users/juanp/Desktop/Python/Modulo 1/Dados Juan Rodriguez.py"
El numero del primer dado es:  5
El numero del segundo dado es:  2
La suma de ambos dados es:  7
Desea continuar: s
PS C:\Users\juanp\Desktop\Python\Modulo 1>



Obviamente estoy haciendo algo mal, pq no vuelve al bucle.

Gracias por su ayuda.

Saludos
Responder
#2
Hola, ¿cómo estás?

Tené en cuenta que tu variable "cont" la estás inicializando como una cadena vacía (cont = s, y s es una cadena vacía) y se mantiene siempre con ese valor. O sea que cont == s, que es la condición de tu bucle, está chequeando si s es una cadena vacía. Eso solo ocurre ni bien arrancás el programa, porque después le asignas un valor con s = input(...). Entonces, no importa qué haya escrito el usuario en la consola (salvo que haya apretado enter sin escribir), siempre va a salir del bucle.

Lo podrías replantear así:

Código:
respuesta = "s"
while respuesta == "s":
    a=int(random.randrange(1, 6))
    b=int(random.randrange(1, 6))

    print("El numero del primer dado es: " , a)
    print("El numero del segundo dado es: ", b)

    print("La suma de ambos dados es: " , (a + b))

    respuesta = input("Desea continuar (s/n): ")

Por otro lado, randrange(1, 6) genera un número aleatorio entre 1 y 5. Recordá que en los rangos (como en range), el último número siempre está excluido.

Saludos!
¡No te pierdas nuestro curso oficial en Udemy para aprender Python, bases de datos SQL, orientación a objetos, tkinter y mucho más!

También ofrecemos consultoría profesional de desarrollo en Python para personas y empresas.
Responder
#3
(02-11-2020, 10:20 PM)Francisco escribió: Por otro lado, randrange(1, 6) genera un número aleatorio entre 1 y 5. Recordá que en los rangos (como en range), el último número siempre está excluido.

No soy el autor del problema, pero mirando un código vi que habían usado range(1, 6 +1). Yo me preguntaba que sentido tenia esa suma y ahora entiendo porque. Saludos.
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)