Магия без магии



Давайте научимся математическим приемам, которые нужны на экзамене. Это простые вычислительные лайфхаки.

Задача: найти последнее число всего числа



python
ввод = int(input())

# представим, что ввод - 15 
# тогда можно поделить его на 10 с остатком и вывести только остаток
print(ввод % 10)


Вывод:

txt
>> 15
<< 5


Идеально!

Второй трюк: делится ли 16 на 4?



Используем тот же остаток от деления

python
ввод = int(input())

if ввод % 4 == 0: # если остаток от 16:4 равен 0
     print("Делится")
else:
     print("Есть остаток от деления, значит не делится")


Вывод:

txt
>> 16
<< Делится


Теперь задача



Даётся ряд чисел, конец ряда - 0, надо посчитать всю сумму чисел, которые оканчиваются на 4. Погнали. Ещё закрепим, как считать сумму чисел.

python
sum = 0

while True:
     number = int(input())

     if number == 0:
          break

     if number % 10 == 4:
          sum += number

print(sum)


Кратко объяснение по строчкам: объявляем переменную с суммой, ставим 0. Начинаем цикл while. Ждём ввод числа и записываем в number. Если number = 0, значит - конец. Если остаток от деления number на 10 равен 4, значит оканчивается на 4, тогда прибавляем к общей сумме только что введённое число.

Вывод:

txt
>> 16 
>> 14
>> 24
>> 19
>> 44
>> 0
<< 82


Да кто такие эти ваши



Речь идет про чётные/нечётные числа.

Напомню: чётные числа - числа, которые делятся на 2 без остатка: 2, 4, 128, 52. Нечётные - противоположно: 17, 67, 69


Из определения можно вывести уже формулу: если делится без остатка на 2, значит четное. Давайте посчитаем сумму всех четных чисел, изменив 1 место в коде:

python
sum = 0

while True:
     number = int(input())

     if number == 0:
          break

     if number % 2 == 0: # без остатка на 2 => четное
          sum += number

print(sum)


Вывод:

txt
>> 16 
>> 14
>> 24
>> 19
>> 44
>> 0
<< 98


А вот тут важно



Иногда звучит что-то вроде

Найдите сумму трёхзначных чисел.


Задачка с подвохом, но решаема. Просто надо понять таблицу ниже, вводимое число возьмём за N:

N-ЗначностьОписаниеДиапазон
xxДвухзначныеif 100 > N > 9
xxxТрехзначныеif 1000 > N > 99
xxxxЧетырёхзначныеif 10000 > N > 999


Маленькое пояснение: чтобы понять, сколько знаков в числе, нам нужно загнать рамки. Например двухзначное. Это: 10 (два знака) и больше, но меньше 100, потому что 100 - это три знака. 9 не подходит, потому что это один знак. Поэтому нестрогое неравенство: больше 9 (но не 9), но меньше 100 (но не 100)


То есть, мы просто берем if и начинаем проверять, что число входит в диапазон. Давайте напишем код для практики. Надо вывести количество двухзначных чисел:

python
count = 0

while True:
     number = int(input())

     if number == 0:
          break

     if 100 > number > 9: 
          count += 1

print(count)


Вывод:

txt
>> 19
>> 6
>> 4
>> 10
>> 9
>> 8
>> 0
<< 2


Всё верно: из всех перечисленных чисел двухзначных числа ровно два.

Таблица



Подводя итог теоретической части, хотелось бы показать эту таблицы-шпаргалки. Она группирует большинство условий из задач и даёт объяснение, как делать.

Какой цикл использовать:



УсловиеОбъяснениеКак решать
...Программа получает на вход количество чисел в последовательности...Дают число итераций циклаСначала просим ввести число всех итераций цикла (назовем N) и используем for _ in range(N)
...количество введенных чисел неизвестно, последовательность чисел заканчивается 0 (0  — признак окончания ввода, не входит в последовательность)...Чисел неизвестно, надо "нащупать" конец последовательности (в данном случае "0")Делаем цикл while True + в цикле числа, которые получаем, проверяем через if N == 0: break, тогда цикл завершится, когда введут 0


Кратность, четность, оканчивается на..., мин/макс



УсловиеОбъяснениеКак решать
...программу, которая ... определяет число, оканчивающееся на 4Искать числа где конец - 4: например 14if N % 10 == 4
...программу, которая ... определяет количество чиселСоздать переменную с количеством и увеличивать ее при каждой итерацииcount = 0 ... в цикле: count += 1, при каждом числе
...программу, которая ... определяет сумму чиселСоздать переменную sum и суммировать еёsum = 0 ... в цикле: sum += N
...программу, которая ... определяет чёт/нечёт числаИскать чёт/нечёт числаif N % 2 == 0 без остатка - это чётное, с остатком - нечётное
...программу, которая ... определяет мин/макс числаСравнивать мин/макс с переменными, которые создали до этогоДля максимального: if N > max, то перезаписать max на N, для минимального меняется только знак и max -> min
...программу, которая ... определяет N-значные числаНа внимательностьПо таблице выше


Ты - 💪



Давайте объективно: вы узнали почти всё, что нужно на экзамене. Если вы читали вдумчиво, то у вас сейчас достаточно знаний, чтобы решить 16 задание. Переходите на следующий пост - там будет 100% практики и ничего нового.