3 варианта у существительных после числительных.
Правила простые:
оканчивается на 1, но не на 11
оканчивается на 2 3 4, И НЕ в диапазоне 10-20(включительно)
все остальные
формы слов отвечают числам 1,2,5
например:
1 ворона
2 вороны
5 ворон
берем остаток от деления нужного число на 10 и на 100 и пробегаем по условиям.
так можно любые числа проверять, а не до 1000, включая отрицательные
words = ['ворона', 'вороны', 'ворон']
def plural(num, words):
if num == 0:
return words[2]
d10 = num % 10
d100 = num % 100
if d10 == 1 and d100 != 11:
return words[0]
elif (2 <= d10 <= 4) and (d100 < 10 or d100 > 20):
return words[1]
else:
return words[2]
num = 21
print(num, plural(num, words))