【问题标题】:How to convert string value into int value in python如何在python中将字符串值转换为int值
【发布时间】:2016-08-17 22:13:04
【问题描述】:

我正在尝试在 python 中制作二十一点游戏。就像 7s 的值是 7 但千斤顶的值是 10 所以:

cards = ['ace','king','queen'....'3','2'

firstCard = random.choice(cards)

secondCard = random.choice(cards); remove.cards(firstCard)

print(int(firstCard) + int(secondCard))

非常适合数字

我怎么能为国王或王牌做到这一点......

【问题讨论】:

标签: python python-3.x


【解决方案1】:

可以使用字典,键是'ace''king''queen',值是对应的数值。根据您的游戏规则,您可以按照自己的意愿映射键和值。

mydict = {"ace": 1, "king": 13, "queen": 12}

num_of_queen = mydict["queen"]  # gets the numeric value

【讨论】:

    【解决方案2】:

    使用字典会有所帮助!

    cards =  {1:"ace": 1, 13:"king", 12:"queen"}
    
    firstCard = random.choice(cards.keys())
    
    secondCard = random.choice(cards.keys()); 
    
    remove.cards(firstCard)
    
    print(firstCard + secondCard)
    

    要获取卡的名称,您可以:

    cards[firstCard]
    

    【讨论】:

      【解决方案3】:

      我建议将常规字典包装在一个类中以使其更易于使用:

      class BlackJackDeck:
          class NoSuchCard(Exception):
              pass
      
          values = {'king': 10,
                    'jack': 10,
                    'queen': 10,
                    'ace-high': 11,
                    'ace-low': 1}
          values.update(zip(range(2, 11), range(2, 11)))
      
          def __getitem__(self, item):
              try:
                  item = int(item)
              except (ValueError, TypeError):
                  item = item.lower()
      
              try:
                  return self.values[item]
              except KeyError:
                  raise self.NoSuchCard
      

      演示:

      >>> d = BlackJackDeck()
      >>> d[2]
      2
      >>> d['7']
      7
      >>> d['KING']
      10
      >>> d['ace-high']
      11
      >>> d[100]
      [...]
      
      Traceback (most recent call last):
        File "<stdin>", line 1, in <module>
        File "...", line 21, in __getitem__
          raise self.NoSuchCard
      d.NoSuchCard
      

      这允许您通过整数或字符串键查找卡片,不关心大小写,并且在卡片不存在时抛出有意义的异常。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-04-23
        • 2016-01-14
        • 2022-07-28
        • 1970-01-01
        • 1970-01-01
        • 2011-04-28
        • 1970-01-01
        相关资源
        最近更新 更多