• 1
    Ввод и вывод данных
    • Задачи
  • 2
    Условия
    • Задачи
  • 3
    Цикл for
    • Задачи
  • 4
    Строки
    • Задачи
  • 5
    Цикл while
    • Задачи
  • 6
    Списки
    • Задачи
  • 7
    Двумерные массивы
    • Задачи
  • 8
    Словари
    • Задачи
  • 9
    Множества
    • Задачи
  • 10
    Функции и рекурсия
    • Задачи
  • к

Занятие 3. Цикл for

Уровень сложности:

иконка человека красный иконка человека белая иконка человека зеленая Pythonlib

Задача«Ранги»

Вы с друзьями устроили небольшой турнир по вашей любимой видеоигре "Космические Рейнджеры". Каждый из вас сыграл по одной партии и записал итоговые очки. Теперь перед вами стоит самая сложная задача — не просто найти победителя, а составить полный рейтинг всех участников.

Рейтинг определяется по следующим правилам:

  1. Игрок с самым большим количеством очков получает 1-е место (ранг 1).
  2. Игрок со вторым по величине результатом — 2-е место (ранг 2), и так далее.
  3. Если несколько игроков набрали одинаковое количество очков, они все делят одно и то же место. Например, если два игрока набрали максимальное количество очков, они оба получают ранг 1. Следующий за ними игрок получит уже ранг 3 (так как первые два места заняты).

Напишите программу, которая принимает на вход очки всех игроков и выводит их итоговые ранги в том же порядке.

Требования:
Используйте только базовые конструкции: ввод и вывод данных, условные операторы (if) и циклы for. Постарайтесь не использовать встроенные функции сортировки или другие сложные структуры данных.

Формат ввода

Очки игроков в турнире (одна строка, содержащая целые числа, разделенные пробелом).

Формат Вывода

Ранги для каждого игрока в том же порядке (одна строка, содержащая целые числа, разделенные пробелом).

Пример

Ввод

100 150 120 150 80

Вывод

4 1 3 1 5 

Подсказка

Тут подсказки не будет, решай сам!

main.py
Тест 1
Тест 2
Тест 3
Тест 4
Тест 5
Тест 6
Тест 7
Тест 8
Тест 9
Тест 10
Решение разработчика
# Получаем на вход строку с очками, разделенными пробелами
scores_str = input().split()

# Создаем пустой список, в который будем складывать числовые значения очков
scores = []
# С помощью цикла for проходим по каждому элементу в списке строк
for s in scores_str:
    # Преобразуем каждую строку в целое число и добавляем в список scores
    scores.append(int(s))

# Создаем список для будущих рангов, по размеру такой же, как список очков
# Изначально он может быть заполнен любыми значениями, например, нулями
ranks = [0] * len(scores)

# Главный цикл: проходим по каждому очку в списке, чтобы вычислить его ранг
# Переменная 'i' будет индексом текущего игрока
for i in range(len(scores)):
    # Для каждого очка начинаем считать ранг с 1 (самый высокий ранг)
    current_rank = 1
    # Вложенный цикл: сравниваем текущее очко (scores[i]) со всеми остальными в списке
    # Переменная 'j' будет индексом игрока, с которым мы сравниваем
    for j in range(len(scores)):
        # Если мы находим очко (scores[j]), которое строго больше текущего (scores[i])...
        if scores[j] > scores[i]:
            # ...то ранг нашего текущего игрока 'i' становится хуже, поэтому увеличиваем его на 1
            current_rank += 1
    
    # После сравнения со всеми остальными, записываем вычисленный ранг в список рангов
    # на ту же позицию 'i', где находится очко этого игрока
    ranks[i] = current_rank

# Выводим итоговый список рангов
# Проходим циклом по всем элементам списка ranks
for r in ranks:
    # Печатаем каждый ранг, добавляя после него пробел, чтобы все было в одну строку
    print(r, end=' ')

🎉 Поздравляем! 🎉

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

AD

Реклама

red-snake blue-snake green-snake

Запускаем ваш код...

Помощник ИИ

Привет! Я твой помощник по программированию. Задавай любые вопросы по Python, я могу рассказать о функциях, методах, обьяснить то, что тебе не понятно, а так же о текущей задаче!