Test Foro de elhacker.net SMF 2.1

Programación => Scripting => Mensaje iniciado por: Geormarsch en 19 Octubre 2016, 05:53 AM

Título: [Python] Especie de 'Menú' para un Script
Publicado por: Geormarsch en 19 Octubre 2016, 05:53 AM
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
Título: Re: [Python] Especie de 'Menú' para un Script
Publicado por: 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.
Título: Re: [Python] Especie de 'Menú' para un Script
Publicado por: Geormarsch en 19 Octubre 2016, 06:20 AM
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.


Título: Re: [Python] Especie de 'Menú' para un Script
Publicado por: PUAROT en 19 Octubre 2016, 16:49 PM
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")

Título: Re: [Python] Especie de 'Menú' para un Script
Publicado por: tincopasan en 19 Octubre 2016, 19:10 PM
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.