#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, и он будет добавляться каждый раз, когда вы бросаете кубики.