Przejdź do treści

Aktualizacja: 4.11.2026

Suma cyfr liczby w Pythonie i C++

Wiele zadań z liczbami sprowadza się do pytania o cyfry: jaka jest suma cyfr, ile cyfr ma liczba, jak wygląda czytana od tyłu, czy jest palindromem. Wszystkie te zadania rozwiązuje jeden prosty schemat z dwoma działaniami: resztą z dzielenia przez 10 i dzieleniem całkowitym przez 10. Warto go opanować, bo wraca później w zamianie systemów liczbowych, w zadaniach maturalnych i na olimpiadach.

Na tej stronie znajdziesz sumę cyfr, liczbę cyfr, odwracanie liczby i palindromy z kodem w Pythonie oraz C++. Każdy przykład przejdziesz krok po kroku w kursie Algorytmy z podstawy programowej: w przeglądarce, bez instalowania niczego i bez konta, z podglądem zmiennych w każdym kroku.

Przejdź sumę cyfr krok po kroku

Idea: ostatnia cyfra i jej odcięcie

W systemie dziesiętnym ostatnia cyfra liczby to reszta z dzielenia przez 10: 2026 % 10 = 6. Z kolei dzielenie całkowite przez 10 usuwa ostatnią cyfrę: 2026 // 10 = 202. Powtarzając oba kroki, odwiedzamy cyfry od końca, aż liczba spadnie do zera:

  • n % 10 - daje ostatnią cyfrę,
  • n // 10 - odcina ostatnią cyfrę (w C++ to samo robi n / 10 na typie int),
  • while n > 0 - kończy, gdy cyfr już nie ma.

Suma cyfr liczby w Pythonie

n = 2026
suma = 0
while n > 0:
    cyfra = n % 10
    suma += cyfra
    n //= 10
    print("cyfra", cyfra, "zostaje", n)
print("suma cyfr:", suma)
cyfra 6 zostaje 202
cyfra 2 zostaje 20
cyfra 0 zostaje 2
cyfra 2 zostaje 0
suma cyfr: 10

Prześledźmy wartości zmiennych po każdym obrocie pętli:

obrót cyfra suma n
start - 0 2026
1 6 6 202
2 2 8 20
3 0 8 2
4 2 10 0

Liczba obrotów pętli jest równa liczbie cyfr. Ponieważ liczby całkowite w Pythonie nie mają limitu, ten sam kod policzy sumę cyfr liczby o setkach cyfr, np. 2 do potęgi 100 (to jedno z zadań w kursie).

Liczba cyfr

Wystarczy zamiast sumować cyfry liczyć obroty pętli. Jest jedna pułapka: zero ma jedną cyfrę, a pętla while n > 0 nie wykona się dla niego ani razu. Dlatego zero trzeba obsłużyć osobno:

def ile_cyfr(n):
    if n == 0:
        return 1
    ile = 0
    while n > 0:
        ile += 1
        n //= 10
    return ile


print(ile_cyfr(7), ile_cyfr(2026), ile_cyfr(0), ile_cyfr(1000000))
1 4 1 7

Ćwicz: ile cyfr ma liczba

Odwracanie liczby

Tym samym schematem budujemy liczbę czytaną od tyłu. Dotychczasowy wynik mnożymy przez 10 (robimy miejsce na nową cyfrę) i dopisujemy ostatnią cyfrę liczby:

n = 1234
odwrocona = 0
while n > 0:
    odwrocona = odwrocona * 10 + n % 10
    n //= 10
print(odwrocona)
4321
obrót n % 10 odwrocona n
start - 0 1234
1 4 4 123
2 3 43 12
3 2 432 1
4 1 4321 0

Ten wzór, “wynik razy podstawa plus cyfra”, to w gruncie rzeczy schemat Hornera. Z podstawą 2 zamiast 10 zamienia zapis dwójkowy na dziesiętny, o czym więcej na stronie systemy liczbowe.

Krokuj odwracanie liczby

Palindrom w Pythonie: liczba i napis

Palindrom czyta się tak samo od przodu i od tyłu: 12321, 707, “kajak”. Liczbę sprawdzamy, porównując ją z jej odwróceniem. Uwaga: odwracamy kopię liczby, bo pętla zeruje zmienną, a oryginał jest potrzebny do porównania. Napis porównujemy znak po znaku od obu końców do środka:

def czy_palindrom_liczba(n):
    x = n
    odwrocona = 0
    while x > 0:
        odwrocona = odwrocona * 10 + x % 10
        x //= 10
    return odwrocona == n


def czy_palindrom_napis(s):
    i = 0
    j = len(s) - 1
    while i < j:
        if s[i] != s[j]:
            return False
        i += 1
        j -= 1
    return True


print(czy_palindrom_liczba(12321), czy_palindrom_liczba(1231))
print(czy_palindrom_napis("kajak"), czy_palindrom_napis("kotek"))
True False
True False

W Pythonie napis można też porównać z jego odwróceniem wycinkiem: s == s[::-1]. Wersja z dwoma indeksami jest jednak dokładnie tym, co trzeba napisać w C++ i w innych językach bez takiego skrótu.

Krokuj palindromy

Suma cyfr w C++

W C++ dzielenie dwóch liczb typu int jest całkowite, więc n / 10 działa jak // w Pythonie. Schemat zamknięty w funkcjach:

#include <iostream>
using namespace std;

int sumaCyfr(int n) {
  int suma = 0;
  while (n > 0) {
    suma += n % 10;
    n /= 10;
  }
  return suma;
}

int odwroc(int n) {
  int wynik = 0;
  while (n > 0) {
    wynik = wynik * 10 + n % 10;
    n /= 10;
  }
  return wynik;
}

int main() {
  cout << sumaCyfr(2026) << endl;
  cout << sumaCyfr(99999) << endl;
  cout << odwroc(1234) << endl;
  return 0;
}
10
45
4321

Palindromy liczbowe z przedziału od 100 do 200 w C++ znajdziemy, odwracając każdą liczbę i porównując z oryginałem:

#include <iostream>
using namespace std;

bool palindrom(int n) {
  int x = n;
  int odwrocona = 0;
  while (x > 0) {
    odwrocona = odwrocona * 10 + x % 10;
    x /= 10;
  }
  return odwrocona == n;
}

int main() {
  for (int i = 100; i <= 200; i++) {
    if (palindrom(i)) {
      cout << i << " ";
    }
  }
  cout << endl;
  return 0;
}
101 111 121 131 141 151 161 171 181 191

W C++ typ int mieści liczby do około 2 miliardów, więc odwracanie bardzo dużej liczby może przekroczyć zakres. W Pythonie ten problem nie występuje.

Lista kroków, pseudokod i schemat blokowy

Podstawa programowa wymaga, żeby uczeń opisywał problem specyfikacją (dane i wynik) i zapisywał algorytm listą kroków albo pseudokodem, a w szkole rysuje się też schematy blokowe. Pseudokod jest w stylu arkuszy maturalnych: ← to przypisanie, div i mod to iloraz i reszta z dzielenia całkowitego, a elementy tablic i znaki napisów są numerowane od 1 (w Pythonie od 0). Te same zapisy są w kursie przy lekcjach tematu, pod przyciskiem Algorytm.

Suma cyfr liczby

Specyfikacja. Dane: liczba naturalna n. Wynik: suma cyfr n.

Lista kroków:

  1. Wczytaj n. Ustaw s = 0.
  2. Jeśli n = 0, przejdź do kroku 5.
  3. Dodaj do s ostatnią cyfrę n, czyli resztę z dzielenia n przez 10.
  4. Odetnij ostatnią cyfrę: zastąp n ilorazem całkowitym n przez 10. Wróć do kroku 2.
  5. Wypisz s i zakończ.

Pseudokod:

wczytaj n
s ← 0
dopóki n > 0 wykonuj
  s ← s + n mod 10
  n ← n div 10
wypisz s

Schemat blokowy:

Schemat blokowy: Suma cyfr liczbySchemat blokowy algorytmu: Suma cyfr liczby. Te same kroki co w liście kroków i pseudokodzie.STARTwczytaj ns ← 0n > 0TAKs ← s + n mod 10n ← n div 10NIEwypisz sSTOP
Schemat blokowy: Suma cyfr liczby

Odwracanie liczby

Specyfikacja. Dane: liczba naturalna n. Wynik: liczba zapisana cyframi n w odwrotnej kolejności.

Lista kroków:

  1. Wczytaj n. Ustaw r = 0.
  2. Jeśli n = 0, przejdź do kroku 5.
  3. Dopisz ostatnią cyfrę n na końcu r: r = 10 · r + (reszta z dzielenia n przez 10).
  4. Zastąp n ilorazem całkowitym n przez 10 i wróć do kroku 2.
  5. Wypisz r i zakończ.

Pseudokod:

wczytaj n
r ← 0
dopóki n > 0 wykonuj
  r ← r * 10 + n mod 10
  n ← n div 10
wypisz r

Schemat blokowy:

Schemat blokowy: Odwracanie liczbySchemat blokowy algorytmu: Odwracanie liczby. Te same kroki co w liście kroków i pseudokodzie.STARTwczytaj nr ← 0n > 0TAKr ← r * 10 + n mod 10n ← n div 10NIEwypisz rSTOP
Schemat blokowy: Odwracanie liczby

Najczęstsze błędy

  • Zwykłe dzielenie zamiast całkowitego. W Pythonie n / 10 daje liczbę zmiennoprzecinkową (202.6), a pętla while n > 0 dla 2026 obróci się aż 327 razy i zwróci ułamkowy, błędny wynik. Do odcinania cyfr służy //.
  • Utrata oryginału. Pętla zeruje n, więc po niej nie da się już porównać liczby z odwróconą. Pracuj na kopii (x = n).
  • Zero ma jedną cyfrę. while n > 0 dla zera nie wykona się ani razu, więc licznik cyfr zwróci 0. Obsłuż ten przypadek osobno.
  • Zła kolejność w odwracaniu. odwrocona * 10 + n % 10 trzeba policzyć przed n //= 10, inaczej gubimy ostatnią cyfrę.
  • Liczby ujemne. Dla n < 0 pętla while n > 0 nie startuje. Najpierw weź wartość bezwzględną: n = abs(n).

Ćwicz w przeglądarce

W temacie “Cyfry liczby: suma cyfr, odwracanie, palindromy” kursu Algorytmy z podstawy programowej czekają trzy przykłady do krokowania i cztery zadania, które sprawdzają się automatycznie po uruchomieniu:

Przycisk Krok wykonuje jedną linię, a panel obok pokazuje aktualne wartości n, cyfra i suma, więc widać, jak liczba traci kolejne cyfry. W wersji z funkcją Krok wchodzi do jej środka, a stos wywołań pokazuje, skąd została wywołana. Dalsze algorytmy z tego samego kursu: systemy liczbowe oraz liczby pierwsze i sito Eratostenesa. Pełna lista: algorytmy z podstawy programowej.

Dla nauczycieli

Operacje na cyfrach to idealny temat na pierwsze pętle while: warunek końca jest naturalny (liczba spadła do zera), a uczniowie od razu widzą sens % i //. W BitWizards przydzielasz kurs klasie, udostępniasz tematy stopniowo i widzisz przebieg pisania kodu każdego ucznia (podgląd na żywo i odtwarzanie historii). Platforma jest darmowa dla szkół - jak zacząć. Więcej o tym, gdzie algorytmy leżą w podstawie programowej: informatyka w szkole.

Lekcje do wypróbowania bez logowania

Algorytmy z podstawy programowej

Podstawy C++

Częste pytania

Jak policzyć sumę cyfr liczby w Pythonie?

W pętli while n > 0 bierzemy ostatnią cyfrę jako n % 10, dodajemy ją do sumy i odcinamy dzieleniem całkowitym n //= 10. Pętla kończy się, gdy liczba spadnie do zera. Dla 2026 kolejne cyfry to 6, 2, 0, 2, a suma wynosi 10.

Jak odwrócić liczbę bez zamiany na napis?

Tym samym schematem: dotychczasowy wynik mnożymy przez 10 i dodajemy ostatnią cyfrę liczby (odwrocona = odwrocona * 10 + n % 10), a potem odcinamy tę cyfrę (n //= 10). Z 1234 powstaje kolejno 4, 43, 432 i 4321.

Jak sprawdzić, czy liczba jest palindromem?

Palindrom czyta się tak samo od przodu i od tyłu. Wystarczy odwrócić liczbę i porównać wynik z oryginałem: 12321 po odwróceniu to nadal 12321, więc jest palindromem, a 1231 daje 1321, więc nie jest. Napis w Pythonie można porównać z s[::-1].

Czy nie prościej zamienić liczbę na napis?

W Pythonie sum(int(c) for c in str(n)) też zadziała. Schemat z % 10 i // 10 jest jednak uniwersalny: działa w każdym języku (także w C++), nie tworzy napisu i jest podstawą zamiany liczby na inny system liczbowy. Na sprawdzianie zwykle oczekuje się właśnie jego.

Czy operacje na cyfrach liczby są w podstawie programowej?

Tak. Wyodrębnianie cyfr liczby (z użyciem dzielenia całkowitego i reszty z dzielenia) pojawia się w podstawie programowej informatyki dla klas 7-8 i jest częstym elementem zadań w liceum.

Zacznij już teraz

BitWizards jest darmowy. Wypróbuj demo bez logowania albo zaloguj się do aplikacji, żeby zapisywać postęp na koncie.

Zobacz, jak zacząć