[Python] Prolijidad de éste script

Iniciado por Geormarsch, 21 Octubre 2016, 04:59 AM

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

Geormarsch

Una vez más aquí, para preguntar por python.

Resulta que leí más como toooodos me mencionaron  :laugh:
cambié la variable "str" por fzr.
quedan muchas consultas en mí cabeza

- Por qué al importar "os" y anteponer os.system("clear") me arroja un error.

- El uso del if, todavía no lo logro comprender.

- Siento que el menú es muy disfuncional y podría tener errores.

- Sé que siempre hay distintas formas de hacer una cosa, pero cuál sería la más correcta para lo que yo busco?

Tengo los porcentajes configurados en cada variable, y me funciona bien, todos los valores son exactos, ya que sólo sería de números desde el 300 y el doble de cada número sucesivamente, por ende no tendré problemas con decimales ni nada de eso.

ahora sólo me complica el menú.

Espero que no se molesten, pero no logro comprender muchas cosas de las que leo.

Código (python) [Seleccionar]
#!/usr/bin/env python
# -*- coding: utf-8 -*-

def funcion1():
print(' Stats Recomendados Soul Master')
point = 0
print
point = int(input(' Total de puntos: '))

frzPct = 2
agiPct = 40
vitPct = 8
enePct = 50

PctVal = 100

frz = (point * frzPct) / PctVal
agi = (point * agiPct) / PctVal
vit = (point * vitPct) / PctVal
ene = (point * enePct) / PctVal
print' Fuerza   : ', frz
print' Agilidad : ', agi
print' Vitalidad: ', vit
print' Energía  : ', ene
print
print' Por Jorge Martini 2016'
input()

def funcion2():
print(' Stats Recomendados Blade Knight')
point = 0
print
point = int(input(' Total de puntos: '))

frzPct = 40
agiPct = 30
vitPct = 10
enePct = 20

PctVal = 100

frz = (point * frzPct) / PctVal
agi = (point * agiPct) / PctVal
vit = (point * vitPct) / PctVal
ene = (point * enePct) / PctVal
print' Fuerza   : ', frz
print' Agilidad : ', agi
print' Vitalidad: ', vit
print' Energía  : ', ene
print
print' Por Jorge Martini 2016'
input()
 
   
def funcion3():
print(' Stats Recomendados Muse Elf(Agilidad)')
point = 0
print
point = int(input(' Total de puntos: '))

frzPct = 24
agiPct = 64
vitPct = 10
enePct = 2

PctVal = 100

frz = (point * frzPct) / PctVal
agi = (point * agiPct) / PctVal
vit = (point * vitPct) / PctVal
ene = (point * enePct) / PctVal
print' Fuerza   : ', frz
print' Agilidad : ', agi
print' Vitalidad: ', vit
print' Energía  : ', ene
print
print' Por Jorge Martini 2016'
input()

def funcion4():
print(' Stats Recomendados Dark Lord')
point = 0
print
point = int(input(' Total de puntos: '))

frzPct = 7
agiPct = 20
vitPct = 3
enePct = 20
comPct = 50

PctVal = 100

frz = (point * frzPct) / PctVal
agi = (point * agiPct) / PctVal
vit = (point * vitPct) / PctVal
ene = (point * enePct) / PctVal
com = (point * comPct) / PctVal
print' Fuerza   : ', frz
print' Agilidad : ', agi
print' Vitalidad: ', vit
print' Energía  : ', ene
print' Comando  : ', com
print
print' Por Jorge Martini 2016'
input()


def funcion5():
print(' Stats Recomendados Magic Gladiator(Balanceado)')
point = 0
print
point = int(input(' Total de puntos: '))

frzPct = 30
agiPct = 30
vitPct = 10
enePct = 30

PctVal = 100

frz = (point * frzPct) / PctVal
agi = (point * agiPct) / PctVal
vit = (point * vitPct) / PctVal
ene = (point * enePct) / PctVal
print' Fuerza   : ', frz
print' Agilidad : ', agi
print' Vitalidad: ', vit
print' Energía  : ', ene
print
print' Por Jorge Martini 2016'
input()

print
print ' Bienvenidos a Stats Recomendados'
print ' Mu Wolf S2'
print
print ' [1] Soul Master'
print ' [2] Blade Knight'
print ' [3] Muse Elf'
print ' [4] Dark Lord'
print ' [5] Magic Gladiator'
print
print
print ' Sólo ingresar números!!!'
pj = input(' Seleccionar personaje: ')
print
print

if pj == 1:
    funcion1()
if pj == 2:
funcion2()
if pj == 3:
funcion3()
if pj == 4:
funcion4()
if pj == 5:
funcion5()
if pj > 5:
print ' Debes ingresar un número valido.'

"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"

engel lex

os.system es equivalente a escribir un comando en la consola, si estás en windows "clear" no es un comando valido, eso es en linux y mac, usarías "cls" (creo)

el es "si" se cumple una condición

if pj == 1:
    funcion1()


sería


si pj es igual a 1:
    funcion1()


El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Geormarsch

Estoy en linux, en bash para limpiar la consola es clear, y esa parte del if si la entendí, lo que no comprendo es como hacer cuando se escriba un texto volver al menu, algo como el uso del else, probé pero nada 😔
"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

#3
No puedo decirte sobre "clear" porque no uso linux, en cuanto al menú para que se repita debes aprender soble bucles y para ello sobre while, en cuanto a saber si escriben letras o números existe la función isdigit, ya tenés más para buscar y leer.

edito:
         no entiendo que querés hacer pero estaba aburrido y modifiqué apenas tu código porque escribiste una chorrada de funciones que hacen basicamente lo mismo, así que las resumí para que veas como ahorrar código, obvio que faltan cosas y sobran otras, es solo a modo orientativo:
Código (python) [Seleccionar]

#-*- coding: utf -8 -*-
def caracteristicas(frzPct,agiPct,vitPct,enePct,comPct=0):
    point=0   
    PctVal = 100
    point = int(eval(input(' Total de puntos: ')))
     
    frz = (point * frzPct) / PctVal
    agi = (point * agiPct) / PctVal
    vit = (point * vitPct) / PctVal
    ene = (point * enePct) / PctVal
    com = (point * comPct) / PctVal
    print(' Fuerza   : ', frz)
    print(' Agilidad : ', agi)
    print(' Vitalidad: ', vit)
    print(' Energía  : ', ene)
    if comPct != 0:   
        print(' Comando  : ', com)       
    print()
    print(' Por Jorge Martini 2016')

print()
print(''' Bienvenidos a Stats Recomendados'
          Mu Wolf S2')

         [1] Soul Master
         [2] Blade Knight
         [3] Muse Elf
         [4] Dark Lord
         [5] Magic Gladiator


         Sólo ingresar números!!!''')
pj = int(input(' Seleccionar personaje: '))
print()
print()   
   
if pj == 1:
    print(' Stats Recomendados Soul Master')
    caracteristicas(2,40,8,50)

elif pj == 2:
    print(' Stats Recomendados Blade Knight')
    caracteristicas(40,30,10,20)
       
elif pj == 3:
    print(' Stats Recomendados Muse Elf(Agilidad)')
    caracteristicas(24,64,10,2)
       
elif pj == 4:
    print(' Stats Recomendados Dark Lord')
    caracteristicas(7,20,3,20,50)
           
elif pj == 5:
    print(' Stats Recomendados Magic Gladiator(Balanceado)')
    caracteristicas(30,30,10,30)
else:
    print("ingrese un número válido")