fork download
  1. def units(n, cases):
  2. n = abs(n)
  3. word = ''
  4. if n % 10 == 1 and n % 100 != 11:
  5. word = cases['nom']
  6. elif (n % 10 >= 2) and (n % 10 <= 4) and (n % 100 < 10 or n % 100 >= 20):
  7. word = cases['gen']
  8. else:
  9. word = cases['plu']
  10. return word
  11.  
  12.  
  13. def test(cases):
  14. nums = [0, 21, 303, 658]
  15. for num in nums:
  16. print(num, units(num, cases))
  17. print()
  18.  
  19.  
  20. year = {
  21. 'nom': 'год',
  22. 'gen': 'года',
  23. 'plu': 'лет',
  24. }
  25.  
  26. month = {
  27. 'nom': 'месяц',
  28. 'gen': 'месяца',
  29. 'plu': 'месяцев',
  30. }
  31.  
  32. day = {
  33. 'nom': 'день',
  34. 'gen': 'дня',
  35. 'plu': 'дней',
  36. }
  37.  
  38. hour = {
  39. 'nom': 'час',
  40. 'gen': 'часа',
  41. 'plu': 'часов',
  42. }
  43.  
  44. minute = {
  45. 'nom': 'минута',
  46. 'gen': 'минуты',
  47. 'plu': 'минут',
  48. }
  49.  
  50. second = {
  51. 'nom': 'секунда',
  52. 'gen': 'секунды',
  53. 'plu': 'секунд',
  54. }
  55.  
  56.  
  57. test(year)
  58. test(month)
  59. test(day)
  60. test(hour)
  61. test(minute)
  62. test(second)
  63.  
Success #stdin #stdout 0.02s 9984KB
stdin
Standard input is empty
stdout
0 лет
21 год
303 года
658 лет

0 месяцев
21 месяц
303 месяца
658 месяцев

0 дней
21 день
303 дня
658 дней

0 часов
21 час
303 часа
658 часов

0 минут
21 минута
303 минуты
658 минут

0 секунд
21 секунда
303 секунды
658 секунд