<p>您需要认识到,在创建列表时,python不会传递“变量名”。你知道吗</p>
<p>通过这样做:</p>
<pre><code>spades=[A,B,C,D,E,F,G,H,I,J,K,L,M]
</code></pre>
<p>该列表仅由这些变量所指向的值组成,您只需打印出列表即可看到:</p>
<pre><code>>>> spades
['King of hearts', 'Queen of hearts', 'Jack of hearts', 'Ten of hearts', 'Nine of hearts', 'Eight of hearts', 'Seven of hearts', 'Six of hearts', 'Five of hearts', 'Four of hearts', 'Three of hearts', 'two of hearts', 'ace of hearts']
</code></pre>
<p>如果要获取变量名,可以将其存储为字符串,而不包含以下值:</p>
<pre><code>spades=['A','B','C','D','E','F','G','H','I','J','K','L','M']
</code></pre>
<p>或具有名称和值的元组列表:</p>
<pre><code>spades=[('A',A),('B',B),('C',C),('D',D),('E',E),('F',F),('G',G),('H',H),('I',I),('J',J),('K',K),('L',L),('M',M)]
</code></pre>
<p>然后可以使用以下方法提取值和名称:</p>
<pre><code>name, value = Fa
</code></pre>
<p>虽然这确实更适合于映射,但与索引检索的元素列表不同,您将每个值与一个名称相关联:</p>
<pre><code>spades = {'A':A, 'B':B, 'C':C, 'D':D, 'E':E, 'F':F, 'G':G, 'H':H, 'I':I, 'J':J, 'K':K, 'L':L, 'M':M}
</code></pre>
<p>尽管这会阻止<code>random.choice</code>工作,但您必须将其更改为:</p>
<pre><code>Fa=random.choice(tuple(spades))
</code></pre>
<p>因为<code>random.choice</code>依赖于使用索引来选择随机元素,所以它需要一个序列来正确工作</p>
<p>然后您可以通过捕获<code>.pop</code>的返回值来获取卡片的文本:</p>
<pre><code>card_text = spades.pop(Fa)
</code></pre>
<p>您可能不喜欢传递变量值而不是变量名,但您会意识到它可以大大简化代码,例如,不必执行以下操作:</p>
<pre><code>Da=random.choice(['1', '2', '3','4'])
if(Da=='1'):
Fa=random.choice(clubs)
elif(Da=='2'):
Fa=random.choice(hearts)
elif(Da=='3'):
Fa=random.choice(spades)
elif(Da=='4'):
Fa=random.choice(diamonds)
</code></pre>
<p>你只需为西装选择一个单子,如下所示:</p>
<pre><code>Da=random.choice([clubs,diamonds,hearts,spades])
#Da is now the dict for the selected suit
Fa = random.choice(tuple(Da))
</code></pre>
<p>那么整个while循环可能就是这样:</p>
<pre><code>spades = { 'A': A, 'B': B, 'C': C, 'D': D, 'E': E, 'F': F, 'G': G, 'H': H, 'I': I, 'J': J, 'K': K, 'L': L, 'M': M}
clubs = {'A1':A1, 'B1':B1, 'C1':C1, 'D1':D1, 'E1':E1, 'F1':F1, 'G1':G1, 'H1':H1, 'I1':I1, 'J1':J1, 'K1':K1, 'L1':L1, 'M1':M1}
diamonds = {'A2':A2, 'B2':B2, 'C2':C2, 'D2':D2, 'E2':E2, 'F2':F2, 'G2':G2, 'H2':H2, 'I2':I2, 'J2':J2, 'K2':K2, 'L2':L2, 'M2':M2}
hearts = {'A3':A3, 'B3':B3, 'C3':C3, 'D3':D3, 'E3':E3, 'F3':F3, 'G3':G3, 'H3':H3, 'I3':I3, 'J3':J3, 'K3':K3, 'L3':L3, 'M3':M3}
while(Cardhand != 0):
Cardhand=Cardhand-1
Da=random.choice([clubs,diamonds,hearts,spades])
#Da is now the dict for the selected suit
Fa = random.choice(tuple(Da))
#Fa is the key in that dict, so A or B2 or similar
card_text = Da.pop(Fa)
hand=hand+sep+card_text+sep
</code></pre>