Новая Школа - онлайн-школа подготовки к ЕГЭ
Задача Задача №2959634
А
Аноним
14 марта 2025 16:01 · публичный вопрос
А
Аноним

напиши на питоне следующую прогу. На входе число учеников. На выходе - прога пишет это число и дописывает " учеников", если так правильно склонять. Иначе - другие правильные…

Запрос пользователя

Напиши на питоне следующую прогу. На входе число учеников. На выходе - прога пишет это число и дописывает " учеников", если так правильно склонять. Иначе - другие правильные окончания. а также лет и годов. Например, стаж 1941 год, 1940 лет. Чтобы не получалось как в мамонтова: "Стаж: Общий стаж 47 года Стаж по специальности 41 лет "

Ответ нейросети
14 марта 2025 16:01

Давайте создадим программу на Python, которая будет правильно склонять слова "ученик", "год" и "лет" в зависимости от числового значения. Мы будем использовать некоторые правила русского языка для определения правильного окончания.

Ниже приведен код с пояснениями:

def get_sklonenie_ucenik(uch):
    if 10 <= uch % 100 <= 20:
        return "учеников"
    elif uch % 10 == 1:
        return "ученик"
    elif uch % 10 in [2, 3, 4]:
        return "ученика"
    else:
        return "учеников"

def get_sklonenie_god(year):
    if 10 <= year % 100 <= 20:
        return "лет"
    elif year % 10 == 1:
        return "год"
    elif year % 10 in [2, 3, 4]:
        return "года"
    else:
        return "лет"

def main():
    # Вводим число учеников
    num_ucenikov = int(input("Введите число учеников: "))
    print(f"{num_ucenikov} {get_sklonenie_ucenik(num_ucenikov)}")

    # Вводим общий стаж
    obshchiy_stazh = int(input("Введите общий стаж (в годах): "))
    print(f"Общий стаж: {obshchiy_stazh} {get_sklonenie_god(obshchiy_stazh)}")

    # Вводим стаж по специальности
    stazh_po_spec = int(input("Введите стаж по специальности (в годах): "))
    print(f"Стаж по специальности: {stazh_po_spec} {get_sklonenie_god(stazh_po_spec)}")

if __name__ == "__main__":
    main()

Объяснение кода

  1. Функция get_sklonenie_ucenik(uch):

    • Принимает число учеников и определяет правильное окончание слова "ученик" на основе числа. Мы используем остаток от деления для анализа последней цифры и двух последних цифр числа.
  2. Функция get_sklonenie_god(year):

    • Подобна предыдущей функции, но для склонения слова "год" и "лет". Определяет, в каком формате выводить стаж в зависимости от величины числа.
  3. Функция main():

    • Запрашивает ввод числа учеников, общего стажа и стажа по специальности у пользователя.
    • Выводит результат с правильными окончаниями.

Пример работы программы:

Введите число учеников: 21
21 ученик
Введите общий стаж (в годах): 47
Общий стаж: 47 лет
Введите стаж по специальности (в годах): 1
Стаж по специальности: 1 год

Это помогает избежать грамматических ошибок и делает вывод более естественным.

Обсуждение

2 сообщения
А
Аноним

с помощью range

Нейросеть14 марта 2025 16:03

Если вы хотите использовать range в программе, это может быть полезно, например, если вы хотите предложить пользователю ввести несколько значений. С помощью range можно обработать несколько входных данных в цикле.

Вот обновленная версия программы, которая использует range для ввода нескольких значений:

def get_sklonenie_ucenik(uch):
    if 10 <= uch % 100 <= 20:
        return "учеников"
    elif uch % 10 == 1:
        return "ученик"
    elif uch % 10 in [2, 3, 4]:
        return "ученика"
    else:
        return "учеников"

def get_sklonenie_god(year):
    if 10 <= year % 100 <= 20:
        return "лет"
    elif year % 10 == 1:
        return "год"
    elif year % 10 in [2, 3, 4]:
        return "года"
    else:
        return "лет"

def main():
    # Ввод числа учеников
    num_ucenikov = int(input("Введите число учеников: "))
    print(f"{num_ucenikov} {get_sklonenie_ucenik(num_ucenikov)}")

    # Ввод общего стажа
    total_stazh = []
    for i in range(3):  # Предлагаем ввести стаж 3 раза
        obshchiy_stazh = int(input(f"Введите общий стаж (в годах) для {i + 1}-го случая: "))
        total_stazh.append(obshchiy_stazh)

    for stazh in total_stazh:
        print(f"Общий стаж: {stazh} {get_sklonenie_god(stazh)}")

    # Ввод стажа по специальности
    special_stazh = []
    for i in range(3):  # Предлагаем ввести стаж по специальности 3 раза
        stazh_po_spec = int(input(f"Введите стаж по специальности (в годах) для {i + 1}-го случая: "))
        special_stazh.append(stazh_po_spec)

    for stazh in special_stazh:
        print(f"Стаж по специальности: {stazh} {get_sklonenie_god(stazh)}")

if __name__ == "__main__":
    main()

Объяснение изменений

  1. Использование for i in range(3):

    • Мы используем цикл for для ввода общего стажа и стажа по специальности три раза. Вы можете изменить значение 3 на любое другое число, если хотите больше или меньше итераций.
  2. Сбор стажа в списки:

    • Мы собираем введенные значения в списки total_stazh и special_stazh, а затем выводим их с помощью второго цикла for.

Пример работы программы:

Введите число учеников: 21
21 ученик
Введите общий стаж (в годах) для 1-го случая: 5
Введите общий стаж (в годах) для 2-го случая: 22
Введите общий стаж (в годах) для 3-го случая: 15
Общий стаж: 5 лет
Общий стаж: 22 года
Общий стаж: 15 лет
Введите стаж по специальности (в годах) для 1-го случая: 3
Введите стаж по специальности (в годах) для 2-го случая: 1
Введите стаж по специальности (в годах) для 3-го случая: 0
Стаж по специальности: 3 года
Стаж по специальности: 1 год
Стаж по специальности: 0 лет

Это уменьшает количество повторяющегося кода и делает его более структурированным.