如何创建一副牌

嗨,你好啊。谢谢你的帮助。
我正在尝试使用列表和词典,并希望制作一本纸牌词典作为我的最终结果。
我知道我可以手写出来,但这是一个练习,这样我就可以学习数据等知识。(这不是家庭作业,我只是在学习Python。
我到目前为止所取得的成就。
我已经设法制作了一张卡片名称及其相关价值的嵌套列表。即[['红心2',2]等。
这是我的代码。
我想知道是否有任何建议可以改进它。
谢谢
米格尔
另外,我知道王牌有不止一个值,但我会尽快解决这个问题。

选择 | 换行 | 行号
  1. ##Declare a basic list of items that all cards will have
  2. cards = [['2',2], ['3',3], ['4',4],
  3.             ['5',5], ['6',6], ['7',7], ['8',8], ['9',9],
  4.             ['10',10], ['Jack',10], ['Queen',10], ['King',10], ['Ace',11]]
  5.  
  6. ##declare a separate list for each suit
  7. hearts = []
  8. clubs = []
  9. spades =[]
  10. diamonds =[]
  11.  
  12. ##Now create the list of cards for each suit
  13. for x,y in cards:
  14.     hearts_row=[]
  15.     clubs_row=[]
  16.     spades_row=[]
  17.     diamonds_row=[]
  18.     for item in cards[0][0]:
  19.         hearts_row.append(x + ' of hearts')
  20.         hearts_row.append(y)
  21.  
  22.         clubs_row.append(x + ' of clubs')
  23.         clubs_row.append(y)
  24.  
  25.         spades_row.append(x + ' of spades')
  26.         spades_row.append(y)
  27.  
  28.         diamonds_row.append(x + ' of diamonds')
  29.         diamonds_row.append(y)
  30.  
  31.     hearts.append(hearts_row)
  32.     clubs.append(hearts_row)
  33.     spades.append(hearts_row)
  34.     diamonds.append(hearts_row)
  35.  
  36.  
  37. ##combine all suits into one deck
  38.  
  39.  
  40. deck = hearts + clubs + spades + diamonds
  41. ##Print Deck
  42. print (deck)
  43.  
  44.  

这是我的输出!
[['心之2',2],['心之3',3],['心之4',4],['心之5',5],['心之6',6],['心之7',7],['心之8',8],['心之9',9],['心之10',10],['心之杰克',10],['心之王',10],['心之王',10],['心之王',11],['心之2',2],['心之3',3],['心之4',4],['心之5',5],['心之6',6],['心之7',7],['心之8',8],['心之9',9],['心之10',10],['心之杰克',10],['心之王',10],['心之王',10],['心之王',11],['心之2',2],['心之3',3],['心之4',4],['心之5',5],['心之6',6],['心之7',7],['心之8',8],['心之9',9],['心之10',10],['心之杰克',10],['心之王',10],['心之王',10],['心之王',11],['心之2',2],['心之3',3],['心之4',4],['心之5',5],['心之6',6],['心之7',7],['心之8',8],['心之9',9],['心之10',10],['红心杰克',10],['红心女王',10],['红心之王',10],['红心王牌',11]]

# 回答1


给你,伙计,这是更简单的方法。
我将带你经历思考的过程:
1.首先概述您所拥有的:卡片价值、卡片套装:

选择 | 换行 | 行号
  1. card_values = ['2','3','4','5','6','7','8','9','10','Jack','Queen','King','Ace']
  2. card_suites = ['Hearts', 'Clubs', 'Diomands', 'Spades']
  3.  

2.然后你需要组合这些列表(乘以它们),但仍然将它们保留在一个列表中。您知道您需要同时循环两个列表,这意味着您有两个for-循环。在Python中,列表理解是一种很好的方式。起初很难理解(对我来说是这样),但最终你会越来越多地练习它。

选择 | 换行 | 行号
  1. result = [[v + ' of ' + s,v] for s in card_suites for v in card_values]
  2.  

结果中的输出如下所示:

选择 | 换行 | 行号
  1. [[v + ' of ' + s,v] for s in card_suites for v in card_values]
  2. [['2 of Hearts', '2'], ['3 of Hearts', '3'], ['4 of Hearts', '4'], ['5 of Hearts', '5'], ['6 of Hearts', '6'], ['7 of Hearts', '7'], ['8 of Hearts', '8'], ['9 of Hearts', '9'], ['10 of Hearts', '10'], ['Jack of Hearts', 'Jack'], ['Queen of Hearts', 'Queen'], ['King of Hearts', 'King'], ['Ace of Hearts', 'Ace'], ['2 of Clubs', '2'], ['3 of Clubs', '3'], ['4 of Clubs', '4'], ['5 of Clubs', '5'], ['6 of Clubs', '6'], ['7 of Clubs', '7'], ['8 of Clubs', '8'], ['9 of Clubs', '9'], ['10 of Clubs', '10'], ['Jack of Clubs', 'Jack'], ['Queen of Clubs', 'Queen'], ['King of Clubs', 'King'], ['Ace of Clubs', 'Ace'], ['2 of Diomands', '2'], ['3 of Diomands', '3'], ['4 of Diomands', '4'], ['5 of Diomands', '5'], ['6 of Diomands', '6'], ['7 of Diomands', '7'], ['8 of Diomands', '8'], ['9 of Diomands', '9'], ['10 of Diomands', '10'], ['Jack of Diomands', 'Jack'], ['Queen of Diomands', 'Queen'], ['King of Diomands', 'King'], ['Ace of Diomands', 'Ace'], ['2 of Spades', '2'], ['3 of Spades', '3'], ['4 of Spades', '4'], ['5 of Spades', '5'], ['6 of Spades', '6'], ['7 of Spades', '7'], ['8 of Spades', '8'], ['9 of Spades', '9'], ['10 of Spades', '10'], ['Jack of Spades', 'Jack'], ['Queen of Spades', 'Queen'], ['King of Spades', 'King'], ['Ace of Spades', 'Ace']]
  3.  

整个过程只用了三行代码!

选择 | 换行 | 行号
  1. values = ['2','3','4','5','6','7','8','9','10','Jack','Queen','King','Ace']
  2. suites = ['Hearts', 'Clubs', 'Diomands', 'Spades']
  3. deck = [[v + ' of ' + s,v] for s in suites for v in values]
  4.  

你可能会说,你错过了杰克·奎恩和金的价值观!阿!我会把这个留给你作为练习,但如果你想不出来,我会在这里帮助你,或者发布另一个问题。提示:把值表变成一本词典。

# 回答2


非常感谢dlite922。我觉得自己像一个业余爱好者在问这些问题,很高兴看到Python可以用这么少的代码做到这一点。
米格尔

标签: python

添加新评论