我之前问过这个问题,但是由于我没有得到一个非常明确的回应,我应该在哪里修改我的代码,我将在这里再次问这个问题:)
所以我试着分析我的列表h,看看这个列表中的x是否是元素中第一个字符的两对
所以举个例子
['AS', 'AD', 'CC', 'CH', 'CS'] returns False because there are 3 C and 2 , but there are supposed to be 2 of the same elements and one of a completely different element.
['AS', 'AD', 'SC', 'SH', 'CS'] returns True because there are 2 A, 2 S and one C.
['CS', 'CD', 'AC', 'AH', 'FS'] returns True because there are 2 C, 2 A and one F
['AS', 'CD', 'AC', 'CH', 'DS'] returns False because although there are two A, two C and one D, the A and C are not in order到目前为止我的密码是..。
def two_pairs(h):
for x in h:
pairing = list[x[1]]
if (pairing[1] == pairing[2]) and (pairing[3] == (pairing[4])):
return True
if (pairing[3] == pairing[4]) and (pairing[0] == (pairing[1])):
return True
if (pairing[0] == pairing[1]) and (pairing[3] == (pairing[4])):
return True
else:
return False
print(two_pairs(['9r, 9♣, 4♠, 4♣, 10♣']))这根本不起作用,我收到一条错误信息,上面写着
if (pairing[1] == pairing[2]) and (pairing[3] == (pairing[4])):
TypeError: There are no type variables left in list['r']我该换什么??
注意:后面的字符可以是从数字到字母到特殊字符的任何内容。
发布于 2021-12-09 06:26:13
h是一个字符串的列表。这使x成为单个字符串。
因此,x[1] == 'r'和list()是一个内置的list['r']函数,您正在用list['r']进行索引,这对于您想要做的工作来说不是有效的语法。
您在上一篇文章中接受的答案似乎是做您想做的事情,输入是一个字符串列表,而不是一个字符串列表。
例如,从print(two_pairs(['9r', '9♣', '4♠', '4♣', 10♣']))开始,但是这些字符串中没有一个超过两个字符,所以它仍然会在pairing[2]周围失败,例如
是它们在元素中第一个字符的两对
从这个开始
l = ['AS', 'AD', 'CC', 'CH', 'CS']
first = l[0][0]
print(2 == sum(x.count(first) for x in l)) # True或者也许
l = ['AS', 'AD', 'CC', 'CH', 'CS']
firsts = [x[0] for x in l]
print({f: sum(x.count(f) for x in l) for f in firsts}) # {'A': 2, 'C': 4}https://stackoverflow.com/questions/70285495
复制相似问题