Python - Error en código

 
Vista:

Error en código

Publicado por Francisco (1 intervención) el 30/09/2018 00:51:53
Buenas a todos.

Tengo un pequeño problema con un programa ejercicio de la Universidad con Python y no se como encontrarlo.

Por pequeño cabe aclarar que el programa esta casi listo (Solo le falta añadir para que sea mediante una función).

La consigna es que el programa que se tiene que realizar tome tantos números por parte del usuario hasta que el mismo ingrese -1 y termine el ingreso de números.
Una vez ingresados, se tiene que sumar las primeras cifras de todos los numero ingresados por el usuario. Si el usuario ingresó números negativos, se los hay que transformar en positivos.


El programa es el siguiente:

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
print("Ingrese varios números para sumar sus primeros dígitos entre sí, ingrese -1 para terminar")
lista = []
numero = int(input("Ingrese un número "))
while numero != -1:   # Se ingresan los numero que les sumaran las cifras
    lista.append(numero)
    numero = int(input("Ingrese un número, o -1 para terminar "))
 
for i in range(len(lista)):  # A cualquier número negativo ingresado se lo volverá positivo
    if lista[i] < 0:
        lista[i] = lista[i] * -1
 
for i in range(len(lista)):    # Se hacen las operaciones para sumar las cifras de cada numero generado en la lista
    cifra = 10
    OK = 0
    if lista[i] == 0:
        lista[i] = 0
    elif cifra == lista[i]:
        lista[i] = lista[i] / cifra
 
    while OK != 1:
        if cifra > lista[i]:
            while cifra > lista[i]:
                cifra = cifra/10
            lista[i] = lista[i] / cifra
            OK = 1
        elif cifra < lista[i]:
            while cifra < lista[i]:
                cifra = cifra*10
 
print(int(sum(lista)))
 
(fin)

Para lograr el objetivo en sí lo que hice fue que para obtener cada primera cifra, se divida el numero ingresado por 10 elevado a N-1 cifras del numero ingresado.

235324

Hasta ahi todo bien, PERO el problema es que a la hora de ingresar numero MUY GRANDES, siempre me suma 1 mas, o sea:

105234234234 Se obtiene el 1
232143253242 Se obtiene el 2
622452343049 Se obitene el 6
-1

Deberia ser:
1 + 2 + 6 = 9

Pero en su lugar me entrega un 10 y no encuentro el fallo :c.
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
sin imagen de perfil
Val: 765
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Error en código

Publicado por dario (185 intervenciones) el 30/09/2018 06:04:59
Hola, esto te puede ayudar.
Salu2.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
lista = []
 
while True:
  num = input('Ingrese un numero, -1 para terminar:')
 
  if num == '-1':
    break
  elif num[0] == '-':
    num = abs(int(num))
    lista.append(num)
  else:
    lista.append(num)
 
suma = 0
 
for i in range(len(lista)):
  suma = suma + int(lista[i][0])
 
print('\nLa suma de los primeros digitos es %d' %suma)
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