这是一个基于文本的纸牌游戏。你知道吗
我一直在尝试让python从数组中随机选择一个变量,并将该变量的名称存储在Fa
。但是,它只存储变量Fa
的值,而不存储变量的名称。你知道吗
我的代码:
import random
k='King'
q='Queen'
j='Jack'
t='Ten'
n='Nine'
e='Eight'
s='Seven'
i='Six'
f='Five'
u='Four'
h='Three'
w='two'
a='ace'
c='of clubs'
d='of diamonds'
p='of spades'
r='of hearts'
#clubs
A1=k+' '+c
B1=q+' '+c
C1=j+' '+c
D1=t+' '+c
E1=n+' '+c
F1=e+' '+c
G1=s+' '+c
H1=i+' '+c
I1=f+' '+c
J1=u+' '+c
K1=h+' '+c
L1=w+' '+c
M1=a+' '+c
#diamonds
A2=k+' '+d
B2=q+' '+d
C2=j+' '+d
D2=t+' '+d
E2=n+' '+d
F2=e+' '+d
G2=s+' '+d
H2=i+' '+d
I2=f+' '+d
J2=u+' '+d
K2=h+' '+d
L2=w+' '+d
M2=a+' '+d
#spades
A3=k+' '+p
B3=q+' '+p
C3=j+' '+p
D3=t+' '+p
E3=n+' '+p
F3=e+' '+p
G3=s+' '+p
H3=i+' '+p
I3=f+' '+p
J3=u+' '+p
K3=h+' '+p
L3=w+' '+p
M3=a+' '+p
#hearts
A=k+' '+r
B=q+' '+r
C=j+' '+r
D=t+' '+r
E=n+' '+r
F=e+' '+r
G=s+' '+r
H=i+' '+r
I=f+' '+r
J=u+' '+r
K=h+' '+r
L=w+' '+r
M=a+' '+r
clubs=[A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1]
diamonds=[A2,B2,C2,D2,E2,F2,G2,H2,I2,J2,K2,L2,M2]
hearts=[A3,B3,C3,D3,E3,F3,G3,H3,I3,J3,K3,L3,M3]
spades=[A,B,C,D,E,F,G,H,I,J,K,L,M]
CardTotal=len(clubs)
X=''
Da=''
Fa=''
sep='\n And \n'
hand=''
Cardhand=7
while(Cardhand != 0):
Cardhand=Cardhand-1
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)
hand=hand+sep+Fa+sep
if(Fa in clubs):
clubs.pop(Fa)
elif(Fa in diamonds):
diamonds.pop(Fa)
elif(Fa in hearts):
hearts.pop(Fa)
elif(Fa in spades):
spades.pop(Fa)
Da=''
Fa=''
cards=[clubs,diamonds,hearts,spades]
如果我听懂了,那就用字典吧
从我的示例复制代码:
您需要认识到,在创建列表时,python不会传递“变量名”。你知道吗
通过这样做:
该列表仅由这些变量所指向的值组成,您只需打印出列表即可看到:
如果要获取变量名,可以将其存储为字符串,而不包含以下值:
或具有名称和值的元组列表:
然后可以使用以下方法提取值和名称:
虽然这确实更适合于映射,但与索引检索的元素列表不同,您将每个值与一个名称相关联:
尽管这会阻止
random.choice
工作,但您必须将其更改为:因为
random.choice
依赖于使用索引来选择随机元素,所以它需要一个序列来正确工作然后您可以通过捕获
.pop
的返回值来获取卡片的文本:您可能不喜欢传递变量值而不是变量名,但您会意识到它可以大大简化代码,例如,不必执行以下操作:
你只需为西装选择一个单子,如下所示:
那么整个while循环可能就是这样:
问题在于您的数据结构:
clubs=[A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1]
将只在数组中包含变量的值。如果您还想拥有变量名,我建议将其更改为dict
,并将key
作为变量名。示例:Edit:(根据Ishaq Khan的建议,for python3
clubs.keys()
返回一个dict_keys
不可iterable的对象)random.choice(clubs)
会变成random.choice(list(clubs.keys()))
。你知道吗相关问题 更多 >
编程相关推荐