python中的21点程序

python中的21点程序,python,playing-cards,Python,Playing Cards,我上周刚开始学习编程,我在写21点程序时遇到了麻烦。我可以生成一张牌组列表,但我似乎想不出一种方法来根据21点规则分配牌的值。就像脸牌等于10一样,ace可以是1或1,1,其余的等于它们的面值。我知道我的代码对你们来说可能是一团糟,但我宁愿继续使用它,犯错误并学习,而不是复制和粘贴一个专业的作品。所以你能给我一些分配卡片价值的提示吗,谢谢 这是我到目前为止所拥有的 import random import time deck = [] hand = [] dealer_hand = [] de

我上周刚开始学习编程,我在写21点程序时遇到了麻烦。我可以生成一张牌组列表,但我似乎想不出一种方法来根据21点规则分配牌的值。就像脸牌等于10一样,ace可以是1或1,1,其余的等于它们的面值。我知道我的代码对你们来说可能是一团糟,但我宁愿继续使用它,犯错误并学习,而不是复制和粘贴一个专业的作品。所以你能给我一些分配卡片价值的提示吗,谢谢

这是我到目前为止所拥有的

import random
import time

deck = []
hand = []
dealer_hand = []
def deck_shuffle():
    for suit in ["Clubs", "Dimonds", "Hearts", "Spades"]:
        for face in ["Jack", "Queen", "King", "Ace"]:
            deck.append([face, suit])
        for num in range(2, 11):
            deck.append([num, suit])
    random.shuffle(deck)
    return deck



def deal_cards():
    for x in range(0,2):
        deal_card = deck.pop(0)
        hand.append(deal_card)
        deal_card = deck.pop(0)
        dealer_hand.append(deal_card)



deck_shuffle()
deal_cards()
print (deck)



print("Dealers hand is", dealer_hand)
print("Your hand is", hand)

您可以在此处使用
dict

例如:

>>> card_vals = {"Jack" : 5, "Queen": 15, "King": 20, "Ace":10}
>>> card_vals.update({ x:x for x in range(2,11)})
>>> card_vals["Jack"]
5
>>> card_vals["Jack"]
5
>>> card_vals[2]
2
>>> card_vals[5]
5

我会这样做

class Card:
     def __init__(self,suit,value):
         self.suit = suit
         self.value = value
     def __str__(self):
         return "A,2,3,4,5,6,7,8,9,10,J,Q,K".split(",")[self.value]+" of "+["Clubs", "Dimonds", "Hearts", "Spades"][self.suit]
     def getValue(self):
          if 0 <self.value < 10: return self.value + 1
          if self.value == 0: return 11
          return 10

class Deck:
      def __init__(self):
          self.cards = [Card(i,j) for i in range(4) for j in range(13)]
          self.cards.shuffle()

d = Deck()
print d.cards[0]
print d.cards[0].getValue()        
类卡:
定义初始(自我、适合、价值):
西服
自我价值=价值
定义(自我):
返回“A,2,3,4,5,6,7,8,9,10,J,Q,K”。分割(“,”[self.value]+“+[”梅花“,”钻石“,”红桃“,”黑桃“][self.suit]
def getValue(自身):

如果0很好,我的第一个技巧就是使用标点符号。(并且花更少的时间重复你是一个新手。如果只是把问题弄得一团糟,如果有缺陷,他们会指出给你去解决。)你的问题是什么?在不改变其他一切的情况下给卡片赋值的最好方法是完美的,这对卡片中的数字卡片有效吗@马克你也可以类似地存储数字。这与我分配西装的方法一致吗?@马克只更改你需要某张卡的值的部分(用于计算)是的,这很好,谢谢。是的,我知道我会通过类和其他更有效的代码得到答案,但我还没有使用类的经验,我正在努力坚持我所知道的,而不是混淆我自己。谢谢你的回答