Python

Задача на остаток от деления Python

Здравствуйте! Помогите с задачей.
В институте биоинформатики по офису передвигается робот. Недавно студенты из группы программистов написали для него программу, по которой робот, когда заходит в комнату, считает количество программистов в ней и произносит его вслух: "n программистов".

Для того, чтобы это звучало правильно, для каждого n нужно использовать верное окончание слова.

Напишите программу, считывающую с пользовательского ввода целое число n (неотрицательное), выводящее это число в консоль вместе с правильным образом изменённым словом "программист", для того, чтобы робот мог нормально общаться с людьми, например: 1 программист, 2 программиста, 5 программистов.

В комнате может быть очень много программистов. Проверьте, что ваша программа правильно обработает все случаи, как минимум до 1000 человек.

Вот мое решение :
n=int(input())
p1='программист'
p2='программиста'
p3='программистов'
if n==1 or n==111:
print(n,p1)
elif n==2 or n==3 or n==4:
print(n,p2)
elif n%10==5 or n%10==6 or n%10==7 or n%10==8 or n%10==9 or n%10==0:
print(n,p3)
elif n%100==11 or n%100==12 or n%100==13 or n%100==14 or n%100==15 or n%100==16 or n%100==17 or n%100==18 or n%100==19:
print(n,p3)

Не проходит число например 362. Что не учтено? Помогите пожалуйста, просьба не переписывать мой код, а сказать где в моем написании ошибка или что нужно добавить
Не уверен, что "111 программист" - правильный вариант :)

PS: чем не устраивает типовой вариант?
Существует три варианта склонения:

Если остаток от деления числительного на 10 равен 1.
Например это числа: 1, 21, 31 и т. д. Форма существительного для них будет одинакова: «1 день», «21 билет».

Но, исключение составляет число 11 и заканчивающиеся на 11 числа 111, 211 и т. д. Остаток от деления таких чисел на 10 тоже равен 1, но использовать ту же форму существительного нельзя: «11 день».

Поэтому в функции этот момент должен учитываться.

Если остаток от деления числительного на 10 равен 2, 3 или 4.
Например это числа: 2, 23, 34 и т. д. Форма существительного для них будет тоже одинакова: «22 дня», «4 билета».

Но, опять не обошлось без исключений. Числа 12, 13, 14 и заканчивающиеся на эти цифры числа 114, 212 и т. д. Как и в предыдущем случае, остаток от деления таких чисел на 10 удовлетворяет условию, но форма существительного будет неверна: «14 дня».

Этот момент тоже должен учитываться в функции.

Все остальные остатки от деления числительного на 10, а также исключения из предыдущих двух вариантов — используют третью форму существительного. Примеры: «12 дней», «18 билетов», «111 часов».
Ильгизар Шаймарданов
Ильгизар Шаймарданов
59 353
Лучший ответ
Всё намного проще: особый случай - когда кол-во десятков в числе равно 1; для всех остальных чисел важна только последняя цифра.

p = 'программист' + ['ов', '', 'а', 'а', 'а', 'ов', 'ов', 'ов', 'ов', 'ов'][0 if n // 10 % 10 == 1 else n % 10]
Коля Лопаткин Если брать числа от 1 до 10, то все ок, пишу вот так:

n=int(input())
if n%10==1:
print(n,'программист')
elif n%10==2 or n%10==3 or n%10==4:
print(n,'программиста')
else :
print(n,'программистов')

Добавляю 111, 112, 113, 114, 211, 213 итд

n=int(input())
if n%10==1:
print(n,'программист')
elif n%10==2 or n%10==3 or n%10==4:
print(n,'программиста')
elif n%100==11 or n%100==12 or n%100==13 or n%100==14:
print(n,'программистов')
else :
print(n,'программистов')

и не получается. Пишет 112 программиста. Не понимаю почему ….Помогите пожалуйста
Есть что-то похожее, только с коровами
NK
Nicat Kazimli
83 844
Коля Лопаткин Я сейчас на этом застреваю..
Если брать числа от 1 до 10, то все ок, пишу вот так:

n=int(input())
if n%10==1:
print(n,'программист')
elif n%10==2 or n%10==3 or n%10==4:
print(n,'программиста')
else :
print(n,'программистов')

Добавляю 111, 112, 113, 114, 211, 213 итд

n=int(input())
if n%10==1:
print(n,'программист')
elif n%10==2 or n%10==3 or n%10==4:
print(n,'программиста')
elif n%100==11 or n%100==12 or n%100==13 or n%100==14:
print(n,'программистов')
else :
print(n,'программистов')

и не получается. Пишет 112 программиста. Не понимаю почему ….Помогите пожалуйста