Python - operaciones 2 numeros con lista de digitos

 
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 numeros con lista de digitos

Publicado por jorge (4 intervenciones) el 20/09/2019 04:16:59
paint

hola que tal. la foto que subi es un programa para sumar 2 números como lista de digitos. necesitaria saber como puedo hacer un programa que me haga la resta entre dos numeros como lista de digitos tambien, y que los numeros puedan ser tanto positivos como negativos
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 joel
Val: 3.475
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

operaciones 2 numeros con lista de digitos

Publicado por joel (901 intervenciones) el 20/09/2019 11:04:11
Puedes pegar el código para poder copiarlo y probarlo?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
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 numeros con lista de digitos

Publicado por jorge (4 intervenciones) el 20/09/2019 16:18:15
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
nro1=input("v1: ")
nro2=input("v2: ")
 
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)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar