Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: kaiminfain en 6 Enero 2010, 20:06 pm



Título: Una ayudita juego piedra, papel, tijera en python
Publicado por: kaiminfain en 6 Enero 2010, 20:06 pm
Hola!! Soy una estudiante de Diseño Industrial, y en la asignatura de Informatica estamos dando programacion en Python (que ya quisiera yo saber, para que!? xD).
Necesito ayuda con un ejercicio (cositas basicas para vosotros seguramente, while, for, if, else...)
El ejercicio es este:
En este ejercicio se tiene que desarrollar el juego de “piedra, papel o tijera” partiendo de un programa inicial:

from random import random
opciones = ["piedra", "papel", "tijera"]

(# Muestra el menú de opciones disponibles)

print "Escoge una opcion"
for i in range(3):
print str(i+1)+ ") " + opciones
escogeUsuario = int(raw_input("Escoge una opción: "))
escogeUsuario = escogeUsuario - 1

(# Las 3 siguientes instrucciones obtienen aleatoriamente un número entre 0 y 2)

NumeroMinimo = 0
NumeroMaximo = 2
escogeOrdenador = int (random()* (NumeroMaximo - NumeroMinimo +1)+ NumeroMinimo)
print "Tu has escogido:", opciones[escogeUsuario]
print "El ordenador ha escogido:", opciones[escogeOrdenador]


Para realizar el juego tienes que realizar las siguientes modificaciones a este programa.
1.Determina quien ha ganado la partida, teniendo en cuenta que Piedra gana a Tijera, Tijera gana a Papel, Papel gana a Piedra y en caso de que sean iguales, se empata.
2.Cuando el usuario introduce la opción que escoge, el programa no verifica que está sea correcta. Modifica el programa para que se solicite al usuario un valor hasta que sea correcto.
3.Modifica el programa para que se pida el número de partidas a realizar y que el programa realice exactamente este número de jugadas. El programa resultante debe llevar la cuenta del número de partidas ganadas por cada jugador de forma que al final se muestre quien es el que ha ganado, cuantas partidas ha ganado cada uno y cuantas se han empatado.


Se lo agradecere eternamente si alguien me puede ayudar con este ejercicio!!!



Título: Re: Una ayudita juego piedra, papel, tijera en python
Publicado por: Darioxhcx en 6 Enero 2010, 20:07 pm
switch te va a servir , while lo usaria para el contador a ver kien gana.. yo hice uno en C , nada de otro mundo y lo hice asi ;D

saludos


Título: Re: Una ayudita juego piedra, papel, tijera en python
Publicado por: Masita en 6 Enero 2010, 20:13 pm
Crea tu algoritmo  planteanos tus dudas y los errores que te da y te responderemos.

¿Existe switch en python? Se que puedes hacerlo parecido con diccionarios pero creo que no tiene palabra reservada


Título: Re: Una ayudita juego piedra, papel, tijera en python
Publicado por: kaiminfain en 6 Enero 2010, 20:33 pm
Vale he llegado hasta el punto donde el programa me dice quien ha ganado, ahora, como hago para que se solicite al usuario un valor hasta que sea correcto.?
He pensado en poner un while, pero no se me cierra el bucle y me sale un monton de veces el ganador.

from random import *
opciones = ["piedra", "papel", "tijera"]

print "Escoge una opcion"
for i in range(3):
  print str(i+1)+ ") " + opciones
escogeUsuario = int(raw_input("Escoge una opción: "))
escogeUsuario = escogeUsuario - 1

NumeroMinimo = 0
NumeroMaximo = 2
escogeOrdenador = int (random()* (NumeroMaximo - NumeroMinimo +1)+ NumeroMinimo)

while escogeUsuario <=3:
  print "Tu has escogido:", opciones[escogeUsuario]
  print "El ordenador ha escogido:", opciones[escogeOrdenador]

  if opciones[escogeUsuario] in opciones and opciones[escogeOrdenador] in opciones:
    if opciones[escogeUsuario] == opciones[escogeOrdenador]:
      print "Empate"
    elif opciones[escogeUsuario] == "piedra" and opciones[escogeOrdenador] == "tijera":
      print "Gana el usuario con", opciones[escogeUsuario], "al ordenador con", opciones[escogeOrdenador]
    elif opciones[escogeUsuario] == "papel" and opciones[escogeOrdenador] == "piedra":
      print "Gana el usuario con", opciones[escogeUsuario], "al ordenador con", opciones[escogeOrdenador]
    elif opciones[escogeUsuario] == "tijera" and opciones[escogeOrdenador] == "papel":
      print "Gana el usuario con", opciones[escogeUsuario], "al ordenador con", opciones[escogeOrdenador]
    else:
      print "Gana el ordenador con", opciones[escogeOrdenador], "al usuario con", opciones[escogeUsuario]


Título: Re: Una ayudita juego piedra, papel, tijera en python
Publicado por: Masita en 6 Enero 2010, 20:57 pm
Podrias hacerlo un bucle while infinito y despues usar try: con el resto del codigo y  al final rompes el while. Intentalo y si no te lo explico un poco.


Título: Re: Una ayudita juego piedra, papel, tijera en python
Publicado por: kaiminfain en 6 Enero 2010, 21:11 pm
Ok ya esta, problema solucionado con el bucle!! muchas gracias! ^^ Es la primera vez que oigo lo del try, supongo que sera una excepcion o algo asi no?!


Título: Re: Una ayudita juego piedra, papel, tijera en python
Publicado por: Masita en 6 Enero 2010, 21:16 pm
try sirve para intentar una accion si no la consigue en lugar de saltar una excepcion, te manda al except. Asi puedes escribir tus propias excepciones o redirigir el flujo del programa.

Saludos!


Título: Re: Una ayudita juego piedra, papel, tijera en python
Publicado por: Novlucker en 6 Enero 2010, 21:53 pm
No me pude resistir al ver el código ...

Por lo que veo, quién escribio ese primer programa estaba iniciandose en python, sino sabría que el Random puede llamarse con mínimo y máximo :-X


Título: Re: Una ayudita juego piedra, papel, tijera en python
Publicado por: kaiminfain en 6 Enero 2010, 22:53 pm
Siento ser tan pesada pero... se nota que no me entero mucho de python verdad??!!  :laugh:

Ahora mismo lo tengo asi:

Código
  1. from random import *
  2. opciones = ["piedra", "papel", "tijera"]
  3.  
  4. print "Escoge una opcion"
  5. for i in range(3):
  6.  print str(i+1)+ ") " + opciones[i]
  7. escogeUsuario = int(raw_input("Escoge una opción: "))
  8. escogeUsuario = escogeUsuario - 1
  9.  
  10. NumeroMinimo = 0
  11. NumeroMaximo = 2
  12. escogeOrdenador = int (random()* (NumeroMaximo - NumeroMinimo +1)+ NumeroMinimo)
  13.  
  14. cantidad = [0]
  15. cantidad[0]= int(raw_input("Partidas a jugar:"))
  16. cuenta = 0
  17. while cuenta < cantidad[0]:
  18.  cuenta = cuenta + 1
  19.  print "Tu has escogido:", opciones[escogeUsuario]
  20.  print "El ordenador ha escogido:", opciones[escogeOrdenador]
  21.  if opciones[escogeUsuario] in opciones and opciones[escogeOrdenador] in opciones:
  22.    if opciones[escogeUsuario] == opciones[escogeOrdenador]:
  23.      print "Empate"
  24.    elif opciones[escogeUsuario] == "piedra" and opciones[escogeOrdenador] == "tijera":
  25.      print "Gana el usuario con", opciones[escogeUsuario], "al ordenador con", opciones[escogeOrdenador]
  26.    elif opciones[escogeUsuario] == "papel" and opciones[escogeOrdenador] == "piedra":
  27.      print "Gana el usuario con", opciones[escogeUsuario], "al ordenador con", opciones[escogeOrdenador]
  28.    elif opciones[escogeUsuario] == "tijera" and opciones[escogeOrdenador] == "papel":
  29.      print "Gana el usuario con", opciones[escogeUsuario], "al ordenador con", opciones[escogeOrdenador]
  30.    else:
  31.      print "Gana el ordenador con", opciones[escogeOrdenador], "al usuario con", opciones[escogeUsuario]


Lo que me pasa es que los resultados se muestran en la pantalla el numero de veces que he puesto en "Partidas a jugar".... :(


Título: Re: Una ayudita juego piedra, papel, tijera en python
Publicado por: Novlucker en 7 Enero 2010, 01:14 am
Fijate donde tienes el while!

El while lo tienes en la parte donde se muestran los resultados, para lo que buscas debería de abarcar además la parte del ingreso de piedra/papel/tijera por parte de usuario y máquina.

Saludos


Título: Re: Una ayudita juego piedra, papel, tijera en python
Publicado por: kaiminfain en 7 Enero 2010, 13:51 pm
Muchas gracias!! Problema resuelto!!!! ^^