嗨,你好啊。谢谢你的帮助。
我正在尝试使用列表和词典,并希望制作一本纸牌词典作为我的最终结果。
我知道我可以手写出来,但这是一个练习,这样我就可以学习数据等知识。(这不是家庭作业,我只是在学习Python。
我到目前为止所取得的成就。
我已经设法制作了一张卡片名称及其相关价值的嵌套列表。即[['红心2',2]等。
这是我的代码。
我想知道是否有任何建议可以改进它。
谢谢
米格尔
另外,我知道王牌有不止一个值,但我会尽快解决这个问题。
- ##Declare a basic list of items that all cards will have
- cards = [['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',11]]
-
- ##declare a separate list for each suit
- hearts = []
- clubs = []
- spades =[]
- diamonds =[]
-
- ##Now create the list of cards for each suit
- for x,y in cards:
- hearts_row=[]
- clubs_row=[]
- spades_row=[]
- diamonds_row=[]
- for item in cards[0][0]:
- hearts_row.append(x + ' of hearts')
- hearts_row.append(y)
-
- clubs_row.append(x + ' of clubs')
- clubs_row.append(y)
-
- spades_row.append(x + ' of spades')
- spades_row.append(y)
-
- diamonds_row.append(x + ' of diamonds')
- diamonds_row.append(y)
-
- hearts.append(hearts_row)
- clubs.append(hearts_row)
- spades.append(hearts_row)
- diamonds.append(hearts_row)
-
-
- ##combine all suits into one deck
-
-
- deck = hearts + clubs + spades + diamonds
- ##Print Deck
- print (deck)
-
-
这是我的输出!
[['心之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.首先概述您所拥有的:卡片价值、卡片套装:
- card_values = ['2','3','4','5','6','7','8','9','10','Jack','Queen','King','Ace']
- card_suites = ['Hearts', 'Clubs', 'Diomands', 'Spades']
-
2.然后你需要组合这些列表(乘以它们),但仍然将它们保留在一个列表中。您知道您需要同时循环两个列表,这意味着您有两个for-循环。在Python中,列表理解是一种很好的方式。起初很难理解(对我来说是这样),但最终你会越来越多地练习它。
- result = [[v + ' of ' + s,v] for s in card_suites for v in card_values]
-
结果中的输出如下所示:
- [[v + ' of ' + s,v] for s in card_suites for v in card_values]
- [['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']]
-
整个过程只用了三行代码!
- values = ['2','3','4','5','6','7','8','9','10','Jack','Queen','King','Ace']
- suites = ['Hearts', 'Clubs', 'Diomands', 'Spades']
- deck = [[v + ' of ' + s,v] for s in suites for v in values]
-
你可能会说,你错过了杰克·奎恩和金的价值观!阿!我会把这个留给你作为练习,但如果你想不出来,我会在这里帮助你,或者发布另一个问题。提示:把值表变成一本词典。
# 回答2
非常感谢dlite922。我觉得自己像一个业余爱好者在问这些问题,很高兴看到Python可以用这么少的代码做到这一点。
米格尔