Получить сумму списка - PullRequest
0 голосов
/ 18 июня 2020

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

import random
from random import shuffle

# Define the deck
def deck1():
    hand = []
    deck = {"Two": 2, "Three": 3, "Four": 4, "Five": 5, "Six": 6, "Seven": 7, "Eight": 8, 
            "Nine": 9, "Ten": 10, "Jack": 11, "Queen": 12, "King": 13, "Ace": 14}
    keys = list(deck.keys())
    random.shuffle(keys)
    shuffled = keys.pop()
    hand.append(shuffled)
    return hand

Create the user hand

userhand = []
for i in range(2):
    userhand.append(deck1())
print(userhand)

# Get the sum of the user hand
print(sum(userhand))

1 Ответ

3 голосов
/ 18 июня 2020

Сначала вам нужна dect = {...} внешняя функция, потому что она необходима для суммирования карт

Я предполагаю, что userhand сохраняет двух игроков

for player in userhand:
    print(sum(deck[cardname] for cardname in player))

или дольше, но проще для новичков

for player in userhand:
    result = 0
    for cardname in player:
        result += deck[cardname]
    print(result)

Если userhand оставить только одного игрока, вы можете вложить sum()

print( sum(sum(deck[cardname] for cardname in hand) for hand in userhand) )

или больше, но проще для новичков

total_result = 0

for hand in userhand:
    result = 0
    for cardname in hand:
        result += deck[cardname]
    total_result += result    

print(total_result)

Или вы можете использовать return shuffled в deck1(), потому что он возвращает только одну карту и нет необходимости возвращать ее как список. Это создаст более простые данные в userhand, и для их суммирования потребуется более простой код.


Минимальный рабочий код

import random
from random import shuffle

deck = {"Two": 2, "Three": 3, "Four": 4, "Five": 5, "Six": 6, "Seven": 7, "Eight": 8, 
        "Nine": 9, "Ten": 10, "Jack": 11, "Queen": 12, "King": 13, "Ace": 14}

# Define the deck
def deck1():
    hand = []
    keys = list(deck.keys())
    random.shuffle(keys)
    shuffled = keys.pop()
    hand.append(shuffled)
    return hand

userhand = []
for i in range(2):
    userhand.append(deck1())
print(userhand)

# Get the sum of the user hand
for player in userhand:
    print(sum(deck[cardname] for cardname in player))

for player in userhand:
    result = 0
    for cardname in player:
        result += deck[cardname]
    print(result)

print( sum(sum(deck[cardname] for cardname in hand) for hand in userhand) )


total_result = 0
for hand in userhand:
    result = 0
    for cardname in hand:
        result += deck[cardname]
    total_result += result    
print(total_result)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...