【问题标题】:Python- Card SelectionPython-卡片选择
【发布时间】:2017-03-31 21:07:17
【问题描述】:

我是 python 新手,我试图弄清楚如何询问用户输入,然后使用该输入从一副纸牌中选择一张特定的卡片。这就是我目前所拥有的

cardfaces = []
suits = ["Hearts", "Diamonds", "Clubs", "Spades"]
royals = ["J", "Q", "K", "A"]
deck = []


for i in range(2,11):
    cardfaces.append(str(i))


for j in range(4):
    cardfaces.append(royals[j])



for k in range(4):
    for l in range(13):
        card = (cardfaces[l] + " of " + suits[k])
        deck.append(card)


for m in range(52):
    print(deck[m])
pick=input('Pick a card 1-52 :')

【问题讨论】:

  • 您的问题不够具体。到目前为止,您的代码有什么问题?你有错误吗?是否有一些你找不到语法的功能?

标签: python loops input


【解决方案1】:

我假设您的问题是一旦玩家选择了一个数字,您不知道如何访问所选卡。

如果是这样,你已经接近解决方案了!

当玩家输入一个数字时,您已将其作为字符串存储在pick 变量中。接下来的步骤是:

  1. 将该字符串转换为整数,然后
  2. 在牌组的那个位置找到卡片。

Python 有一个built-in int function,用于将选择从字符串转换为整数。

您的deck 变量是一个列表,要从 Python 中的列表中获取项目,您可以按索引请求该项目。索引是代表该项目位置的数字:

animals = ["cat", "dog", "fish", "pterodactyl]
print(animals[0]) # "cat"
print(animals[1]) # "dog"
print(animals[2]) # "fish"

将此添加到您的代码中应该可以解决问题:

pick = int(pick)
card = deck[pick]
print("Your card is", card)

【讨论】:

    【解决方案2】:

    你快到了!您需要做的就是将卡从deck 中取出。

    pick = input('Pick a card 1-52 :')
    
    card = deck[int(pick)-1]
    
    print("You chose: The {}".format(card))
    

    (嘘!记住,列表从索引0开始,这就是为什么你必须从它-1

    【讨论】:

      【解决方案3】:

      在我看来,您所需要做的就是访问所选卡。

      chosen_card = deck[int(pick)-1]
      

      您需要做更多的事情吗?我通常认为您希望套牌是(套装,等级)对的列表,而不是字符串描述。您可以使用当前代码选择卡片描述,但套牌没有简单的方法将这些描述转换为您可以操作的特征。

      【讨论】:

      • 如果有人输入 52,这不会抛出 IndexOutOfBounds 吗?
      • 现在你会得到一个TypeError :P
      • 不;正如预期的那样,52 给了我“黑桃 A”。你怎么在这里看到了 TypeError?
      • pick-1 是一个str-int,它给了我一个unsupported operand type(s) for -: 'str' and 'int'
      猜你喜欢
      • 2019-08-24
      • 2020-10-31
      • 2019-12-14
      • 2015-10-24
      • 2021-08-26
      • 1970-01-01
      • 1970-01-01
      • 2013-10-04
      • 1970-01-01
      相关资源
      最近更新 更多