добавление python не добавляется в список

#python #arraylist

#python #arraylist

Вопрос:

Я пытаюсь изучить python и в настоящее время работаю с базовым сценарием броска кубиков. 2 бросайте кубики, пока они оба не достигнут 6. когда он напечатает количество бросков, которое потребовалось для достижения определенного [6: 6] .

это повторяется еще 2 раза, как показано с

 for x in range(3):
        roll_dice()
  

Моя проблема в том, что когда я пытаюсь суммировать список выполнения, он выводит только последнее количество бросков кости. Я думаю, что мой run.append(count) не обновляется, а сбрасывается, как только он снова проходит цикл?

Я понимаю, что остальная часть моего кода, вероятно, действительно неэффективна, но все еще находится на ранних стадиях обучения.

 import random

def roll_dice():
    dice_one = 0
    dice_two = 0
    count = 0
    run = []
    while True:
        dice_one = random.randrange(1,7)
        dice_two = random.randrange(1,7)
        count  = 1
        print(dice_one, " ", dice_two)

        if dice_one    dice_two == 12:
            print("----", count, "attempts----")
            break
    run.append(count)
    print(sum(run))

for x in range(3):
        roll_dice()
  

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

1. Мне просто нравится отступ =)

Ответ №1:

Как указывали другие, run.append(count) вызывается вне While цикла. Из-за этого для запуска добавляется только последнее обновленное значение count . Перемещая элемент run.append(count) внутри While цикла, он будет обновляться каждый раз при выполнении цикла.

Ответ №2:

Просто поместите run.append(count) в цикл while:

 import random

def roll_dice():
    dice_one = 0
    dice_two = 0
    count = 0
    run = []
    while True:
        dice_one = random.randrange(1,7)
        dice_two = random.randrange(1,7)
        count  = 1
        print(dice_one, " ", dice_two)

        if dice_one    dice_two == 12:
            print("----", count, "attempts----")
            break
        run.append(count)
    print(sum(run))

for x in range(3):
        roll_dice()
  

Ответ №3:

print(sum(run)) выводит только последнее количество бросков кости, потому run.append(count) что находится вне цикла while. Он вызывается только один раз при каждом вызове функции. Поместите его в цикл while, и он будет добавляться каждый раз, когда вы бросаете кубики.