@ekengerlinskii

Как согласовать числительное с существительным?

На входе даётся произвольное число. Нужно написать код чтобы согласовать его со словом "Студент"? Где ошибка?
Код выглядит примерно так:
n = int(input())

k = 0;
copy = n;

while(copy > 0):
    k += 1
    copy = copy // 10

power = k - 1;

if (n % 10 == 1):
    print(n, " студент")
elif (n % 10^power >= 5 and n % 10^power <= 9 or n - pow(10,power) >= 10 and n - pow(10,power) <= 19 or n % 10 == 0):
    print(n, "студентов")
elif (n % 10 >= 2 and n % 10 <= 4):
    print(n, "студента")

        
#1, 21, 31, 41, 51, 101,  студент
#2, 3, 4, 22, 23, 24 студента
# 10, 20, 30, 110, 200, 11, 12, 13 ... 19, 111, 112, 113 ... 119 студентов
  • Вопрос задан
  • 383 просмотра
Решения вопроса 1
@twistfire92
Python backend developer
У вас есть 3 варианта.
Почти вся логика сводится к проверке остатка от деления на 10.
но выбиваются числа 11-14. Их следует проверить отдельно.

studenta = [2, 3, 4]
studentov = [0, 5, 6, 7, 8, 9]

count = int(input())

if 11 <= count%100 <=14:
    print(count, 'студентов')
elif count%10 in studenta:
     print(count, 'студента')
elif count%10 in studentov:
     print(count, 'студентов')
else:
     print(count, 'студент')


Код не проверял, но примерная суть должна быть понятна
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Peter-ya
Здесь все просто
number = 3
p = morph.parse("студент")[0]
print(f"{number} {p.make_agree_with_number(int(number)).word}")
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы