【问题标题】:Treating a string as an integer将字符串视为整数
【发布时间】:2015-06-07 21:44:03
【问题描述】:

我正在尝试制作一个非常简单的二十一点游戏。当你得到两张牌时,如果它们都是整数或字符串,一切都很好,但如果发的两张牌是字符串和整数,我会收到错误。

我怎样才能使如果你得到一个 7 和一个 Q,那么 Q 将被视为 10,给你总共 17?

#imports
import random

Jack = 10
Queen = 10
King = 10
Ace = 1 or 11

Cards = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 'Jack', 'Queen', 'King', 'Ace']
#Faces = Jack, Queen, King, Ace
print('Welcome to Blackjack!\n\nHere are your cards: \n ')
Card1 = random.choice(Cards)
Card2 = random.choice(Cards)
Total = Card1 + Card2
print(Card1,'and a', Card2, '. Your total is', Total)






#print(int(Jack + Ace))

【问题讨论】:

  • 到目前为止你尝试过什么?向我们展示您转换为整数的方法的代码,并解释它失败的原因。

标签: python string int


【解决方案1】:

使用 dict 将卡片映射到值:

Cards = {"1": 1, "2": 2, "3": 3, "4": 4, "5": 5, "6": 6, "7": 7, "8": 8, "9": 9,
         "10": 10, 'Jack': 10, 'Queen': 10, 'King': 10, 'Ace': 10}

#Faces = Jack, Queen, King, Ace
print('Welcome to Blackjack!\n\nHere are your cards: \n ')
keys = list(Cards)
Card1 = random.choice(keys)
Card2 = random.choice(keys)
Total = Cards[Card1] + Cards[Card2]
print(Card1, 'and a', Card2, '. Your total is', Total)

或使用 .items:

Cards = {"1": 1, "2": 2, "3": 3, "4": 4, "5": 5, "6": 6, "7": 7, "8": 8, "9": 9,
         "10": 10, 'Jack': 10, 'Queen': 10, 'King': 10, 'Ace': 10}

#Faces = Jack, Queen, King, Ace
print('Welcome to Blackjack!\n\nHere are your cards: \n ')
c = list(Cards.items())
Card1 = random.choice(c)
Card2 = random.choice(c)
Total = Card1[1] + Card2[1]
print(Card1[0], 'and a', Card2[0], '. Your total is', Total)

【讨论】:

  • 如果您从不使用 Cards2 字典,为什么会有它?
  • @Ryan 没有,那是其他东西留下的
  • 您能解释一下Total = Cards[Card1] + Cards[Card2] 行吗?为什么我不能只使用Total = Card1 + Card2
  • 它在游戏中被用作角色值的映射,如果 Card1 = "Jack",Cards[Card1] 将返回 10,作为一个整数。
  • @Ryan,因为除非你转换为 int,否则你会得到一个连接的字符串,random.choice(keys) 从 dict 返回一个随机键,它是一个字符串,然后我们使用该键来访问整数值所以我们可以总结总数
【解决方案2】:

使用这样的卡片映射:-

import random

Jack = 10
Queen = 10
King = 10
Ace = 1 or 11

Cards_map = {1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, 'Jack': 10, 'Queen': 11, 'King': 12, 'Ace': 13}
Cards=list(Cards_map)
#Faces = Jack, Queen, King, Ace
print('Welcome to Blackjack!\n\nHere are your cards: \n ')
Card1 = random.choice(Cards)
Card2 = random.choice(Cards)
Total = Cards_map[Card1] + Cards_map[Card2]
print(Card1,'and a', Card2, '. Your total is', Total)

【讨论】:

    【解决方案3】:

    使用字典:

    Cards = {1:1, 2:2, 3:3, 4:4, 5:5, 6:6, 7:7, 8:8, 9:9, 10:10, 11:'Jack', 12:'Queen', 13:'King', 14:'Ace'}
    
    print('Welcome to Blackjack!\n\nHere are your cards: \n ')
    Card1 = random.choice(Cards.keys())
    Card2 = random.choice(Cards.keys())
    Total = Card1 + Card2
    print(Cards[Card1],'and a', Cards[Card2], '. Your total is', Total)
    

    【讨论】:

      猜你喜欢
      • 2016-11-26
      • 2021-11-13
      • 1970-01-01
      • 2021-07-17
      • 1970-01-01
      • 2011-06-05
      • 2015-07-04
      • 2012-02-21
      相关资源
      最近更新 更多