Решение задачи о круговом расположении сидений

PythonPythonBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом проекте вы научитесь реализовывать систему управления событиями, похожую на игру, с использованием Python. Цель - определить номер последнего исполнителя в круговом порядке посадки по заданному правилу подсчета.

👀 Предварительный просмотр

$ python party.py
Пожалуйста, введите числовое значение периода отчета x:10
Номер последнего исполнителя: 108
$ python party.py
Пожалуйста, введите числовое значение периода отчета x:18
Номер последнего исполнителя: 254

🎯 Задачи

В этом проекте вы научитесь:

  • Как создавать и управлять файлом Python
  • Как реализовать функцию для имитации процесса подсчета
  • Как определить номер последнего исполнителя в соответствии с заданными требованиями

🏆 Достижения

После завершения этого проекта вы сможете:

  • Разобраться в логике круговой посадки и процесса подсчета
  • Реализовать функцию на Python для решения задачи
  • Запустить программу и получить ожидаемый вывод
  • Применить свои навыки решения задач в реальных сценариях

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/ControlFlowGroup(["Control Flow"]) python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python(("Python")) -.-> python/BasicConceptsGroup(["Basic Concepts"]) python/BasicConceptsGroup -.-> python/variables_data_types("Variables and Data Types") python/BasicConceptsGroup -.-> python/comments("Comments") python/ControlFlowGroup -.-> python/while_loops("While Loops") python/DataStructuresGroup -.-> python/lists("Lists") python/FunctionsGroup -.-> python/function_definition("Function Definition") python/FunctionsGroup -.-> python/arguments_return("Arguments and Return Values") subgraph Lab Skills python/variables_data_types -.-> lab-302749{{"Решение задачи о круговом расположении сидений"}} python/comments -.-> lab-302749{{"Решение задачи о круговом расположении сидений"}} python/while_loops -.-> lab-302749{{"Решение задачи о круговом расположении сидений"}} python/lists -.-> lab-302749{{"Решение задачи о круговом расположении сидений"}} python/function_definition -.-> lab-302749{{"Решение задачи о круговом расположении сидений"}} python/arguments_return -.-> lab-302749{{"Решение задачи о круговом расположении сидений"}} end

Создайте файл party.py

В этом шаге вы создадите файл party.py в директории /home/labex/project. Следуйте шагам ниже, чтобы выполнить этот шаг:

  1. Откройте предпочитаемый текстовый редактор или IDE.
  2. Создайте новый файл с именем party.py в директории /home/labex/project.
cd /home/labex/project
touch party.py
  1. Добавьте следующий код в файл party.py:
## n представляет общее количество людей, x представляет число для исполнения
def game(n, x):
    '''
    Завершите код
    '''

if __name__ == '__main__':
    x = int(input('Пожалуйста, введите числовое значение периода отчета x:'))
    game(263, x)

Этот код устанавливает базовую структуру для файла party.py, включая функцию game() и основной блок выполнения.

Реализуйте функцию game()

В этом шаге вы реализуете функцию game() для определения номера последнего исполнителя. Следуйте шагам ниже, чтобы выполнить этот шаг:

  1. Откройте файл party.py в редакторе кода.

  2. В функции game() инициализируйте список seats, представляющий номера мест для всех людей. Список seats должен содержать числа от 1 до 263.

  3. Инициализируйте переменную index, чтобы отслеживать текущую позицию при подсчете.

  4. Имитируйте процесс подсчета, пока не останется только один человек. Для этого используйте цикл, который повторяет следующие шаги:

    • Вычислите следующую позицию для подсчета, добавив x - 1 к текущему index и взяв остаток от деления на длину списка seats.
    • Удалите человека на вычисленной позиции index из списка seats.
  5. Оставшийся человек в списке seats является последним исполнителем. Выведите номер последнего исполнителя.

Вот полная функция game():

def game(n, x):
    ## Initialize the seat list, representing the seat numbers of all people
    seats = list(range(1, n + 1))
    ## Initialize the index for counting, representing the current position in counting
    index = 0

    ## Simulate counting until only one person is left
    while len(seats) > 1:
        ## Calculate the next position to count
        index = (index + x - 1) % len(seats)
        ## Remove the person who is counted
        seats.pop(index)

    ## The remaining person is the last performer
    last_performer = seats[0]
    print("The number of the last performer is:", last_performer)

Запустите программу

В этом шаге вы запустите программу party.py и укажете значение x, чтобы увидеть номер последнего исполнителя.

  1. Откройте терминал или командную строку.
  2. Перейдите в директорию /home/labex/project.
  3. Запустите программу party.py с использованием следующей команды:
python party.py
  1. При появлении запроса введите числовое значение периода отчета x. Например, вы можете попробовать x = 10 или x = 18.
  2. Программа выведет номер последнего исполнителя.

Вот пример вывода программы:

$ python party.py
Пожалуйста, введите числовое значение периода отчета x:10
Номер последнего исполнителя: 108
$ python party.py
Пожалуйста, введите числовое значение периода отчета x:18
Номер последнего исполнителя: 254

Поздравляем! Вы завершили проект, реализовав функцию game() и запустив программу party.py.

✨ Проверить решение и практиковаться

Резюме

Поздравляем! Вы завершили этот проект. Вы можете практиковаться в более многих лабораторных работах в LabEx, чтобы улучшить свои навыки.