Foro de elhacker.net

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
  1. # -*- coding: utf-8 -*-
  2. from _pyclass import pymaths #Math Class
  3. from _pyclass import pyuses #Pauses
  4. from _pyclass import pymethods #Methods
  5. import os
  6. import time
  7.  
  8. pymaths = pymaths()
  9. pyuse = pyuses()
  10. pyfiles = pyfiles()
  11. pymet = pymethods()
  12.  
  13. pymet.pyusr('TheCrimulo','Python Software Foundation - PSF')
  14.  
  15. print 'Welcome to AnvilPy'
  16. print '[0.1.2.4]'
  17. print time.strftime("%Y/%m/%d %H:%M:%S")
  18.  
  19. print '///////////////////////'
  20. print '/                     /'
  21. print '/   AnvilPy Logger    /'
  22. print '/                     /'
  23. print '/                     /'
  24. print '///////////////////////'
  25.  
  26. usr = raw_input('Username:')
  27. mode = raw_input('Terminal mode ("$command" or "command"):')
  28. print 'Welcome, ' + usr
  29.  
  30. q1 = '?'
  31. q1_ = '$'
  32. q2 = 'hlp'
  33. q2_ = '$hlp'
  34. q3 = 'help'
  35. q3_ = '$help'
  36. q4 = 'python'
  37. q4_ = '$python'
  38. q5 = 'calculator'
  39. q5_ = '$calculator'
  40. q6 = 'time'
  41. q6_ = '$time'
  42. q7 = '¡doc'
  43. m1 = 'command'
  44. m1_ = '$command'
  45.  
  46. if mode == m1:
  47. cprompt = raw_input('*terminal*>>>')
  48.  
  49. if cprompt == q1:
  50. print """
  51. Commands:
  52. ===========
  53. ? , hlp , help - Shows all the commands
  54. python - Shows the Python Info
  55. calculator - Starts the calculator
  56. time - Shows the time
  57. """
  58. elif cprompt == q2:
  59. print """
  60. Commands:
  61. ===========
  62. ? , hlp , help - Shows all the commands
  63. python - Shows the Python Info
  64. calculator - Starts the calculator
  65. time - Shows the time
  66. """
  67. elif cprompt == q3:
  68. print """
  69. Commands:
  70. ===========
  71. ? , hlp , help - Shows all the commands
  72. python - Shows the Python Info
  73. calculator - Starts the calculator
  74. time - Shows the time
  75. """
  76. elif cprompt == q4:
  77. print 'Python 2.7.7 - PSF'
  78. print 'www.python.org'
  79.  
  80. elif cprompt == q5:
  81. eprompt = raw_input('*calculator*>>>')
  82. a1 = 'Add'
  83. a2 = 'Substract'
  84. a3 = 'Multiply'
  85. a4 = 'Int Division'
  86. a5 = 'Dec Division'
  87. a6 = 'Quo Division'
  88. a7 = 'Res Division'
  89. a8 = 'Round Number'
  90. if eprompt == a1:
  91. ep1 = raw_input('Number:')
  92. ep2 = raw_input('Number:')
  93. print pymaths.add(ep1,ep2)
  94.  
  95. elif eprompt == a2:
  96. ep3 = raw_input('Number:')
  97. ep4 = raw_input('Number:')
  98. print pymaths.substract(ep3,ep4)
  99.  
  100. elif eprompt == a3:
  101. ep5 = raw_input('Number:')
  102. ep6 = raw_input('Number:')
  103. print pymaths.multiply(ep5,ep6)
  104.  
  105. elif eprompt == a4:
  106. ep7 = raw_input('Number:')
  107. ep8 = raw_input('Number:')
  108. print pymaths.divide_int(ep7,ep8)
  109.  
  110. elif eprompt == a5:
  111. ep9 = raw_input('Number:')
  112. ep10 = raw_input('Number:')
  113. print pymaths.divide_dec(ep9,ep10)
  114.  
  115. elif eprompt == a6:
  116. ep11 = raw_input('Number:')
  117. ep12 = raw_input('Number:')
  118. print pymaths.divide_quo(ep11,ep12)
  119.  
  120. elif eprompt == a7:
  121. ep13 = raw_input('Number:')
  122. ep14 = raw_input('Number:')
  123. print pymaths.divide_res(ep13,ep14)
  124.  
  125. elif eprompt == a8:
  126. ep15 = raw_input('Number:')
  127. ep16 = raw_input('Number of Decimals:')
  128. 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
  1. loop = 0
  2. while loop <= 999:
  3.    if consola == comando1:
  4.        codigo
  5.        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
  1. 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
  1. def menu():
  2.    print("Menu Principal ")
  3.    print("1.- hackear nasa")
  4.    print("2.- hackear fbi")
  5.  

y cuando quieras volver al menu haces:

Código
  1. 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!