Добавить номер к случайному элементу в задаче цикла списка - PullRequest
0 голосов
/ 21 января 2019

введите описание изображения здесь Этот простой метод должен с каждым циклом добавлять число к случайному элементу в списке, но после процесса я получил сумму, большую или меньшую, чем у меня был цикл при добавлении +1. Вот мой код и принтскрин. Заранее спасибо за помощь.

looplength = 20
inputlist = [0,0,0,0,0]

import random

def addrandom(n):
    n[random.choice(range(len(n)))] += 1


for x in range(b):
    addrandom(a)


OUT = a

EXMPLES

desired effect example:
    input list = [0,0,0,0]
    looplength = 20
    result = [5,6,4,5]    
    sum(result) = looplength

actual example:
    input list = [0,0,0,0]
    looplength = 20
    result = [5,6,6,5]    
    sum(result) =! looplength

1 Ответ

0 голосов
/ 21 января 2019

Посмотрите на фрагмент кода ниже:

import random


def addrandom(lst, n):
    for _ in range(n):
        lst[random.choice(range(len(lst)))] += 1
    return lst

looplength = 20
inputlist  = [0, 0, 0, 0, 0]

res = addrandom(inputlist, looplength)

, который производит:

print(res)  # -> [5, 3, 3, 6, 3]

Как видно из этого прогона, он действительно приводит к списку, элементы которого составляют до looplength (5 + 3 + 3 + 6 + 3 = 20)


Ваш код немного неортодоксален по моему скромному мнению.

  • Вместо вызова функции в каждом цикле, почему бы не иметь цикл внутри функции?

  • Во-вторых, не возвращая ничего, что вы рассчитываете на то, что список будет изменен на месте, что только добавляет путаницы читателю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...