如何让我的代码根据设置的条件返回True或False



我以前问过这个问题,但由于我没有得到关于应该在哪里更改代码的明确答复,我将在这里再次问这个问题:(

所以我试图分析我的列表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']

我该换什么??

注意:后面的字符可以是从数字到字母再到特殊字符的任何字符。

h是一个字符串列表。这使得x成为单个字符串

因此,x[1] == 'r'list()是一个内置的Python函数,您正在使用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}

最新更新