создание переменного числа переменных и заполнение их из списка - PullRequest
3 голосов
/ 04 ноября 2019

Я пытаюсь создать несколько переменных одновременно.

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

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

Это работает как яхотелось бы;но предполагается, что я знаю количество рук для создания

Deck = ["AC","AH","AS","AD","KC","KH","KS","KD"]
Hand1 = [Deck.pop(),Deck.pop()]
Hand2 = [Deck.pop(),Deck.pop()]
...
HandN = [Deck.pop(),Deck.pop()]

print("Hand1: ", Hand1)
print("Hand2: ", Hand2)
...
print("HandN: ", HandN)

Я хочу сделать то же самое, но вместо этого спросить пользователя, сколько рук создать, что-то вроде:

Deck = ["AC","AH","AS","AD","KC","KH","KS","KD"]
NumberOfHands = int(input("How Many Hands? "))

for each in range(1,NumberOfHands+1):
    Hand+str(each) = [DeckList.pop(),DeckList.pop]

for each in range(1,NumberOfHands+1):
    print(Hand+str(each))

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

Я видел несколько других вопросов, которые выглядят аналогично и намекают на то, как это сделать со словарем;но для меня не имеет смысла применять его для такого сценария ...

Спасибо за вашу помощь!

Ответы [ 2 ]

2 голосов
/ 04 ноября 2019

Вот как это сделать с помощью dict:

hands = {f"Hand{each + 1}": [Deck.pop(), Deck.pop()] for each in range(NumberOfHands)}

Это создаст dict размером NumberOfHands, содержащий все руки от 1 до NumberOfHands

1 голос
/ 04 ноября 2019

Вы можете сделать это

Но вы не должны

Deck = ["AC","AH","AS","AD","KC","KH","KS","KD"]
NumberOfHands = int(input("How Many Hands? "))
for n in range(1,NumberOfHands+1):
  globals()["Hand" + str(n)] = [Deck.pop(),Deck.pop()]

for n in range(1,NumberOfHands+1):
    print( globals()['Hand{}'.format(n)])

пример:

How Many Hands? 4
['KD', 'KS']
['KH', 'KC']
['AD', 'AS']
['AH', 'AC']

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

Рассмотрите этот хороший блог для чтения: http://stupidpythonideas.blogspot.com/2013/05/why-you-dont-want-to-dynamically-create.html

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