Уведомления

Группа в Telegram: @pythonsu

#1 Март 29, 2024 09:36:51

sssony
Зарегистрирован: 2023-08-02
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Задача: угадать известную выигрышную комбинацию ещё раз в другом списке

Помогите решить задачу минимальными методами для начинающего.
Цикл зависает. Где-то нужно вставить промежуточное условие проверки для остановки цикла.
Или может вообще всё сделать иначе.

Офлайн

#2 Март 29, 2024 09:37:01

sssony
Зарегистрирован: 2023-08-02
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Задача: угадать известную выигрышную комбинацию ещё раз в другом списке

 """Лист всех возможностей выигрыша"""
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)

Отредактировано sssony (Март 29, 2024 10:00:23)

Офлайн

#3 Март 29, 2024 19:09:30

sa
Зарегистрирован: 2024-03-16
Сообщения: 9
Репутация: +  1  -
Профиль   Отправить e-mail  

Задача: угадать известную выигрышную комбинацию ещё раз в другом списке

а в чем смысл задания? напиши полностью задание
В твоем коде первый внешний цикл while с условием список attempt_list не равен списку winn_list , это условие никогда не станет false. всегда true, бесконечный цикл.
Вложенный цикл for перебирает список possibilities, получает текущий элемент списка и добавляет его в список attempt_list. По окончанию цикла for, attempt_list заполняется полной копией списка possibilities, затем внешний цикл дает второй проход, добавляет еще раз список, и так бесконечное число раз.
ты смотрел в отладке что делает твой код?
Нужно задание, не понятно каким образом нужно заполнить пустой список attempt_list чтобы он стал равен winn_list, вышел из внешнего цикла и выполнил последнюю строку print вывел результат

Офлайн

#4 Март 30, 2024 23:19:58

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9807
Репутация: +  852  -
Профиль   Отправить e-mail  

Задача: угадать известную выигрышную комбинацию ещё раз в другом списке

Это перебор с подсвечиванием всех попыток

  
>>> 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
Помогите решить задачу минимальными методами для начинающего.
Я не стал писать минимальными методами, потому что при разработке важно уметь выуживать нужные крупицы информации из тонны всякого разного чужого кода, написанного разными стилями. Это очень частое явление. Поэтому условие выхода из цикла ты можешь найти в этой тонне кода, которую я привёл. Описывай словесно всё, что замечаешь в коде. Вообще, надо научиться делать наоборот - сначала нужно словесно всё описывать, что должно происходить в будущем коде, а потом уже писать код весь, когда это словесное описание готово и всё ясно и понятно выглядит.



Отредактировано py.user.next (Март 30, 2024 23:32:13)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version