Вводится трехзначное число. Написать программу, которая вычисляет сумму его цифр.
Например, если было введено 349, программа должна вывести на экран число 16, так как 3 + 4 + 9 = 16.
Как извлечь отдельные цифры из числа? Если число разделить нацело на десять, в остатке будет последняя цифра этого числа. Например, если 349 разделить нацело на 10, то получится частное 34 и остаток 9. Если потом 34 разделить также, получится частное 3 и остаток 4; далее при делении 3 на 10 получим частное 0 и остаток 3.
В языках программирования почти всегда есть две операции:
1) нахождение целого при делении нацело,
2) нахождение остатка при делении нацело.
В языке программирования Python первая операция обозначается //
(двумя знаками деления), а вторая — %
(знаком процента). Например:
>>> 34 // 10
3
>>> 34 % 10
4
Алгоритм нахождения суммы цифр трехзначного числа abc (где a — сотни, b — десятки и c — единицы) можно описать так:
- Найти остаток от деления abc на 10, записать его в переменную d1. Это будет цифра c.
- Избавиться от цифры c в числе abc, разделив его нацело на 10.
- Найти остаток от деления ab на 10, записать его в переменную d2. Это будет цифра b.
- Избавиться от цифры b в числе ab, разделив его нацело на 10.
- Число a однозначное. Это еще одна цифра исходного числа.
- Сложить оставшееся число a со значениями переменных d1 и d2.
n = input("Введите трехзначное число: ")
n = int(n)
d1 = n % 10
n = n // 10
d2 = n % 10
n = n // 10
print("Сумма цифр числа:", n + d2 + d3)
Пример выполнения программы:
Введите трехзначное число: 742
Сумма цифр числа: 13
Однако, если нам известно, что число состоит из трех разрядов (цифр), есть немного другой способ извлечения цифр из числа:
- Остаток от деления на 10 исходного числа дает последнюю цифру числа.
- Если найти остаток от деления на 100 исходного числа, то мы получи последние две цифры числа. Далее следует разделить полученное двухзначное число нацело на 10, и у нас окажется вторая цифра числа.
- Если исходное трехзначное число разделить нацело на 100, то получится первая цифра числа.
n = input("Введите трехзначное число: ")
n = int(n)
d1 = n % 10
d2 = n % 100 // 10
d3 = n // 100
print("Сумма цифр числа:", d1 + d2 + d3)
В Python данную задачу можно решить без использования арифметических действий, а путем извлечения из исходной строки отдельных символов с последующим их преобразованием к целому.
n = input("Введите трехзначное число: ")
# Извлекается первый[0] символ строки,
# преобразуется к целому.
# Аналогично второй[1] и третий[2].
a = int(n[0])
b = int(n[1])
c = int(n[2])
print("Сумма цифр числа:", a + b + c)
Задача может быть усложнена тем, что число вводится не пользователем с клавиатуры, а должно быть сгенерировано случайно. Причем обязательно трехзначное число.
В этом случае надо воспользоваться функциями randint()
, randrange()
или random()
из модуля random
. Первым двум функциям передаются диапазоны: randint(100, 999)
, randrange(100, 1000)
. Получить трехзначное число, используя random()
немного сложнее:
# Функция random генерирует
# случайное дробное число от 0 до 1
from random import random
# При умножении на 900 получается случайное
# число от 0 до 899.(9).
# Если прибавить 100, то получится
# от 100 до 999.(9).
n = random() * 900 + 100
# Отбрасывается дробная часть,
# число выводится на экран
n = int(n)
print(n)
# Извлекается старший разряд числа
# путем деления нацело на 100
a = n // 100
# Деление нацело на 10 удаляет
# последнюю цифру числа.
# Затем нахождение остатка при
# делении на 10 извлекает последнюю цифру,
# которая в исходном числе была средней.
b = (n // 10) % 10
# Младший разряд числа находится
# как остаток при делении нацело на 10.
c = n % 10
print(a+b+c)