domingo, 2 de septiembre de 2018

Calculadora programable

import os
k1 = """





CALCULADORA 
Autor: ROHC 1 Suma +
Lenguaje: Python3 2 Resta -
Ejercicio: Calculadora 1 3 Multiplicación *
Fecha: 30/08/18 4 División /




5 Programada

"""
"""Para el siguiente ejercicio documentar con:
Título
Autor
Fecha
Dividir las partes del programa como quitar el salto de linea en un
Realizar los cometarios necesarios que explique lo que hace cada parte del programa
mostrar un menú con:
Las 4 operaciones ( + - * /)
Verifique los datos para que las operaciones sean validos
El siguiente programa presenta un menú con didtintas operaciones a realiza:
Se comienza por elegir la operación a realizar y se repite esta a hasta dar una respuesta 'N' para no continuar o cometer 3 equivocaciones. Luego elñ usuario puede reelegir operación y comenzar un nuevo ciclo o retirarse de el programa con las respuesta adecuada"""
menu = ["1","2","3","4","5","6","7","8"]
fprog=[]
operandos=[]
cuenta = 0.0
cuentavalor = 0
selector = "S"

  
while selector.upper() == "S":
    os.system("clear")
    n1 = " "
    n2 = " "
    contador = 0
    print (f"{k1}")
    k2 = input ("Seleccione una operación: ")
#================================ SUMA ==========================================
    if k2 == "1" or k2 == "+":
        # Agrega a la lista de funciones la operación de suma
        fprog.append("+")
        suma = 0.0
        print ("                                          Suma")
        while not (n1.isdigit()) or n1.upper() == "N":
            n1=input("Ingrese un numero o 'N' para salir:   %8.2f     " % (suma))
            if n1 == "n" or n1 == "N":
                break
            if contador >= 2:
                break
            try:
                float (n1)
                vlogic = True
                n2 = float(n1)
                n1 = " "
            except:
                vlogic = False
                contador = contador + 1
                print (contador)   
            if vlogic == True:    
                suma = suma + n2
        print("El resultado es: %.2f" %(suma))
       
#================================ RESTA ==========================================
    if k2 == "2" or k2 == "-":
        # Agrega a la lista de funciones la operación de resta
        fprog.append("-")
        cuentavalor = 1
        resta = 0.0
        print ("                                    Diferencia")
        while not (n1.isdigit()) or n1.upper() == "N":
            n1=input("Ingrese un numero o 'N' para salir:   %8.2f     " % (resta))
            if n1 == "n" or n1 == "N":
                break
            if contador >= 2:
                break
            try:
                float (n1)
                vlogic = True
                n2 = float(n1)
               
                n1 = " "
            except:
                vlogic = False
                contador = contador + 1
                print (contador, resta)
               
            if vlogic == True:
                if cuentavalor == 1:
                    cuentavalor= 2
                    resta = n2
                else:     
                    resta = resta - n2
        print("El resultado es: %.2f" %(resta))
#================================ PRODUCTO ===================================
    if k2 == "3" or k2 == "*":
        # Agrega a la lista de funciones la operación de producto
        fprog.append("*")
        cuentavalor = 1
        multiplica = 0.0
        print ("                                      Producto")
        while not (n1.isdigit()) or n1.upper() == "N":
            n1=input("Ingrese un numero o 'N' para salir:   %8.2f     " % (multiplica))
            if n1 == "n" or n1 == "N":
                break
            if contador >= 2:
                break
            try:
                float (n1)
                vlogic = True
                n2 = float(n1)
               
                n1 = " "
            except:
                vlogic = False
                contador = contador + 1
                print (contador, multiplica)
               
            if vlogic == True:
                if cuentavalor == 1:
                    cuentavalor= 2
                    multiplica = n2
                else:     
                    multiplica = multiplica * n2
        print("El resultado es: %.2f" %(multiplica))
#======================================== DIVISIÓN ========================================
    if k2 == "4" or k2 == "/":
        # Agrega a la lista de funciones la operación de cociente
        fprog.append("/")
        cuentavalor = 1
        dividendo = 0.0
        divisor = 0.0
        print ("                                      Cociente")
        while not (n1.isdigit()) or n1.upper() == "N" or float(n1)==0.0:
            if cuentavalor == 1:
                n1=input("Ingrese un número  o 'N' para salir:   %8.2f     " % (dividendo))
            else:
                n1=input("Ingrese el divisor o 'N' para salir:   %8.2f     " % (dividendo))
            if n1 == "n" or n1 == "N":
                break
                             
            try:
                float (n1)
                vlogic = True
                n2 = float(n1)
                if n2 == 0.0:
                    contador = contador +1
                n1 = " "
            except:
                vlogic = False
                contador = contador + 1
            if contador >= 2:
                break
               
            if vlogic == True:
                if cuentavalor == 1:
                    dividendo = n2
                    # print (dividendo)
                elif n2 != 0.0:
                    divisor = n2
                    cuentavalor = 1
                    # print (divisor)
                    dividendo = dividendo / divisor
                else:
                    print ("No se puede dividir por 0")
                    while not (n1.isdigit()) or n1.upper() == "N" or float(n1)==0.0:
                        n1=input("Ingrese el divisor o 'N' para salir:   %8.2f     " % (dividendo))
                        if n1 == "n" or n1 == "N":
                            break
                        if float(n1) == 0.0:
                            contador = contador +1
                        if contador >= 2:
                                break
                        try:
                            float (n1)
                            vlogic = True
                            n2 = float(n1)
                            divisor = n2
                            n1 = " "
                        except:
                            vlogic = False
                            contador = contador + 1
                            if contador >= 2:
                                break
                            print (contador, dividendo)
                        if divisor != 0.0:   
                            dividendo = dividendo / divisor
                cuentavalor = 2           
        if divisor != 0.0:       
            print("El resultado es: %.2f" %(dividendo))
        else:
            print ("No se puede dividir por 0")                 
#================================ FUNCIÓN PROGRAMADA 1 ===========================
    if k2 == "5":
        vlogic = False
        lfprog = len(fprog)
        loper = lfprog + 1
       
       
        for i in range(loper):
            n1=input("Ingresar operando: ")
            while vlogic == False:
                try:
                    float (n1)
                    vlogic = True
                    n2 = float(n1)
                    n1 = " "
                except:
                    vlogic = False
            if vlogic == True:       
                operandos.append(n2)
                vlogic = False   
           
        h = 0 
        j = 1
        cuenta = operandos[h]
        while h <= (lfprog-1):
            if fprog[h] == "+":
                cuenta = cuenta + float(operandos[j])
            elif fprog[h] == "-":   
               
                cuenta = cuenta - float(operandos[j])
            elif fprog[h] == "*":   
               
                cuenta = cuenta * float(operandos[j])
            elif fprog[h] == "/":   
               
                if float(operandos[j]) == 0.0:
                    while not (n1.isdigit()) or n1.upper() == "N" or n2 == 0.0:
                        n1=input("Ingrese un nuevo divisor o 'N' para salir:   %8.2f     " % (division))
                        if n1 == "n" or n1 == "N":
                            break
                        if contador >= 3:
                            reak
                        try:
                            float (n1)
                            vlogic = True
                            n2 = float(n1)
                            operandos.insert(j, n2)
                            n1 = " "
                        except:
                            vlogic = False
                            contador = contador + 1
                cuenta = cuenta / float(operandos[j])
            h = h+1
            j = j+1
             
        print ("Funciones: ", fprog)
        print ("Operandos: ", operandos)      
        print ("Resultado: ", cuenta)
        if k2 == "7":
            operandos = []
            fprog = []
            cuenta = 0.0
    selector = input("¿Desea continuar? (s/n): ")

No hay comentarios:

Publicar un comentario