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':
# -*- 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
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?
Prueba con loop (while)...
Saludos!
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:
loop = 0
while loop <= 999:
if consola == comando1:
codigo
loop += 1
while True:
Es verdad :P
Yo y mis idas de olla, siempre a lo dificil... , pero de todas maneras gracias :D
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:
def menu():
print("Menu Principal ")
print("1.- hackear nasa")
print("2.- hackear fbi")
y cuando quieras volver al menu haces:
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!