Создание списка в цикле - PullRequest
0 голосов
/ 01 апреля 2020

Я создал игру в стиле «вдохновителя», в которой пользователь угадывает точную последовательность чисел, генерируемых компьютером.

Я хотел добавить функцию, в которой предыдущие догадки были сохранены, чтобы их можно было воспроизвести пользователю перед тем, как сделать следующее предположение

В моей голове и с текущим макетом программы я подумал, что было бы хорошо, если бы я мог создать серию «pul» (предыдущий список пользователей).

Например, по мере выполнения l oop и увеличения переменной "count" списки соответствующим образом именуются.

cl, список компьютеров

ul, список пользователей

ol, список вывода

pul, список предыдущего пользователя

, когда count = 0, пользовательские входы создают ul = [1, 3, 4, 8]

pul_0 = ul

'# so pul_0 = [1, 3, 4, 8]

и когда count = 1, пользователь создает новый список для ul = [2, 2, 9, 0]

pul_1 = ul

'# so pul_1 = [2, 2, 9, 0]

' # и, конечно, pul_0 все еще = [1, 3, 4, 8]

An Спасибо за помощь, спасибо заранее.

Вот немного кода, чтобы дать больше деталей, полная программа внизу, чтобы дать больше контекста, если это необходимо.

n = int(input("how many numbers to guess? (normally 4)"))

att = int(input("how many attempts? (normally 10)"))

count = 0
while count < att:

    ul = [int(input()) for i in range(n)]

    pul(count) = ul

    count = count + 1

Я прочитал немного об использовании словарей, чтобы решить эту проблему, но не заставил их работать для меня создать списки уникальных имен для -l oop в python

{'pul_{}'.format(count):[] for i in ul}

полная программа ниже


n = int(input("how many numbers to guess? (normally 4)"))

att = int(input("how many attempts? (normally 10)"))

cl = [randint(0, 9) for i in range(n)]

wincount = 0
count = 0

while count < att:

    print(att-count, "attempts remaining. Please enter",n, "numbers, pressing enter between each")

    ul = [int(input()) for i in range(n)]



    wincount = 0
    nearcount = 0
    for i in range (n):

        if cl[i] == ul[i]:
            wincount = wincount + 1

        for j in range (n):
            if cl[i] == ul[j]:
                nearcount += 1

    nearcount = nearcount - wincount

    if wincount == n:
        print("winner")
        count = att + 1

    if wincount != n:
        print("you have", wincount,"correct numbers in the correct positions")
        print("you have a further", nearcount,"correct numbers, but they are in the wrong positions")
        count = count + 1




if count == att:

    print("no more attempts, game over")
    print("btw the correct answer was", cl)
elif count == att + 1:
    print("nice 1")


'''



I have read a small amount about using a dictionary to try and solve this issue, but i played around with it a little and didn't get very far.

Thanks in advance!

1 Ответ

0 голосов
/ 01 апреля 2020

Вот ваш модифицированный код

n = int(input("how many numbers to guess? (normally 4)"))
att = int(input("how many attempts? (normally 10)"))
count = 0
pul = {}  # here're your previous lists, currently empty
while count < att:
    ul = [int(input()) for i in range(n)]
    pul[count] = ul  # you can use more flexible key value, as you mentioned
    count = count + 1
    # if you need to replay lists - you just use your "pul" dict
for i in range(count):
    print(f'your № {i} list was {pul.get(i)}')  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...