Всем доброго времени суток. Уважаемые кодеры.
Я сейчас прохожу начальные курсы по пайтону и там была вот такая вот задачка:
В институте биоинформатики по офису передвигается робот. Недавно студенты из группы программистов написали для него программу, по которой робот, когда заходит в комнату, считает количество программистов в ней и произносит его вслух: "n программистов".
Для того, чтобы это звучало правильно, для каждого n нужно использовать верное окончание слова.
Напишите программу, считывающую с пользовательского ввода целое число n (неотрицательное), выводящее это число в консоль вместе с правильным образом изменённым словом "программист", для того, чтобы робот мог нормально общаться с людьми, например: 1 программист, 2 программиста, 5 программистов.
В комнате может быть очень много программистов. Проверьте, что ваша программа правильно обработает все случаи, как минимум до 1000 человек.
Дополнительный комментарий к условию:
Обратите внимание, что задача не так проста, как кажется на первый взгляд. Если ваше решение не проходит какой-то тест, это значит, что вы не рассмотрели какой-то из случаев входных данных (число программистов 0 ≤ n ≤ 1000). Обязательно проверяйте свои решения на дополнительных значениях, а не только на тех, что приведены в условии задания.
Я набросал код, все вроде как работало, но не проверил на числа 21, 31, 41 и т.п.
То есть мой код при вводе 21, выдавал вместо 21 программист, 21 программистов.
Также было и с числом допустим 994, мой код выдавал 994 программистов, вместо 994 программиста.
Все остальное работало. Один участник курсов, написал мне ответ, но не хочет объяснять как он вывел формулу правильного вычисления.
Вот код:tp = int(input('Введите число: '))
if tp < 0:
print('Ошибка, введите положительное число')
elif tp % 10 == 1 and tp % 100 != 11: # Формула 1
print(tp, 'программист')
elif tp % 10 >= 2 and tp % 10 <= 4 and (tp % 100 < 10 or tp % 100 > 20): # Формула 2
print(tp, 'программиста')
else:
print(tp, 'программистов')
Формулу под номером 1 я понял, то есть если остаток числа n равен 1 и остаток не равен 11, то это программист.
Во второй формуле я понял только, что если остаток n больше или равен 2 и меньше или равен 4, то это программиста, а вот вторую часть формулы не как не могу понять.
Если кому не трудно уделить 5-10 минут времени, дайте пожалуйста внятное объяснение.Заранее большое спасибо за ответы.