
Системное администрирование
помогите пожалуйста !!!!
Написать программу на языке Python

Приведенный ниже код на Python позволяет пользователю ввести количество игр, а затем вводить названия игр. Если игра уже была введена, программа выведет сообщение "Повтор", иначе - "Принято". Для этого используется список, в который добавляются названия игр, и множество, в котором хранятся уникальные значения игр.
Код можно переписать в одну строку с использованием генератора списка и проверкой длины списка игр и множества уникальных игр:
n = int(input()) # Ввод количества игр
games = [] # Создание пустого списка для игр
unique_games = set() # Создание пустого множества для уникальных игр
for i in range(n):
game = input() # Ввод названия игры
games.append(game) # Добавление игры в список
unique_games.add(game) # Добавление игры в множество уникальных игр
if len(games) == len(unique_games):
print("Принято")
else:
print("Повтор")
Этот код использует список и множество для хранения названий игр, что позволяет уменьшить использование памяти и ускорить выполнение программы.Код можно переписать в одну строку с использованием генератора списка и проверкой длины списка игр и множества уникальных игр:
print("Принято" if len(games := [input() for _ in range(int(input()))]) == len(set(games)) else "Повтор")
Этот код использует генератор списка для ввода названий игр и создания списка games. Затем он проверяет, равна ли длина списка games длине множества уникальных игр, и выводит соответствующее сообщение.В точном соответствии с условиями задачи:
1) Накапливается весь список, хотя неуникальные элементы не нужны. И после накопления этот список пробегается ещё раз, чтобы построить множество.
2) Элементы читаются до конца, хотя при обнаружении первого повтора обработку можно прекращать.
Первый недостаток исправляется так:
А первый и второй вместе - вот так:
gs = list(map(input, ('',) * int(input())))
print(['Повтор', 'Принято'][len(set(gs)) == len(gs)])
Но у решения есть недостатки:1) Накапливается весь список, хотя неуникальные элементы не нужны. И после накопления этот список пробегается ещё раз, чтобы построить множество.
2) Элементы читаются до конца, хотя при обнаружении первого повтора обработку можно прекращать.
Первый недостаток исправляется так:
from functools import reduce
def cnt(t, x): s, r = t; return (s | {x}, r and x not in s)
_, r = reduce(cnt, map(input, ('',) * int(input())), (set(), True))
print(['Повтор', 'Принято'][r])
А первый и второй вместе - вот так:
from itertools import accumulate, repeat, takewhile
from operator import itemgetter
def cnt(t, x): s, r = t; return (s | {x}, r and x not in s)
n = int(input())
*_, (s, _) = takewhile(itemgetter(1), accumulate(map(input, repeat('', n)), cnt, initial=(set(), True)))
print(['Повтор', 'Принято'][len(s) == n])
n = int(input())
games = []
for i in range(n):
game = input()
if game in games:
print("Повтор")
else:
print("Принято")
games.append(game)
В этой программе сначала запрашивается количество игр, а затем в цикле запрашиваются названия игр. Если название игры уже есть в списке games, то выводится сообщение “Повтор”, иначе выводится сообщение “Принято” и название игры добавляется в список games.
Слава Лебедев
Только есть нюанс. Нужно не n раз напечатать "Повтор" или "Принято", а 1 раз по итогам обработки всех данных.
В задаче плохая подсказка. Просто используй множество, при вводе новой игры смотри, есть ли она уже в множестве. Если нет, то добавляй. Если есть то выводи что повтор
Похожие вопросы
- Помогите пожалуйста написать программу на языке python
- Как написать программу на пайтоне чтобы она вычислила какие координаты принадлежат закрашенной области
- Как люди создали первую программу и программный язык?
- Помогите, пожалуйста, программа Python
- Бот в дискорд написанный на python заходит в канал и молчит
- Какой первый язык программирования учить? Python?
- Зачем сисадмину php/python?
- Помогите с задачей python
- Какие языки программироване нужно изучить чтобы написать свою ОС ?
- Можно ли говорить о несовместимости программ? Есть ли такое понятие?