Python - operaciones 2 números con lista de dígitos

 
Vista:
sin imagen de perfil
Val: 5
Ha disminuido su posición en 18 puestos en Python (en relación al último mes)
Gráfica de Python

operaciones 2 números con lista de dígitos

Publicado por jorge (4 intervenciones) el 04/11/2019 00:49:35
hola que tal, tengo que hacer un programa de operaciones de dos numeros en formato de lista de digitos. Me faltaria de multiplicación y tambien de resta, cuando el resultado es negativo.
aqui abajo muestro lo que tengo( suma; y resta con resultado positivo). muchas gracias
pd: tampoco se como hacer para que todo este en formato LIST


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
op=input("ingrese la operacion")
nro1=input("Ingrese el primer numero: ")
nro2=input("Ingrese el segundo numero: ")
if op=="+":
    def nro_a_lista(valor):
        vec_nro = list(valor)
        vec_nro.reverse()
        if vec_nro[-1]=="-":
            vec_nro=[vec_nro.pop(),vec_nro]
        else:
            vec_nro=["+",vec_nro]
        return vec_nro
    def suma(valor1, valor2):
        #Iguala los tamaños de las listas, agregando tantos "0" como sea necesario
        largo_v1=len(valor1[1])
        largo_v2=len(valor2[1])
        if largo_v1>largo_v2:   #valor1 tiene mas digitos, agrego "0" en valor2
            for v in range(largo_v1-largo_v2):
                valor2[1].append("0")
        elif largo_v2>largo_v1: #valor2 tiene mas digitos, agrego "0" en valor1
            for v in range(largo_v2-largo_v1):
                valor1[1].append("0")
        else:
            pass #tienen la misma cantidad de digitos
        resultado = []
        acarreo = 0
        for v in range(len(valor1[1])):
            resultado.append("0")
            resultado[v] = (int(valor1[1][v]) + int(valor2[1][v]) + acarreo) % 10
            acarreo = (int(valor1[1][v]) + int(valor2[1][v]) + acarreo) // 10
        if acarreo !=0:
            resultado.append(acarreo)
        resultado.reverse()
        return resultado
    r = suma(nro_a_lista(nro1), nro_a_lista(nro2))
    print(r)
if op=="-" or op=="+" and nro2<0:
    nro1 = str(nro1)
    nro2 = str(nro2)
    nro1 = nro1.zfill(len(nro2))
    nro2 = nro2.zfill(len(nro1))
    resultado = []
    acarreo = 0
    for orden in reversed(range(len(nro1))):
        n1 = int(nro1[orden])
        n2 = int(nro2[orden]) + acarreo
        if n1 >= n2:
            acarreo = 0
            resultado.append(n1-n2)
        else:
            acarreo = 1
            resultado.append(10+n1-n2)
    pinta = '  '
    for orden in reversed(range(len(nro1))):
        pinta += str(resultado[orden])
    print (pinta)
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
Imágen de perfil de zer0x10
Val: 425
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

operaciones 2 números con lista de dígitos

Publicado por zer0x10 (109 intervenciones) el 05/11/2019 02:55:03
Hola, te comparto una solución utilizando un poco de expresiones regulares para validar la entrada de usuario y a partir de ahí obtener los operandos y el operador de la operación correspondiente.

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
import re
 
op = a = re.search(r'^(-?\d\.?\d*)(\+|-|\*|/)(-?\d\.?\d*)$',
                   input('Operación: '))
 
if op:
    # a => operando 1
    # b => operador
    # c => operando 2
    a, b, c = op.groups()
    print(a, b, c)
    if b == '+':
        result = float(a) + float(c)
    elif b == '-':
        result = float(a) - float(c)
    elif b == '*':
        result = float(a) * float(c)
    elif c == '/':
        try:
            result = float(a) + float(b)
        except ZeroDivisionError as err:
            print('Error al ejecutar división por cero', err)
    print('El resultado es:', result)
else:
    print('Operación mal formada')
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Héctor Madriz
Val: 361
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

operaciones 2 números con lista de dígitos

Publicado por Héctor Madriz (69 intervenciones) el 05/11/2019 13:27:40
Buen día, prueba esto:

1
2
lista=[input("Numero 1: "),input("Numero 2: ")]
print(eval(str(lista[0])+input("Introduzca + - * / : ")+str(lista[1])))

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar