Найти - Пользователи
Полная версия: Задача: угадать известную выигрышную комбинацию ещё раз в другом списке
Начало » Python для новичков » Задача: угадать известную выигрышную комбинацию ещё раз в другом списке
1
sssony
Помогите решить задачу минимальными методами для начинающего.
Цикл зависает. Где-то нужно вставить промежуточное условие проверки для остановки цикла.
Или может вообще всё сделать иначе.
sssony
 """Лист всех возможностей выигрыша"""
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)
sa
а в чем смысл задания? напиши полностью задание
В твоем коде первый внешний цикл while с условием список attempt_list не равен списку winn_list , это условие никогда не станет false. всегда true, бесконечный цикл.
Вложенный цикл for перебирает список possibilities, получает текущий элемент списка и добавляет его в список attempt_list. По окончанию цикла for, attempt_list заполняется полной копией списка possibilities, затем внешний цикл дает второй проход, добавляет еще раз список, и так бесконечное число раз.
ты смотрел в отладке что делает твой код?
Нужно задание, не понятно каким образом нужно заполнить пустой список attempt_list чтобы он стал равен winn_list, вышел из внешнего цикла и выполнил последнюю строку print вывел результат
py.user.next
Это перебор с подсвечиванием всех попыток
  
>>> 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
Помогите решить задачу минимальными методами для начинающего.
Я не стал писать минимальными методами, потому что при разработке важно уметь выуживать нужные крупицы информации из тонны всякого разного чужого кода, написанного разными стилями. Это очень частое явление. Поэтому условие выхода из цикла ты можешь найти в этой тонне кода, которую я привёл. Описывай словесно всё, что замечаешь в коде. Вообще, надо научиться делать наоборот - сначала нужно словесно всё описывать, что должно происходить в будущем коде, а потом уже писать код весь, когда это словесное описание готово и всё ясно и понятно выглядит.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB