[PYTHON] ¿Algún tipo de GoTo en Python?

Iniciado por TheCrimulo, 8 Diciembre 2014, 01:09 AM

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

TheCrimulo

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
Código (python) [Seleccionar]
print "¡Buenos días mundo!"
Código (c#) [Seleccionar]
System.WriteLine("¡Callate!");

engel lex

#1
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?
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.

MCKSys Argentina

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


TheCrimulo

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
Código (python) [Seleccionar]
print "¡Buenos días mundo!"
Código (c#) [Seleccionar]
System.WriteLine("¡Callate!");

engel lex

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.

TheCrimulo

Es verdad  :P
Yo y mis idas de olla, siempre a lo dificil... , pero de todas maneras gracias :D
Código (python) [Seleccionar]
print "¡Buenos días mundo!"
Código (c#) [Seleccionar]
System.WriteLine("¡Callate!");

PedroDJavier

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!