-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_3_1.py
More file actions
64 lines (56 loc) · 2.98 KB
/
Copy pathtest_3_1.py
File metadata and controls
64 lines (56 loc) · 2.98 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
"""
Задание 1.
Реализовать структуру «Рейтинг», представляющую собой не
возрастающий набор натуральных чисел (каждый элемент рядя меньше или больше предыдущего).
У пользователя необходимо запрашивать новый элемент рейтинга.
Если в рейтинге существуют элементы с одинаковыми значениями,
то новый элемент с тем же значением должен разместиться после них.
Подсказка. Например, набор натуральных чисел: 7, 5, 3, 3, 2.
Пользователь ввел число 3. Результат: 7, 5, 3, 3, 3, 2.
Пользователь ввел число 8. Результат: 8, 7, 5, 3, 3, 2.
Пользователь ввел число 1. Результат: 7, 5, 3, 3, 2, 1.
Набор натуральных чисел можно задать непосредственно в коде,
например, my_list = [7, 5, 3, 3, 2].
"""
def insert_rating(rating, new_score):
"""
Вставляет новое значение new_score в рейтинг (список rating),
упорядоченный по невозрастанию.
Если в списке уже есть элементы, равные new_score,
новый элемент помещается после них.
:param rating: list[int] -- исходный рейтинг
:param new_score: int -- новое значение для вставки
:return: list[int] -- обновленный рейтинг
"""
result = rating.copy()
position = len(result)
for idx, val in enumerate(result):
if new_score > val:
# Вставляем перед первым меньшим элементом
position = idx
break
elif new_score == val:
# Сдвигаемся после всех равных элементов
last_eq = idx
while last_eq + 1 < len(result) and result[last_eq + 1] == val:
last_eq += 1
position = last_eq + 1
break
result.insert(position, new_score)
return result
def main():
# Начальный рейтинг
rating = [7, 5, 3, 3, 2]
print("Текущий рейтинг:", rating)
try:
while True:
new = int(input("Введите новый элемент рейтинга (натуральное число): "))
if new <= 0:
print("Пожалуйста, введите натуральное число (>0).")
continue
rating = insert_rating(rating, new)
print("Обновленный рейтинг:", rating)
except KeyboardInterrupt:
print("\nВыход из программы.")
if __name__ == "__main__":
main()