У меня возникают проблемы с получением моего while l oop в l oop снова и снова в Python. Вот проблема / вопрос, который я пытаюсь решить:
Реализуйте функцию roll_dice
в hog.py
.
- Она принимает два аргумента: положительное целое число, называемое
num_rolls
задает количество бросков кубиков и функцию dice()
. - Возвращает количество очков, набранных при броске кубиков такое количество раз за ход: либо сумма результатов, либо 1 (также известный как ' Pig Out ': если любой из результатов игры в кости равен 1, текущий счет игрока за ход равен 1). Чтобы получить единичный результат броска кости, наберите
dice()
. Вы должны вызвать dice()
ровно num_rolls
раз в теле roll_dice. Не забудьте коллировать dice()
ровно num_rolls
раз, даже если «Pig Out» происходит в середине розыгрыша. Таким образом, вы правильно имитируете бросание всех кубиков вместе.
Вот мой код, где num_rolls
: количество бросков кубиков, которые будут сделаны, и dice()
: функция который имитирует результат броска одной кости.
def roll_dice(num_rolls, dice=six_sided):
current_roll = 0
while current_roll < num_rolls:
current_roll += 1
total_sum = 0
current_value = dice()
if current_value == 1 or total_sum == 1:
total_sum = 1
return total_sum
else:
total_sum += current_value
return total_sum
Когда я отлаживаю в PyCharm, в моем примере, когда он случайным образом выбирает current_value = 4, общая сумма = 4, а current_roll = 1, даже когда требуемое количество циклы - это num_rolls = 5. Это означает, что он зациклен только один раз, тогда как должен быть l oop 5 раз. Может ли кто-нибудь дать представление о том, почему это может быть? Я делал настройку раньше, когда current_value = dice()
находился за пределами while l oop, и я переместил его внутрь while l oop, и я думал, что это исправит, но это не так.
Также , дайте мне знать, если я могу внести какие-либо пояснения. Я начинаю учиться и не умею объяснять