El camino hacia la pericia como programadores está plagado de ejercicios que van poniendo a prueba nuestra capacidad. Es absolutamente necesario pasar por ellos: resolviendo los problemas más elementales adquirimos las técnicas que nos permitirán afrontar los más complejos.
El programa de hoy es bien simple. Le pediremos al usuario que introduzca un número entero y nuestra misión será calcular la suma de todas sus cifras.
En el camino veremos cómo recorrer una cadena de caracteres (string) de principio a fin. Los strings son otro tipo de secuencias, como las tuplas o las listas y, como todas las secuencias, podemos acceder a sus elementos individualmente.
Comencemos solicitando la introducción del número y almacenando el dato en una variable:
numero=input('Introduce un número de las cifras que quieras: ')
Este tipo de sentencia ya te es familiar, pero no olvides que la entrada de input es una cadena de caracteres, aunque sólo hayamos introducido cifras numéricas. Es decir, la variable numero referencia a un string.
No estamos tratando, por el momento, los posibles errores de entrada. Confiamos en la buena fe del usuario, que sólo introducirá números.
Inicializamos la variable que contendrá la suma de todas las cifras:
suma=0
Vamos a recorrer ahora el string introducido desde el primer elemento hasta el último. Utilizaremos un bucle for:
for cifra in numero:
suma+=int(cifra)
La variable cifra recorrerá uno a uno, todos los elementos de la secuencia (un string en este caso) de principio a fin. Por ejemplo, si numero es el string ‘207’, en la primera pasada del bucle, cifra es el carácter ‘2’, en la segunda ‘0’ y en la tercera ‘7’.
Date cuenta de que he rodeado cada cifra entre comillas. Esto es así porque los elementos de un array son caracteres simples, aunque representen un número.
Al ser caracteres simples y no números, para poder sumarlos necesitamos convertirlos a enteros. Para ello utilizamos la función int() que vemos en el bloque del for.
Una vez ha concluido el for tras recorrer todo el string, estamos en condiciones de imprimir el resultado final:
print(suma)
El programa sumacifras.py contiene el código completo de este sencillo ejercicio.
Javier Montero Gabarró
El texto de este artículo se encuentra sometido a una licencia Creative Commons del tipo CC-BY-NC-ND (reconocimiento, no comercial, sin obra derivada, 3.0 unported)
El Club del Autodidacta
Muchas gracias por el tutorial, pero hay un pequeño fallo que indico para que no hayan confusiones, este codigo no funciona, para que funcione este codigo debes convertir la variable «numero» en «string» ya que un numero «Int» no es iterable, debajo de numero=input….etc hay que insertar str_numero= str(numero) y en el bucle for cambiar «numero» por «str_numero».
Asi queda:
numero=input(‘Introduce un numero de las cifras que quieras: ‘)
str_numero = str(numero)
suma=0
for cifra in str_numero:
suma+=int(cifra)
print(suma)
Debo corregirte, me temo: numero no debe convertirse a string porque ya lo es desde un principio! La función input() devuelve un string. 😉
Tienes razon pero no se porque me daba error, puede que sea por el pycharm no lo probe con el interprete nativo, lo mirare, lo siento de veras.
Tranquilo, no necesitas pedir disculpas. Quizás estuvieras pensando en Python 2. La función input() se comporta de modo distinto en Python 3.
Saludos
me salvaste la vida gracias
No será para tanto… 😀
Me alegro de que te haya servido. Saludos
Que genial encontrar a alguien que es musico y le gusta la programacion a la vez!
Bueno, ambas actividades tienen su componente artístico y creativo. 😉
Escribir un programa de python para calcular la suma de los dígitos en un entero…..///
en ese ejemplo que usted paso , donde se define la variable cifra ??
Esto es Python, Pamela. 🙂
La variable cifra se crea directamente en la misma instrucción for.
Saludos
como puedo hacer que me imprima cuanto numero escribo !! osea que si escribo 302 me diga que e escrito 3 cifra de numeros
Ese esta mas facil xD, no se si ya lo resolviste pero una solución seria así:
numero=input(‘Introduce un numero de las cifras que quieras: ‘)
print(‘Ha introducido un numero de ‘,len(numero),’cifras.’)
y con eso lo resuelves.
Saludos!!