W arkuszach maturalnych z informatyki można często spotkać zadanie, w którym należy coś zrobić z cyframi danej liczby. W tym artykule pokażę, w jaki sposób sumować cyfry podanej liczby naturalnej.
Popatrzmy na przykład. Chcemy zsumować cyfry liczby zapisanej w zmiennej liczba. Postępujemy według schematu:
#*****************www.algorytm.edu.pl****************
def suma_cyfr(liczba):
suma = 0
while liczba > 0:
suma += liczba % 10 # (*)
liczba //= 10 # (**)
return suma
# część główna programu
liczba = int(input("Podaj liczbę: ")) # zmienna liczba jest typu int
print(f"Suma cyfr liczby {liczba} wynosi", suma_cyfr(liczba))
W takiej sytuacji musimy zrobić przegląd wszystkich cyfr w kolejności np. od lewej do prawej i każdy znak będący cyfrą zamienić na jej wartość. Inaczej mówiąc zamieniamy kody ASCII cyfr na ich wartości. Poniżej znajduje się wykaz kodów ASCII cyfr:$$0 → 48$$$$1 → 49$$$$2 → 50$$$$...$$$$9 → 57$$Widzimy więc, że wartość ASCII każdej z cyfr należy pomniejszyć o 48 aby uzyskać rzeczywistą wartość cyfry.
W implementacji wykorzystaliśmy funkcję ord(znak), która zwraca kod ASCII danego znaku, w tym przypadku tym znakiem jest cyfra.
#*****************www.algorytm.edu.pl****************
def suma_cyfr(liczba):
suma = 0
for cyfra in liczba:
suma += ord(cyfra) - 48 # pobieram kod ASCII danej cyfry i pomniejszam go o 48
return suma
# część główna programu
liczba = input("Podaj liczbę: ") # zmienna liczba jest typu string
print(f"Suma cyfr liczby {liczba} wynosi", suma_cyfr(liczba))