Python 如何从类中的列表返回字符串数组
我想从列表中返回一个由字符串类型字符组成的数组,目前我的程序正在将每次迭代直接打印到shell中这是我当前的输出: **我需要的输出是:**Python 如何从类中的列表返回字符串数组,python,arrays,string,list,class,Python,Arrays,String,List,Class,我想从列表中返回一个由字符串类型字符组成的数组,目前我的程序正在将每次迭代直接打印到shell中这是我当前的输出: **我需要的输出是:** 2 C, 3 C, 4 C, 5 C, 6 C, 7 C, 8 C, 9 C, T C, J C, Q C, K C, A C, 2 D, 3 D, 4 D, 5 D, 6 D, 7 D, 8 D, 9 D, T D, J D, Q D, K D, A D, 2 H, 3 H, 4 H, 5 H, 6 H, 7 H, 8 H, 9 H, T H, J H,
2 C, 3 C, 4 C, 5 C, 6 C,
7 C, 8 C, 9 C, T C, J C,
Q C, K C, A C, 2 D, 3 D,
4 D, 5 D, 6 D, 7 D, 8 D,
9 D, T D, J D, Q D, K D,
A D, 2 H, 3 H, 4 H, 5 H,
6 H, 7 H, 8 H, 9 H, T H,
J H, Q H, K H, A H, 2 S,
3 S, 4 S, 5 S, 6 S, 7 S,
8 S, 9 S, T S, J S, Q S,
K S, A S
我尝试实现for循环和计数器,但没有成功。。。这是我的代码:
import random
class Card:
def __init__(self, rank, suit): # initialize number variables here
self._rank = rank
self._suit = suit
def __str__(self): #overload this to get a readable string representation of our card object
return str(self._rank) + ' ' + str(self._suit)
def __eq__(self, other):
if self._rank == other._rank:
return True
def __ne__(self, other):
if self._rank != other._rank:
return True
class Deck:
def __init__(self):
# create a list of card objects only need to pass in self
#intialize a string or list of suits
#intialize a string or list of ranks
# building the list of cards
self._deck = []
self._dealt = []
suits = ['S', 'C', 'D', 'H']
ranks = ['2', '3' , '4', '5', '6', '7' , '8', '9','T', 'J' , 'Q', 'K', 'A']
for suit in suits:
for rank in ranks:
self._deck.append(Card(rank,suit))
def __str__(self):
return ', \n'.join(str(i) for i in self._deck)
感谢您的帮助,我们将不胜感激。暴力方式是一个循环:
def __str__(self):
s = []
for n in range(0,len(self._deck),5):
s.append( ' '.join(str(i) for i in self._deck[n:n+5] )
return '\n'.join(s)
有关将牌组分组为5张牌的信息,请参阅。然后,您可以使用,
将卡加入一个区块,并使用,\n
将区块加入
def __str__(self):
n = 5
return ',\n'.join(', '.join(self._deck[i:i + n]) for i in range(0, len(self._deck), n))
一种方法是在for循环中使用逻辑排序操作,该操作保持每行输出数量的计数:
ctr=0
对于甲板上的d:
ctr+=1
打印(d,结束=',')
#检查是否每行最多打印5个字符
如果ctr==5:
#打印新行
打印()
#初始中心
ctr=ctr%5
预期输出遵循的模式是什么?5个卡对象,然后是新行
def __str__(self):
n = 5
return ',\n'.join(', '.join(self._deck[i:i + n]) for i in range(0, len(self._deck), n))