Test Foro de elhacker.net SMF 2.1

Programación => Scripting => Mensaje iniciado por: TheCrimulo en 8 Diciembre 2014, 01:09 AM

Título: [PYTHON] ¿Algún tipo de GoTo en Python?
Publicado por: TheCrimulo en 8 Diciembre 2014, 01:09 AM
Muy buenas,
En este código (Interprete de comandos) tengo un problema, y es que cuando, por ejemplo, he usado la función de la calculadora, vuelva al 'prompt':
Código (python) [Seleccionar]
# -*- coding: utf-8 -*-
from _pyclass import pymaths #Math Class
from _pyclass import pyuses #Pauses
from _pyclass import pymethods #Methods
import os
import time

pymaths = pymaths()
pyuse = pyuses()
pyfiles = pyfiles()
pymet = pymethods()

pymet.pyusr('TheCrimulo','Python Software Foundation - PSF')

print 'Welcome to AnvilPy'
print '[0.1.2.4]'
print time.strftime("%Y/%m/%d %H:%M:%S")

print '///////////////////////'
print '/                     /'
print '/   AnvilPy Logger    /'
print '/                     /'
print '/                     /'
print '///////////////////////'

usr = raw_input('Username:')
mode = raw_input('Terminal mode ("$command" or "command"):')
print 'Welcome, ' + usr

q1 = '?'
q1_ = '$'
q2 = 'hlp'
q2_ = '$hlp'
q3 = 'help'
q3_ = '$help'
q4 = 'python'
q4_ = '$python'
q5 = 'calculator'
q5_ = '$calculator'
q6 = 'time'
q6_ = '$time'
q7 = '¡doc'
m1 = 'command'
m1_ = '$command'

if mode == m1:
cprompt = raw_input('*terminal*>>>')

if cprompt == q1:
print """
Commands:
===========
? , hlp , help - Shows all the commands
python - Shows the Python Info
calculator - Starts the calculator
time - Shows the time
"""
elif cprompt == q2:
print """
Commands:
===========
? , hlp , help - Shows all the commands
python - Shows the Python Info
calculator - Starts the calculator
time - Shows the time
"""
elif cprompt == q3:
print """
Commands:
===========
? , hlp , help - Shows all the commands
python - Shows the Python Info
calculator - Starts the calculator
time - Shows the time
"""
elif cprompt == q4:
print 'Python 2.7.7 - PSF'
print 'www.python.org'

elif cprompt == q5:
eprompt = raw_input('*calculator*>>>')
a1 = 'Add'
a2 = 'Substract'
a3 = 'Multiply'
a4 = 'Int Division'
a5 = 'Dec Division'
a6 = 'Quo Division'
a7 = 'Res Division'
a8 = 'Round Number'
if eprompt == a1:
ep1 = raw_input('Number:')
ep2 = raw_input('Number:')
print pymaths.add(ep1,ep2)

elif eprompt == a2:
ep3 = raw_input('Number:')
ep4 = raw_input('Number:')
print pymaths.substract(ep3,ep4)

elif eprompt == a3:
ep5 = raw_input('Number:')
ep6 = raw_input('Number:')
print pymaths.multiply(ep5,ep6)

elif eprompt == a4:
ep7 = raw_input('Number:')
ep8 = raw_input('Number:')
print pymaths.divide_int(ep7,ep8)

elif eprompt == a5:
ep9 = raw_input('Number:')
ep10 = raw_input('Number:')
print pymaths.divide_dec(ep9,ep10)

elif eprompt == a6:
ep11 = raw_input('Number:')
ep12 = raw_input('Number:')
print pymaths.divide_quo(ep11,ep12)

elif eprompt == a7:
ep13 = raw_input('Number:')
ep14 = raw_input('Number:')
print pymaths.divide_res(ep13,ep14)

elif eprompt == a8:
ep15 = raw_input('Number:')
ep16 = raw_input('Number of Decimals:')
print pymaths.roundto(ep15,ep16)

Falta MUCHO para terminar, pero es un punto crucial en el programa, lo he intentado con exec, pero NOPE.

Un saludo,
TheCrimulo
Título: Re: [PYTHON] ¿Algún tipo de GoTo en Python?
Publicado por: engel lex en 8 Diciembre 2014, 01:11 AM
goto por lo general los lenguajes no lo tienen por gran cantidad de problemas y descontrol del codigo... por que no lo haces en funciones y de manera bien estructurada?
Título: Re: [PYTHON] ¿Algún tipo de GoTo en Python?
Publicado por: MCKSys Argentina en 8 Diciembre 2014, 05:34 AM
Prueba con loop (while)...

Saludos!
Título: Re: [PYTHON] ¿Algún tipo de GoTo en Python?
Publicado por: TheCrimulo en 8 Diciembre 2014, 19:59 PM
Muchas gracias, con los While (while loop <= 999:) y terminando cada comando del "interprete" con loop += 1 (Evidentemente, a los 999 se cierra) me ha arreglado el programa entero. Millones de gracias  :D

EJEMPLO:
Código (python) [Seleccionar]
loop = 0
while loop <= 999:
    if consola == comando1:
        codigo
        loop += 1
Título: Re: [PYTHON] ¿Algún tipo de GoTo en Python?
Publicado por: engel lex en 8 Diciembre 2014, 20:05 PM
Código (python) [Seleccionar]
while True:
Título: Re: [PYTHON] ¿Algún tipo de GoTo en Python?
Publicado por: TheCrimulo en 8 Diciembre 2014, 20:17 PM
Es verdad  :P
Yo y mis idas de olla, siempre a lo dificil... , pero de todas maneras gracias :D
Título: Re: [PYTHON] ¿Algún tipo de GoTo en Python?
Publicado por: PedroDJavier en 15 Diciembre 2014, 16:41 PM
Un consejo, en python hay 3 paradigmas, uno de ellos es el "de funciones" o "funcional"  --> Te explico:

para hacer un menú principal harias asi:

Código (python) [Seleccionar]
def menu():
    print("Menu Principal ")
    print("1.- hackear nasa")
    print("2.- hackear fbi")


y cuando quieras volver al menu haces:

Código (python) [Seleccionar]
menu()

y listo ;)
es otra forma similar de hacerlo al bucle.

PD: Lo de que no haya goto en python (los que vengan de batch se estaran arrancando los pelos) es debido a que asi se organiza mejor el code y no hacemos codigo espaguetti  :p

Saludos!