Код не выдает выходных данных и продолжает работать

#python #python-3.x

Вопрос:

Я хотел создать код, который дал бы мне все ответы на этот вопрос

Мой код:

 import random 
hen = 3
rooster = 5
boolean = True
lst = []
while boolean == True:
  dicti = {}
  qian = 100
  lst = []
  i = random.randint(1,12)
  i2 = random.randint(4,25)
  i3 = random.choice(list(range(3,85,3)))
  qian -= i3/3
  qian -= i2*hen
  qian -= i*rooster
  if qian == 0:
    if 15*i   9*i2   i3 == 300:
      dicti["chick"] = i3
      dicti["hen"] = i2
      dicti["rooster"] = i
      lst  = [dicti]
  if len(lst) == 4:
    boolean = False
 

У меня есть диапазоны, настроенные на самые высокие числа в разделе ответов по ссылке, которую я предоставил,
но, похоже, это бесконечный цикл, есть идеи, где я ошибся?
Я рад любому ответу.
СПАСИБО ВАМ! 🙂

Комментарии:

1. Возможно, вам следует вывести значение qian в своем цикле и спросить себя, что потребуется, чтобы оно стало равным нулю.

2. Очень маловероятно, что qian когда-либо станет нулевым.

Ответ №1:

цикл никогда не завершится, потому что конечное условие недоступно из-за того, что список пуст в начале цикла. просто отмените строку, в которой список пуст внутри цикла, и он должен работать:

 import random 
hen = 3
rooster = 5
boolean = True
lst = []
while boolean == True:
    dicti = {}
    qian = 100
    i = random.randint(1,12)
    i2 = random.randint(4,25)
    i3 = random.choice(list(range(3,85,3)))
    qian -= i3/3
    qian -= i2*hen
    qian -= i*rooster
    if qian == 0:
        if 15*i   9*i2   i3 == 300:
            dicti["chick"] = i3
            dicti["hen"] = i2
            dicti["rooster"] = i
            lst  = [dicti]
        if len(lst) == 4:
            boolean = False