[Python] Especie de 'Menú' para un Script

Iniciado por Geormarsch, 19 Octubre 2016, 05:53 AM

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

Geormarsch

Bueno, como algunos me recomendaron, me fuí por otro lenguaje y decidí Python.

Me demoré 10 minutos en hacer éste pseudo script y entenderlo.

Código (python) [Seleccionar]
point = 0
print
print (' Stats recomendados para Soul Master, Mu Season 2')
print
point = input(' Total de puntos: ')


#Porcentaje respectivo para cada stats
strPct = 2
agiPct = 40
vitPct = 8
enePct = 50

PctVal = 100

#Operacion matematica
str = ( point * strPct ) / PctVal
agi = ( point * agiPct ) / PctVal
vit = ( point * vitPct ) / PctVal
ene = ( point * enePct ) / PctVal

#Imprimir Stats recomendados
print ' Fuerza   : ', str
print ' Agilidad : ', agi
print ' Vitalidad: ', vit
print ' Energia  : ', ene



Mí consulta es la siguiente, cómo puedo hacer una especie de Menú, ya que ahora estos stats son recomendados para un personaje, cómo podría hacerlo para que al elegir un número me dirija a otra sección, como un goto en Batch.

Mí segunda consulta, cómo se aplica el if en éste caso? me refiero si se introduce 0 ó una letra, se aplique otro "goto"

PD: Leí en internet, pero no lo entiendo...
PD2: Uso python3
"Comentar el código es como limpiar el cuarto de baño; nadie quiere hacerlo, pero el resultado es siempre una experiencia más agradable para uno mismo y sus invitados"

tincopasan

no pienses en python como bat, no existe goto por ejemplo, ya que es una pésima práctica de programación.
en el código que pusiste:
Código (python) [Seleccionar]
point = input(' Total de puntos: ')
al querer aplicarlo acá:
Código (python) [Seleccionar]
str = ( point * strPct ) / PctVal
te va a dar un error, ya que necesitas un entero y no una cadena, pordría ser así:
Código (python) [Seleccionar]
point = int(input(' Total de puntos: '))
lo del menú ni entendí con que lo querés hacer.
buscá sobre el uso y declaraciones de  funciones para lo que le decis o esperas por goto
el if es para aplicar una comparación, tampoco entiendo donde realizas una.
si llevás 10 minutos, bueno tomate una hora más.

Geormarsch

Cita de: tincopasan en 19 Octubre 2016, 06:08 AM
no pienses en python como bat, no existe goto por ejemplo, ya que es una pésima práctica de programación.
en el código que pusiste:
Código (python) [Seleccionar]
point = input(' Total de puntos: ')
al querer aplicarlo acá:
Código (python) [Seleccionar]
str = ( point * strPct ) / PctVal
te va a dar un error, ya que necesitas un entero y no una cadena, pordría ser así:
Código (python) [Seleccionar]
point = int(input(' Total de puntos: '))
lo del menú ni entendí con que lo querés hacer.
buscá sobre el uso y declaraciones de  funciones para lo que le decis o esperas por goto
el if es para aplicar una comparación, tampoco entiendo donde realizas una.
si llevás 10 minutos, bueno tomate una hora más.


Código (python) [Seleccionar]
print ' Selecciona el numero del personaje'
print ' 1. Mago'
print ' 2. Gladiador'
pj = input()


Me refiero a algo así, la verdad es que comparé los dos lenguajes, por que informaticamente hablando no sé como se le llama al "goto".

Cómo podría tomar el resultado de la variable "pj" y si es 1 derivarlo a la sección que adjunte el código y si es 2 por ejemplo que me derive a otra sección ya que los porcentajes para el Gladiador cambiarían, la verdad es que no sé si me estoy explicando lo suficientemente bien.

no pretendo que me realicen el código, ya que para el Gladiador sólo debería cambiar las variables ya definidas, pero para eso necesito tener dos secciones, una para cuando escojan Mago y otra para el Gladiador, eso es lo que no he encontrado.

Gracias, saludos.


"Comentar el código es como limpiar el cuarto de baño; nadie quiere hacerlo, pero el resultado es siempre una experiencia más agradable para uno mismo y sus invitados"

PUAROT

Creo que antes de adentrarte en intentar crear algo deberías leer algo (básico ) del lenguaje que has elegido.
Python es fácil de leer y entender, pero te aconsejo que te leas algún manual básico o veas algunos tutoriales para entender como funciona a nivel básico.

Como por ejemplo las palabras mas básicas reservadas al lenguaje de programación, no deberías asignar str como una variable, ya que es la forma de asignar a un valor que es un string o int para asignar que es un integer ....

Respecto a tu pregunta deberias mirarte el uso de if else ... y de como definir funciones
Un ejemplo sencillo seria:

def funcion1():
    print("Has elegido el Mago")

def funcion2():
    print("Has elegido el gladiador")

print("Selecciona 1 para Mago")
print("Selecciona 2 para gladiador")
pj = input("Que gerrero eliges?")

if pj == "1":
    funcion1()
elif pj =="2":
    funcion2()
else:
    print("respuesta incorrecta")


tincopasan

lo bueno que tiene python es que permite muchas formas de hacer una cosa, por ejemplo esta:
Código (python) [Seleccionar]

#-*- coding: utf-8 -*-
import sys,os
class Personajes:
    def __init__(self):
        self.elecciones= {
        "1":self.mago,
        "2":self.gladiador,
        "3":self.salir
         }
       
    def mostrar_menu(self):
        print("""
        [1] Mago
        [2] Gladiador
        [3] Salir
        """)
       
    def ejecutar(self):
        while True:
            self.mostrar_menu()
            eleccion= input("elige una opción: ")
            accion = self.elecciones.get(eleccion)
            if accion:
                accion()
            else:
                print("{} no es una elección válida".format(eleccion))
           
    def mago(self):
        os.system("cls")
        print("Acá va todo lo del mago")
   
    def gladiador(self):
        os.system("cls")
        print("Acá va todo lo del gladiador")
   
    def salir(self):
        os.system("cls")
        msg=" Programa terminado "
        print(msg.center(28,"*"))
        os.system("pause")
        sys.exit(0)
       
inicio=Personajes()
inicio.ejecutar()

Bien, de forma irónica te lo dije antes y ahora más educadamente PUAROT, lee más sobre todo lo básico de Python antes de querer hacer algo complejo, sobre todo si solo usas bat que no es ni parecido ni le llega a los talones en cuanto a funcionalidad.