He hecho un "juego" en Python


Lucky

Lucky downgrade
Nodero
Noder
Buenas, pues estoy aprendiendo a programar en Python y he intentado hacer un juego que consiste en lo siguiente:
Tú das un intervalo y tienes que intentar adivinar el número con 4 intentos. (Para que no sea tan difícil te va diciendo si el número que tienes que adivinaf es mayor o menor del que has dicho)

EDIT: Tengo problemas al poner el código en el post porque no se guardan bien algunos espacios, por lo que aquí pongo un archivo .txt por si lo quereis probar. De todas formas voy a dejar el código para que, aunque no esté bien del todo, se pueda ver sin que haga falta descargarlo.
ENLACE:
Para ver el contenido debes estar registrado.

Aquí va el código:
Python:
import random
n=0
print("Hola! Vamos a jugar a un juego. Yo tengo pensado un número al azar entre un intervalo que me digas y tienes que adivinarlo. Tienes los intentos que elijas!")
print()
cont=int(input("Primero dime el número de intentos: "))
f=int(input("Dime el primer número del intervalo: "))
print()
g= int(input("Dime el segundo número del intervalo: "))
print()
while f>g:
 print("Error. El segundo número debe de ser mayor que el primero")
 print()
 g=int(input("Vuelve a decirme el segundo número: "))
 print()
x=random.randint(f,g)
while n!=x and cont>0:
 n=int(input("Dime el número que crees que he pensado: "))
 print()
 if f>n or n>g:
   print("Error. Selecciona un número que esté dentro del intervalo.")
   print()
 if f<=n and n<=g:
   if n<x:
      print("Has fallado")
      print()
      print("Pista: Es un número mayor")
      cont=cont-1
      if cont ==1:
        print("Te queda 1 intento")
      if cont ==0:
       print("Te has quedado sin intentos")
      else:
        print("Te quedan "+ str(cont)+ " intentos")
      print()
   elif n>x:
      print("Has fallado")
      print("Pista:Es un número menor")
      cont=cont-1
      if cont ==1:
        print("Te queda 1 intento")
      if cont ==0:
       print("Te has quedado sin intentos")
      else:
        print("Te quedan "+ str(cont)+ " intentos")
      print()
if n==x:
 print("Has ganado, enhorabuena!")
else:
 print("Has fallado. El número era "+ str(x))
EDIT 2: Como me aburría un poco, le he puesto que ahora puedes elegir manualmente el número de intentos. Además cada vez que fallas te va mostrando el número de intentos que te quedan
cont es el número de intentos
La x es el número que genera al azar la máquina
La f es el primer número del intervalo
La g es el segundo número del intervalo
La n es el número que da el usuario

¿Qué os parece? El caso es que me ha salido largo de cojones y me preguntaba si se puede hacer más eficiente o si tiene algún fallo. Alguien sabe?
 
Última edición:

FxnSociety

Miembro muy activo
Noder
Puedes añadir partes del codigo a definiciones, y luego llamarlas con un import, tipo haces tu main.py, luego tu jusego.py, y ya si te mola el rollo, yo consegui hasta hacerle un .conf bastante guapo para personalizar el juego, yo he tenido que programar en bash script el mastermind y una calculadora cientifica, ahora estoy con scripts de python y selenium. Y aparte aprendiendo basico C# y C++. asi que mucho animo!!
 
  • Like
Reacciones : Lucky

Dark

🔥root313🔥
Staff
Moderador
Paladín de Nodo
Jinete de Nodo
Burgués de Nodo
Noderador
Nodero
Noder Pro
Noder
Buenas, pues estoy aprendiendo a programar en Python y he intentado hacer un juego que consiste en lo siguiente:
Tú das un intervalo y tienes que intentar adivinar el número con 4 intentos. (Para que no sea tan difícil te va diciendo si el número que tienes que adivinaf es mayor o menor del que has dicho)
Aquí va el código:

Python:
import random
s=0
n=0
print("Hola! Vamos a jugar a un juego. Yo tengo pensado un número al azar entre un intervalo que me digas y tienes que adivinarlo. Tienes 4 intentos!")
print()
f=int(input("Dime el primer número del intervalo: "))
print()
g= int(input("Dime el segundo número del intervalo: "))
print()
while f>g:
print("Error. El segundo número debe de ser mayor que el primero")
print()
g=int(input("Vuelve a decirme el segundo número: "))
print()
x=random.randint(f,g)
while n!=x and s<4:
n=int(input("Dime el número que crees que he pensado: "))
print()
if f>n or n>g:
   print("Error. Selecciona un número que esté dentro del intervalo.")
   print()
if f<=n and n<=g:
   if n<x:
      print("Has fallado")
      print()
      print("Pista: Es un número mayor")
      s=s+1
      print()
   elif n>x:
      print("Has fallado")
      print()
      print("Pista:Es un número menor")
      s=s+1
      print()
if n==x:
print("Has ganado, enhorabuena!")
else:
print("Has fallado. El número era "+ str(x))
La s sirve para contar los fallos
La x es el número que genera al azar la máquina
La f es el primer número del intervalo
La g es el segundo número del intervalo
La n es el número que da el usuario

¿Qué os parece? El caso es que me ha salido largo de cojones y me preguntaba si se puede hacer más eficiente o si tiene algún fallo. Alguien sabe?

PD: algunos espacios no se han guardado al pasar el código aquí
5f4a1a8d7d67bfa42bc2a46a26780b67.png

https://gyazo.com/5f4a1a8d7d67bfa42bc2a46a26780b67

Esto ha sido nada más iniciarlo.
 

RubRub

Miembro muy activo
Nodero
Noder
Puedes añadir partes del codigo a definiciones, y luego llamarlas con un import, tipo haces tu main.py, luego tu jusego.py, y ya si te mola el rollo, yo consegui hasta hacerle un .conf bastante guapo para personalizar el juego, yo he tenido que programar en bash script el mastermind y una calculadora cientifica, ahora estoy con scripts de python y selenium. Y aparte aprendiendo basico C# y C++. asi que mucho animo!!
has indentado los print de los bucles while?
 

Lucky

Lucky downgrade
Nodero
Noder
Puedes añadir partes del codigo a definiciones, y luego llamarlas con un import, tipo haces tu main.py, luego tu jusego.py, y ya si te mola el rollo, yo consegui hasta hacerle un .conf bastante guapo para personalizar el juego, yo he tenido que programar en bash script el mastermind y una calculadora cientifica, ahora estoy con scripts de python y selenium. Y aparte aprendiendo basico C# y C++. asi que mucho animo!!
Muchas gracias! :)
Jo, a mí no me salía antes, puede ser porque los espacios aquí no están bien puestos?
 

Dark

🔥root313🔥
Staff
Moderador
Paladín de Nodo
Jinete de Nodo
Burgués de Nodo
Noderador
Nodero
Noder Pro
Noder
Última edición:

Lucky

Lucky downgrade
Nodero
Noder
Buenas, pues estoy aprendiendo a programar en Python y he intentado hacer un juego que consiste en lo siguiente:
Tú das un intervalo y tienes que intentar adivinar el número con 4 intentos. (Para que no sea tan difícil te va diciendo si el número que tienes que adivinaf es mayor o menor del que has dicho)
Aquí va el código:

Python:
import random
s=0
n=0
print("Hola! Vamos a jugar a un juego. Yo tengo pensado un número al azar entre un intervalo que me digas y tienes que adivinarlo. Tienes 4 intentos!")
print()
f=int(input("Dime el primer número del intervalo: "))
print()
g= int(input("Dime el segundo número del intervalo: "))
print()
while f>g:
print("Error. El segundo número debe de ser mayor que el primero")
print()
g=int(input("Vuelve a decirme el segundo número: "))
print()
x=random.randint(f,g)
while n!=x and s<4:
n=int(input("Dime el número que crees que he pensado: "))
print()
if f>n or n>g:
   print("Error. Selecciona un número que esté dentro del intervalo.")
   print()
if f<=n and n<=g:
   if n<x:
      print("Has fallado")
      print()
      print("Pista: Es un número mayor")
      s=s+1
      print()
   elif n>x:
      print("Has fallado")
      print()
      print("Pista:Es un número menor")
      s=s+1
      print()
if n==x:
print("Has ganado, enhorabuena!")
else:
print("Has fallado. El número era "+ str(x))
La s sirve para contar los fallos
La x es el número que genera al azar la máquina
La f es el primer número del intervalo
La g es el segundo número del intervalo
La n es el número que da el usuario

¿Qué os parece? El caso es que me ha salido largo de cojones y me preguntaba si se puede hacer más eficiente o si tiene algún fallo. Alguien sabe?

PD: algunos espacios no se han guardado al pasar el código aquí
Ya está editado, el problema era que no se habían guardado algunos espacios
 

Dark

🔥root313🔥
Staff
Moderador
Paladín de Nodo
Jinete de Nodo
Burgués de Nodo
Noderador
Nodero
Noder Pro
Noder
Ya está editado, el problema era que no se habían guardado algunos espacios
Pues no eh, será mejor que pongas el enlace de descarga para el txt y ya xd.
 
  • Like
Reacciones : Lucky

cbrn

el ex-staff más guapo del foro
Noderador
Nodero
Noder
No uses "print()" para dar saltos de línea. Utiliza "\n" a final de cada cadena de texto para dar dicho salto de línea sin tener que ensuciar el código. (Lo digo para que lo tengas en cuenta, no va a malas :))
 
  • Like
Reacciones : Lucky y Dark

Lucky

Lucky downgrade
Nodero
Noder
No uses "print()" para dar saltos de línea. Utiliza "\n" a final de cada cadena de texto para dar dicho salto de línea sin tener que ensuciar el código. (Lo digo para que lo tengas en cuenta, no va a malas :))
Gracias! No sabía que se podía hacer eso y así queda mejor :)
 
  • Like
Reacciones : Dark