Помогите решить задачу минимальными методами для начинающего.
Цикл зависает. Где-то нужно вставить промежуточное условие проверки для остановки цикла.
Или может вообще всё сделать иначе.
"""Лист всех возможностей выигрыша""" possibilities = ['a', 'b', 'c', 'd', 'e', 'g', 'k', 'l'] """Выигрышная комбинация""" winn_list = ['b', 'd', 'g'] """Результат попытки угадать выигрышную комбинацию из листа winn_list и записать её в новый лист""" attempt_list = [] """Пока два листа не равны, перебирать лист возможностей и заполнять лист попытки """ while attempt_list != winn_list: for n in possibilities: attempt_list.append(n) print(attempt_list)
>>> import random >>> >>> """Лист всех возможностей выигрыша""" 'Лист всех возможностей выигрыша' >>> possibilities = ['a', 'b', 'c', 'd', 'e', 'g', 'k', 'l'] >>> """Выигрышная комбинация""" 'Выигрышная комбинация' >>> winn_list = ['b', 'd', 'g'] >>> """Результат попытки угадать выигрышную комбинацию из листа winn_list и записать её в новый лист""" 'Результат попытки угадать выигрышную комбинацию из листа winn_list и записать её в новый лист' >>> attempt_list = [] >>> """Пока два листа не равны, перебирать лист возможностей и заполнять лист попытки """ 'Пока два листа не равны, перебирать лист возможностей и заполнять лист попытки ' >>> >>> i = 0 >>> while attempt_list != winn_list: ... i += 1 ... attempt_list = [] ... for _ in range(len(winn_list)): ... n = random.choice(possibilities) ... attempt_list.append(n) ... if attempt_list != winn_list: ... print('wrong', attempt_list) ... else: ... print('right!', attempt_list) ... wrong ['a', 'd', 'k'] wrong ['k', 'e', 'a'] wrong ['c', 'b', 'd'] wrong ['b', 'c', 'a'] wrong ['k', 'e', 'g'] wrong ['l', 'c', 'b'] wrong ['c', 'e', 'd'] wrong ['k', 'a', 'g'] wrong ['b', 'c', 'b'] wrong ['l', 'g', 'g'] wrong ['k', 'k', 'e'] wrong ['l', 'd', 'g'] wrong ['b', 'b', 'b'] wrong ['b', 'k', 'g'] wrong ['b', 'c', 'b'] wrong ['k', 'l', 'd'] wrong ['a', 'k', 'k'] wrong ['k', 'l', 'd'] wrong ['b', 'l', 'b'] wrong ['d', 'l', 'l'] wrong ['k', 'b', 'c'] wrong ['l', 'k', 'c'] wrong ['e', 'k', 'a'] wrong ['e', 'e', 'b'] wrong ['c', 'c', 'g'] wrong ['e', 'a', 'b'] wrong ['g', 'a', 'k'] wrong ['l', 'b', 'a'] wrong ['g', 'a', 'a'] wrong ['l', 'e', 'g'] wrong ['c', 'a', 'c'] wrong ['b', 'a', 'g'] wrong ['c', 'g', 'b'] wrong ['e', 'c', 'g'] wrong ['g', 'k', 'k'] wrong ['k', 'e', 'g'] wrong ['e', 'k', 'c'] wrong ['e', 'd', 'b'] wrong ['b', 'g', 'l'] wrong ['b', 'g', 'd'] wrong ['b', 'd', 'l'] wrong ['b', 'c', 'g'] wrong ['c', 'a', 'c'] wrong ['c', 'k', 'g'] wrong ['a', 'a', 'c'] wrong ['d', 'd', 'b'] wrong ['l', 'g', 'l'] right! ['b', 'd', 'g'] >>> print(attempt_list, 'attempts =', i) ['b', 'd', 'g'] attempts = 48 >>>
>>> import random >>> >>> # Лист всех возможностей выигрыша ... possibilities = ['a', 'b', 'c', 'd', 'e', 'g', 'k', 'l'] >>> # Выигрышная комбинация ... winn_list = ['b', 'd', 'g'] >>> # Результат попытки угадать выигрышную комбинацию из листа winn_list и записать её в новый лист ... attempt_list = [] >>> # Пока два листа не равны, перебирать лист возможностей и заполнять лист попытки ... i = 0 >>> while attempt_list != winn_list: ... i += 1 ... attempt_list = [] ... for _ in range(len(winn_list)): ... n = random.choice(possibilities) ... attempt_list.append(n) ... if attempt_list != winn_list: ... print('wrong', attempt_list) ... else: ... print('right!', attempt_list) ... wrong ['k', 'b', 'l'] wrong ['d', 'c', 'l'] wrong ['a', 'b', 'a'] wrong ['c', 'e', 'c'] wrong ['a', 'k', 'b'] wrong ['g', 'c', 'k'] wrong ['e', 'l', 'd'] right! ['b', 'd', 'g'] >>> print(attempt_list, 'attempts =', i) ['b', 'd', 'g'] attempts = 8 >>>
sssonyЯ не стал писать минимальными методами, потому что при разработке важно уметь выуживать нужные крупицы информации из тонны всякого разного чужого кода, написанного разными стилями. Это очень частое явление. Поэтому условие выхода из цикла ты можешь найти в этой тонне кода, которую я привёл. Описывай словесно всё, что замечаешь в коде. Вообще, надо научиться делать наоборот - сначала нужно словесно всё описывать, что должно происходить в будущем коде, а потом уже писать код весь, когда это словесное описание готово и всё ясно и понятно выглядит.
Помогите решить задачу минимальными методами для начинающего.