Python - Menu con Argumentos / Ayuda

 
Vista:
sin imagen de perfil

Menu con Argumentos / Ayuda

Publicado por Jimmy (1 intervención) el 21/01/2022 03:32:09
Hola.
Soy nuevo en Pyhon.

Me dejaron un ejercicio:
Crear un programa que pida argumentos y dependiendo de lo que se ingrese vamos a:

-s o --suma = Va sumar n cantidad de números.
-r o --resta = Va restar n cantidad de números.
-m o --mul = Va multiplicar n cantidad de números.
-d o --div = Va dividir n cantidad de números.

python programa.py -s 1 2 3
Resultado =6

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
import sys
 
#Validar si es el principal
if __name__ == "__main__":
    #variable
    tamao = len(sys.argv)
    #ciclo que va estar sacando cada uno de los argumentos(elementos) que hayan ingresado
    for argumento in sys.argv:
        #validar cada uno de los argumentos
        if argumento == "-h" or argumento == "--help" or argumento== "":
            #Mostar el Menu
            print("Bienvenido al Programa x\
\n-h or --help: Ayuda\
\n-s or --suma: Sumar n Cantidad de Numeros\
\n-r or --resta: Restar n Cantidad de Numeros\
\n-m or --mult: Multiplicar n Cantidad de Numeros\
\n-d or --div: Dividir n Cantidad de Numeros")
        #Validar las opciones
        if argumento == "-s" or argumento == "--suma":
            i = 2 #Inicializar posicion donde se encuentra el argumento para comenzar operacion
            #Validar Tamaño del argumento
            if tamao > 3:
                resultado = 0
                #brincar de argumento en argumento
                while i < tamao:
                    #operacion suma
                    resultado = resultado + int( sys.argv[i] )
                    i+=1
                print(f"Resultado = {resultado}")
            else:
                print("Faltan argumentos!")
 
        if argumento == "-r" or argumento == "--resta":
            i = 2
            if tamao > 3:
                resultado = 0
                while i < tamao:
                    #operacion restar
                    if i == 2:
                        resultado = int( sys.argv[i] )
                    else:
                        resultado = resultado - int( sys.argv[i] )
                    i+=1
                print(f"Resultado = {resultado}")
            else:
                print("Faltan argumentos!")
 
        if argumento == "-m" or argumento == "--mult":
            i = 2
            if tamao > 3:
                resultado = 1
                while i < tamao:
                    #operacion multiplicar
                    resultado = resultado * int( sys.argv[i] )
                    i+=1
                print(f"Resultado = {resultado}")
            else:
                print("Faltan argumentos!")
 
        if argumento == "-d" or argumento == "--div":
            i = 2
            if tamao > 3:
                resultado = 0
                while i < tamao:
                    if i > 2 and int( sys.argv[i]) == 0:
                        print("Error: División x Cero")
                        resultado = None
                        break
                    #operacion division
                    elif i == 2:
                        resultado = int( sys.argv[i] )
                    else:
                        resultado = resultado / int( sys.argv[i] )
                    i+=1
                print(f"Resultado = {resultado}")
            else:
                print("Faltan argumentos!")

parte2 del ejercicio:hacer un detalle de optimización de código con un decorador(beforeAccion, afterAcccion) y mandar a llamar como función la operación(suma, resta, multiplicación, división).
Pero tiene que ser sin argparse o getopt para gestionar los argumentos, ya que todavia no he visto esa parte, y el profesor va a hechar de ver que hecho la copiacion y pegason

alguna idea u ejericio similar
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder