当前位置: 首页 > 知识库问答 >
问题:

如何让输出根据列表的输入返回True或False?

桂学
2023-03-14

所以我有一个列表hand,它的数据是这样的['AS','AD','AC','CH','CS']。现在我必须找到列表中每个元素的第一个字符,看看是否有3个相同的字母和2个相同的字母。

注意:它们必须是有序的。。总是像x,x,x,y,y或y,y,x,x,x。任何其他组合,如x,y,y,x,x或x,y,x,y,x将返回False

比如说

['AS','AD','AC','CH','CS']返回True,因为有3个A和2个C。

['AS','SD','SC','CH','CS']返回False,因为顺序不对

['CS','CD','AC','AH','AS']返回True,因为有3个A和2个C

['AS'、'CD'、'DC'、'AH'、'CS']返回False,因为没有一个字符出现3次和2次。

这是我到目前为止的代码,它不起作用...

hand = ['AS', 'AD', 'AC', 'CH', 'CS']
updated_hands = list([x[1] for x in hand])
if ((updated_hands[0] == updated_hands[1] == updated_hands[2]) or (updated_hands[2] == updated_hands[3] == updated_hands[4])) and ((updated_hands[3] == updated_hands[4]) or (updated_hands[0] == updated_hands[1])):
    print('True')
else:
    print('False')

我应该对此进行哪些更改?

共有3个答案

严兴言
2023-03-14
    Lets Make it Simple.

    hand = ['AS', 'AD', 'AC', 'CH', 'CS']
    a = [sorted(han[0][0]) for han in hand] 
    
    import itertools
    b = itertools.chain(*a)
    c = list(b)
    
    d = [han[0][0] for han in hand] 
    
    if c == d:
    print(True)
    else:
    print(False)
=======================================================================
You Can Get Any List From user.

您可以从用户处获取列表

郗阳德
2023-03-14

这是我将采取的方法,这实际上与您尝试过的方法相同,但我只是稍微扩展了一下,试图使其更具可读性。我认为你得到的可能是“正确的”,但是作为一个衬里这样做的复杂性隐藏了一个小错误。

def test_list(hand):
    test1 = all(let[0] == hand[0][0] for let in hand[:3])
    test2 = all(let[0] == hand[0][0] for let in hand[:2])
    test3 = all(let[0] == hand[2][0] for let in hand[2:])
    test4 = all(let[0] == hand[3][0] for let in hand[3:])
    
    if (test1 and test3) or (test2 and test4):
        print("True")
    else:
        print("False")

hand1 = ['AS', 'AD', 'AC', 'CH', 'CS']
hand2 = ['AS', 'SD', 'SC', 'CH', 'CS']
hand3 = ['CS', 'CD', 'AC', 'AH', 'AS']
hand4 = ['AS', 'CD', 'DC', 'AH', 'CS']

test_list(hand1) #prints True
test_list(hand2) #prints False
test_list(hand3) #prints True
test_list(hand4) #prints True
盖锦程
2023-03-14

下面是一些应该适用于任意长度和顺序的东西:

hands = [['AS', 'AD', 'AC', 'CH', 'CS']]
hands.append(['AS', 'SD', 'SC', 'CH', 'CS'])
hands.append(['CS', 'CD', 'AC', 'AH', 'AS'])
hands.append(['AS', 'CD', 'DC', 'AH', 'CS'])

for hand in hands:

    condition = True

    last_count = 1
    last_item = hand.pop(0)[0]

    while hand:
        item = hand.pop(0)

        if (item[0] == last_item):
            last_count += 1 

        if (last_item != item[0]):
            if (last_count == 2) or (last_count == 3):
                condition = True
            else:
                condition = False
                break

        last_item = item[0]

    print(condition)

输出:

True
False
True
False
 类似资料:
  • 因此,我试图分析我的元组集,看看对于该集中的x,是否有两对分别由2个元素和3个元素组成的元素。 所以就像每个第一个字符一样,必须有3个相同的字符和2个相同的字符。。。 但它们必须是连接的,例如如果有3A和2C,则顺序只能是AAAAC或CCAAA,而不能是CACAA或ACCAA等 那么比如说,, 下面是我对代码的尝试 然而,我的代码只有在它是一个列表时才起作用。。。当我放入一组元组时,它不起作用。。

  • 编写一个方法,根据字符(char)[输入]是否是要编码的有效字符,返回true或false。即,如果输入[输入字符]为'a'-'z'或'a'-'z',则返回true,否则返回false。 为什么我的答案错了???? 公共静态布尔isValidChar_Q1(char chr){ }

  • 这三个函数的返回类型提示有什么不同吗? 他们都应该有< code>- 提问的动机是这个问题,这个很好的答案,以及我正在学习类型提示的事实。

  • 我做了一个quizz程序,我用一个.txt文件做了一个字典,里面有西班牙语和英语单词,并且让程序问英语中的西班牙语单词的等价物。 在我的.txt文件中的一些答案对一个英语单词有西班牙语2个答案。 示例“School:El colegio,la Escuela”现在我的程序识别了这个,并打印出“Enter 1 equality...word[1]”两次,但我希望输出为:(粗体是用户输入的) 当“Wo

  • 你好,我有一个查询,我想把结果变成对象列表,而不是实体。但结果实际上是一个对象,我应该把它转移到我的对象。有没有办法直接映射到我的自定义对象?

  • 问题内容: 如果我有一个看起来像这样的MySQL表: 是否可以运行MySQL查询以获取如下输出: 这个想法可能会有所不同,因此输出列的数量应反映出这一点,每列/ 每对对应一列,然后每列的匹配数。我不确定这是否称为数据透视表,但有人建议这样做吗? 问题答案: 这基本上 是 数据透视表。 可以在此处找到有关如何实现此目标的不错的教程:http : //www.artfulsoftware.com/in